Member-Funktion von einer anderen Member-Funktion in PHP aufrufen?

8

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.

    
John Humphreys - w00te 02.10.2011, 20:12
quelle

2 Antworten

6
  

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

führen würde

Denken Sie daran: PHP ist nicht Java;)

    
KingCrunch 02.10.2011, 20:18
quelle
7

$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.

    
Marc B 02.10.2011 20:19
quelle

Tags und Links