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

Foo::bar()返回它的对象,add()做一些事情并把一个新类作为第二个参数。这个类需要当前的 Foo 对象。

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

4

1 回答 1

1

其他一些语言让你说类似

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

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

所以看起来你必须把它分成两个语句,或者return $thisadd方法中。

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

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

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

于 2013-03-01T19:46:07.373 回答