PHP 5.4.5, tutaj. Próbuję wywołać obiekt, który jest przechowywany jako członek innego obiektu. W ten sposób (bardzo z grubsza) można uzyskać błąd środowiska wykonawczego, ponieważ nie ma metody zwanej a. Ale jeśli piszę takie połączenie:Jak wywołać metodę __invoke dla zmiennej składowej wewnątrz klasy
($this->a)();
następnie pojawia się błąd składni.
Oczywiście, mogę napisać
$this->a->__invoke();
ale wydaje nieznośnie brzydki i raczej osłabia punkt funktorów. Właśnie zastanawiałem się, czy istnieje lepszy (lub oficjalny) sposób.
Dzięki Igor. Spośród tych trzech, przypisanie do zmiennej wydaje się najbardziej jasne, ale żadne z nich nie jest bardzo miłe. Czy ktoś rozumie, dlaczego "oczywista" składnia $ this-> a() nie może znaleźć metody __invoke członka - dlaczego dostęp do elementu jest zasadniczo różny od składni nagich zmiennych? –
Ponieważ jest niejednoznaczna. '$ this-> a()' może być metodą 'a' lub członkiem' $ a'. W PHP te dwa są dość mocno rozdzielone (w przeciwieństwie do JS na przykład). – igorw
Ah. To ma sens. Dzięki. –