考虑以下内容(简化为裸骨):
abstract class Validator {
public function __construct($data = null)
{
$this->data = $data ?: Input::all();
}
}
$validation = new PageValidator($data);
Run Code Online (Sandbox Code Playgroud)
'input :: all'返回一个数组.$ data也是一个数组.
我正在努力的一点是:
$this->data = $data ?: Input::all();
Run Code Online (Sandbox Code Playgroud)
我认为它基本上是这样做的:
if(!$data) {
$this->data = Input::all();
} else {
$this->data = $data;
};
Run Code Online (Sandbox Code Playgroud)
但我真的不明白怎么样?
您对三元运算符的理解是正确的.
您显示的省略运算符中间部分的确切语法是PHP 5.3中添加的一项功能:
从PHP 5.3开始,可以省略三元运算符的中间部分.表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3.
完整的表达,没有遗漏,是:
$this->data = $data ? $data : Input::all();
Run Code Online (Sandbox Code Playgroud)
这转化为您所假设的:
if($data) {
$this->data = $data;
} else {
$this->data = Input::all();
}
Run Code Online (Sandbox Code Playgroud)
尝试这个形式:
$this->data = $data ? $data : Input::all();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |