访问方法和类时使用php流控制

时间:2011-09-20 21:30:54

标签: php class methods flow-control

我目前正在使用一个类来控制对我网站中某些文件的访问。这个班很好。但是,我最近被告知我需要为网站的某个特定部分创建一个更细粒度的系统。我的第一个倾向是使用嵌套的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语句来处理这个问题,但我不确定它是否可行,因为我正在访问类的方法和属性。

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;

    . . .

我上面的内容不起作用。有没有人知道如何使用这种方法或至少使用更有效的流量控制方法?

2 个答案:

答案 0 :(得分:1)

试试这个:

$user_access = $admin -> user_access($permission);
switch($user_acces) {
...

这是因为“不能使用返回值....”的错误..

答案 1 :(得分:0)

如果您只是想将if / else的块转换为开关/ case:

switch (true) {
    case $admin->user_access('can_view_g2'):
        $groupNum = $group2;
        $adminGroup = true;
    break;

    ...
}