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

Foo::bar()는 그 객체를 반환 add()은 무언가를하고 두 번째 인수 새로운 클래스로합니다. 이 클래스에는 현재 Foo 객체가 필요합니다.위임 구문

Foo :: bar() 두 문으로 분리하지 않고이를 수행 할 수있는 방법이 있습니까?

+0

아니요, 없습니다. 변수에 객체를 저장하고 사용하십시오 (두 문장에서 왜 객체를 사용하지 않으시겠습니까?) – knittl

+0

왜 복잡해야합니까? – deceze

+0

이 구문이 좀 더 읽기 쉽다고 생각합니다. – user2124857

답변

1

일부 다른 언어는 무엇인가

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

같은 (괄호 안의 할당 부분) 가정 해 봅시다. 불행하게도 (적어도 5.3 이상), PHP의 파서는 그 점에서 다소 진절머리 나게하며, 시도 할 때 괴물이됩니다.

그래서 두 문으로 나눠야하거나 add 메서드에서 return $this으로 처리해야합니다. 그 짧은

, 난 내 머리 위로 떨어져 가지고 올 수있는 최선 내가 사람이 더 읽기 고려할 것이라고 생각하지 않는다

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

입니다. : P