【问题标题】:Using php flow control when accessing methods and classes访问方法和类时使用php流控制
【发布时间】:2011-09-20 21:30:53
【问题描述】:

我目前正在使用一个类来控制对我网站中某些文件的访问。课堂效果很好。然而,我最近被告知我需要为网站的一个特定部分创建一个更细粒度的系统。我的第一个倾向是使用嵌套的 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;

    . . .

我上面的内容不起作用。有谁知道这样做的方法或至少使用更有效的流量控制方法?

【问题讨论】:

    标签: php class methods control-flow


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

    • $user_access 计算结果为 truefalse
    • 啊,等等,我知道 Interstellar_Coder 的区别!那么我的“解决方案”就行不通了,我很抱歉!
    【解决方案2】:

    如果你只是想把 if/else 块变成一个 switch/case:

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

    【讨论】:

    • 我想这看起来更干净,但在效率方面,它与 if/else 语句相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2016-03-18
    • 2020-02-13
    • 2020-04-24
    • 2014-12-05
    • 2013-08-05
    相关资源
    最近更新 更多