委托语法

时间:2013-03-01 19:21:46

标签: php

$var = Foo::bar('aaa', 'bbb')
      ->add('something', AnyClass::instance($var, 'something'));

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

有没有办法在不将它分成两个语句的情况下执行此操作?Foo :: bar()。

1 个答案:

答案 0 :(得分:1)

其他一些语言可以让您说出像

这样的内容
(var = Foo::bar('aaa', 'bbb'))->add(...);

(括号中的赋值部分)。不幸的是(至少从5.3开始),PHP的解析器在这方面相当糟糕,并且当你尝试时会变得怪异。

因此看起来您必须将其分解为两个语句,或return $this方法中的add

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

call_user_func(array($var = Foo::bar('aaa', 'bbb'), 'add'), 'something', ...);

我认为没有人会认为更具可读性。 :P