任何人都可以按照构造解释我。 我用谷歌搜索大约2个小时,但无法理解。
public function __construct($load_complex = true)
{
$load_complex and $this->complex = $this->getComplex();
}
答案 0 :(得分:2)
请参阅:http://www.php.net/manual/en/language.operators.logical.php
PHP使用智能表达式评估。如果任何AND的操作数计算为false,则没有理由评估其他操作数,因为结果将为false。
因此,如果$load_complex
为false,则无需评估$this->complex = $this->getComplex();
这是某种解决方法,但我不建议使用它,因为它会使您的代码难以阅读。
具体到您的示例$this->complex = $this->getComplex()
当且仅当$load_complex
设置为true时。
答案 1 :(得分:1)
<强> LIVE DEMO 强>
注意:如果 OPERAND 结果中的任何一个变为“ false ” 电路 AND 评估意味着,声明部分将是 OMITTED ,因为无需对其进行评估。
不要像下面这样的代码因为,你可能会得到逻辑 在放置Expression而不是赋值时出错 到LEFT HAND SIDE的变量...
$load_complex and $this->complex = $this->getComplex();
我已根据您的需要修改了下面的条件声明......
if($load_complex and $this->complex) {
$this->getComplex();
}