Rufen Sie die Memberfunktion einer Basisklasse explizit statisch auf

8

Ich habe eine Basisklasse mit den magischen Methoden __call und _callStatic definiert, so dass Aufrufe an nicht deklarierte Member-Funktionen behandelt werden.

Wenn Sie beide haben, die dynamische und die statische, scheint es nicht möglich zu sein, die statische aus einer abgeleiteten Klasse aufzurufen, da der statische Operator :: implizit nicht static bedeutet, wenn er mit parent verwendet wird. oder, wie in diesem Fall, der Name der Basisklasse. Dies ist eine spezielle Syntax, die hier erklärt wird: Ссылка

Was ich hier machen möchte, ist die abgeleitete Klasse, um __callStatic aufzurufen, die fehlschlägt, weil der Aufruf standardmäßig ein dynamischer Aufruf ist und von __call gehandhabt wird.

Wie kann ich einen expliziten statischen Aufruf für die Mitgliedsfunktion einer Basisklasse machen?

%Vor%

Beachten Sie, dass das Entfernen der dynamischen __call -Methode dazu führt, dass das Skript 'statischen Aufruf' ausgibt, weil __callStatic aufgerufen wird, wenn __call nicht deklariert ist.

    
Andre 22.06.2012, 11:45
quelle

1 Antwort

3

Um dieses Verhalten zu vermeiden, können Sie eine leere Proxy-Klasse verwenden, die während der Laufzeit parent und MyBaseClass nicht verbindet:

%Vor%

Ссылка

    
НЛО 22.06.2012, 12:52
quelle

Tags und Links