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', ...);