Ich bin etwas verwirrt über die Situation in diesem Code ...
%Vor% Warum muss ich entweder $this->push_back(new SomeClass($file, $dtype))
oder self::push_back(new SomeClass($file, $dtype))
verwenden, um die Mitgliedsfunktion push_back
aufzurufen? Ich kann anscheinend nicht darauf zugreifen, indem ich push_back(new SomeClass($file, $dtype))
so mache, wie ich es erwartet hätte. Ich lese Wann benutze ich selbst über $ das? , aber es hat nicht geantwortet, warum ich eins brauche von ihnen überhaupt (oder wenn ich überhaupt mache, vielleicht habe ich etwas anderes vermasselt).
Warum ist diese Spezifikation erforderlich, wenn die Member sowohl nicht statisch als auch in derselben Klasse sind? Sollten nicht alle Member-Funktionen von anderen Member-Funktionen derselben Klasse sichtbar und bekannt sein?
PS: Es funktioniert gut mit $this->
und self::
, sagt aber die Funktionen unbekannt, wenn keine auf dem push_back
Aufruf vorhanden ist.
Ich kann nicht darauf zugreifen, indem ich
push_back(new SomeClass($file, $dtype))
so mache, wie ich es erwartet hätte.
Auf diese Weise rufen Sie push_back()
als Funktion auf. Es gibt keinen Weg um $this
(für Objektmethoden) oder self::
/ static::
(für Klassenmethoden), weil dies zu Mehrdeutigkeiten
Denken Sie daran: PHP ist nicht Java;)
$this->push_back
ruft die Methode als Teil des CURRENT-Objekts auf.
self::push_back
ruft die Methode als statisch auf, was bedeutet, dass Sie $this
nicht innerhalb von push_back verwenden können.
push_back()
wird versuchen, eine Push-Back-Funktion vom globalen Bereich aufzurufen, nicht die push_back in Ihrem Objekt. Es ist kein "Objektruf", es ist nur ein einfacher jane-Funktionsaufruf, genauso wie der Aufruf von printf
oder is_readable()
innerhalb eines Objekts die üblichen PHP-Kernfunktionen aufruft.