我正在运行PHP 5.5.9并且我收到解析错误,但我还没有解决如何解决的问题。这是我尝试采用的技术的一个非常受欢迎的例子: -
<?php
class NumberDisplayer {
var $numbers = [];
function __invoke($n) {
array_push($this->numbers, $n);
return $this;
}
function display() {
foreach ($this->numbers as $number) {
echo "$number, ";
}
}
}
((new NumberDisplayer())
(5)
(10)
(14)
(20)
(11)
->display());
?>
产生: -
Parse error: syntax error, unexpected '(' in <documents>/index.php on line 18
这样一个毫无意义的例子显然可以通过更好的方法解决,但我的问题是如何使这种技术适用于适合的情况。
我的推理如下:new NumberEchoer()
评估NumberEchoer
的实例,由于__invoke
,该实例本身可以调用。因此,我应该能够调用表达式,该表达式本身返回$ this,这也是可调用的,依此类推。在表达式的最后,我调用了显示的display
方法。
我还尝试将整个表达式打包到一行,但删除换行符并没有解决任何问题。
我似乎能够将NumberDisplayer
存储到变量中并在每一行上手动调用变量,但它使代码的可读性大大降低。
如何以可读的方式完成这种链接魔术方法的习惯用法?
答案 0 :(得分:-1)
1 ..删除var,因为php变量使用$,例如$ numbers =“”;
2 ..只使用一个下划线作为调用名称,如__invoke。
3 ..编辑echo“$ number,”;回应$数字;作为循环数组中的空数组