我目前正在使用一个类来控制对我网站中某些文件的访问。这门课很好。然而,我最近被告知,我需要为网站的一个特定部分创建一个更细粒度的系统。我的第一个倾向是使用嵌套的if-else-if来设置几个变量。
$admin = new Admin();
if( $admin->user_access('can_view_g2')) {
$groupNum = $group2;
$adminGroup = true;
} else {
if( $admin->user_access('can_view_g3')) {
$groupNum = $group3;
$adminGroup = false;
} else {
if( $admin->user_access('can_view_g4')) {
$groupNum = $group4;
$adminGroup = true;
} else {
. . .
现在我想删除几行代码并创建一个更干净的流控制语句。我想使用一个开关语句来处理这个,但我不确定这是可能的,因为我正在访问一个类的方法和属性。
switch ($admin->user_access($permission)) {
case 'can_view_g2':
$groupNum = $group2;
$adminGroup = true;
break;
case 'can_view_g3':
$groupNum = $group3;
$adminGroup = true;;
break;
case 'can_view_g4':
$groupNum = $group4;
$adminGroup = true;
. . .
我上面的东西不起作用。有人知道这样做的方法吗,或者至少是更有效的流控制方法?
试试这个:
$user_access = $admin -> user_access($permission);
switch($user_acces) {
...
这是因为"cannot use return value ...."出错了…
如果你只是想把If/else块变成一个switch/case:
switch (true) {
case $admin->user_access('can_view_g2'):
$groupNum = $group2;
$adminGroup = true;
break;
...
}