无法在php语句中找出运算符

时间:2010-08-12 12:26:17

标签: php operators

我需要编辑一个函数,但我无法弄清楚是什么?和返回声明中的:false mean。我认为:是OR还是?我不知道。

public function hasPermission($name) { return $this->getVjGuardADUser() ? $this->getVjGuardADUser()->hasPermission($name) : false; }

任何可以为我解决此问题的人?

6 个答案:

答案 0 :(得分:8)

这是PHP的Ternary Operator。这就像是if / else表达式的简写。

您的扩展代码可能如此:

public function hasPermission($name)
{ 
    if ($this->getVjGuardADUser()) {
        return $this->getVjGuardADUser()->hasPermission($name)
    } else {
        return false;
    }
}

来自php.net的一些示例代码:

// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// The above is identical to this if/else statement
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

答案 1 :(得分:5)

这是ternary operator,如果构造的话就是一个简单的oneliner。

答案 2 :(得分:2)

这是三元运营商。它记录在案here

这是一个简短形式:

public function hasPermission($name) {
    if ($this->getVjGuardADUser()) {
        return $this->getVjGuardADUser()->hasPermission($name)
    } else {}
        return false;
    }
}

我建议使用更详细的条件语句样式以提高可读性。

答案 3 :(得分:1)

它被称为ternary operator

variable = predicate ? /* predicate is true */ : /* predicate is false */;

在您的代码中,它是以下内容的简写形式:

if($this->getVjGuardADUser())
    return $this->getVjGuardADUser()->hasPermission($name);
else
    return false;

答案 4 :(得分:0)

这是一个ternaire表达。

您可以将其替换为:

if ($this->getVjGuardADUser())
 return $this->getVjGuardADUser()->hasPermission($name);
return false;

答案 5 :(得分:0)