So rufen Sie die __invoke-Methode einer Membervariablen in einer Klasse auf

8

PHP 5.4.5, hier. Ich versuche, ein Objekt aufzurufen, das als Mitglied eines anderen Objekts gespeichert ist. So (sehr grob)

%Vor%

Das erzeugt natürlich einen Laufzeitfehler, weil es keine Methode namens a gibt. Aber wenn ich den Anruf so schreibe:

%Vor%

dann bekomme ich einen Syntaxfehler.

Natürlich kann ich schreiben

%Vor%

aber das scheint unerträglich hässlich und untergräbt eher den Sinn von Funktoren. Ich habe mich nur gefragt, ob es einen besseren (oder offiziellen) Weg gibt.

    
Jules May 26.09.2012, 13:52
quelle

3 Antworten

8

Es gibt drei Möglichkeiten:

Rufen Sie direkt __invoke auf, was Sie bereits erwähnt haben:

%Vor%

Durch Zuweisung zu einer Variablen:

%Vor%

Mit call_user_func :

%Vor%

Der letzte ist wahrscheinlich, was Sie suchen. Es hat den Vorteil, dass es mit jedem abrufbar funktioniert.

    
igorw 26.09.2012, 14:02
quelle
3

Ich weiß, dass dies eine späte Antwort ist, aber verwende eine Kombination von __call () im Elternteil und __invoke () in der Unterklasse:

%Vor%

Dann sollten Sie in der Lage sein, den gesuchten syntaktischen Zucker zu erhalten:

%Vor%     
Kris Oye 20.10.2014 05:34
quelle
2

FYI in PHP 7+ Klammer um einen Rückruf innerhalb eines Objekts funktioniert jetzt:

%Vor%

Ergebnis:

%Vor%     
drmad 14.08.2016 04:55
quelle

Tags und Links