Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 委托语法_Php - Fatal编程技术网

Php 委托语法

Php 委托语法,php,Php,Foo::bar()返回其对象,add()执行某些操作并将新类作为第二个参数。此类需要当前的Foo对象 有没有一种方法可以做到这一点而不必将其分成两个语句?Foo::bar()。其他一些语言允许您这样说 $var = Foo::bar('aaa', 'bbb') ->add('something', AnyClass::instance($var, 'something')); (括号中包含赋值部分)。不幸的是(至少从5.3开始),PHP的解析器在这方面相当差劲,当您尝试时会

Foo::bar()
返回其对象,
add()
执行某些操作并将新类作为第二个参数。此类需要当前的Foo对象


有没有一种方法可以做到这一点而不必将其分成两个语句?Foo::bar()。

其他一些语言允许您这样说

$var = Foo::bar('aaa', 'bbb')
      ->add('something', AnyClass::instance($var, 'something'));
(括号中包含赋值部分)。不幸的是(至少从5.3开始),PHP的解析器在这方面相当差劲,当您尝试时会发疯

因此,看起来您必须将其分解为两个语句,或者从
add
方法返回$this

除此之外,我能想到的最好的办法就是

(var = Foo::bar('aaa', 'bbb'))->add(...);

我认为任何人都不会认为更可读。不,没有。将对象存储在一个变量中并使用它(为什么不想在两个语句中使用它?)为什么要使它比需要的更复杂?我只是认为这种语法更可读。我认为大多数用户不同意“更可读”语句。我认为有一些神奇的方法可以做到这一点,但是如果没有的话,我会继续分享这个,谢谢
call_user_func(array($var = Foo::bar('aaa', 'bbb'), 'add'), 'something', ...);