当我使用函数时,我使用标准的return语句。
我的意思是,我通常会返回true
或false
或变量。不过我目前正在学习一个教程,除了返回下面的函数之外,我很清楚。
我不知道如何阅读问号这两个点......
public function someFunction()
{
return null === $this->anAttribute ? null : $this->aFunction();
}
答案 0 :(得分:2)
如果null
为$this->anAttribute
,则返回null
,否则返回$this->aFunction()
?:
名为ternary operator
首先编写null
用于避免错误的分配拼写错误,例如if ($a = null)
。如果您习惯于编写函数和常量,则会导致错误if(null = $a)
===
可以在上面使用的文章中阅读并称为相同。 $a === $b
TRUE
如果$a
等于$b
,则它们属于同一类型。
答案 1 :(得分:1)
如果null
严格 $this->anAttribute
,它将返回null
,否则,它将调用$this->aFunction()
并返回此函数的结果(如果函数在结尾处返回)
答案 2 :(得分:1)
这是一个三元运营商。左边的东西是一个表达式(如if (...)
)。如果表达式的计算结果为true,则使用下一个值;如果表达式的计算结果为false,则使用最后一个值:
expression ? true : false;
在伪代码中你可以像这样写:
if expression is true:
use this
otherwise:
use this
如果你在它周围使用括号,通常更容易阅读三元代码(这是一个微妙的事情,但当你看到一个以括号开头的return语句时,你知道你应该停下来并正确地阅读它,而不是忽略它或者被困了一段时间然后意识到它是什么。)
return ((null === $this->anAttribute) ? null : $this->aFunction());