In der Seitenleiste des PHP-Webhandbuchs Link Text Die addChild-Methode verwendet die ::
Bereichsauflösungsoperator, aber im Beispiel wird der Arrow-Operator verwendet. Kann mir jemand sagen warum das so ist?
Unterschied zwischen Doppelpunkt- und Pfeiloperatoren in PHP? [duplicate]
mko
Wildspitzen
::
ist für statische Elemente while ->
ist zum Beispiel Elemente.
Zum Beispiel:
class Example {
public static function hello(){
echo 'hello';
}
public function world(){
echo 'world';
}
}
// Static method, can be called from the class name
Example::hello();
// Instance method, can only be called from an instance of the class
$obj = new Example();
$obj->world();
-
Der Vollständigkeit halber sei noch darauf hingewiesen
static
Methoden können direkt von einer Instanz auf die gleiche Weise aufgerufen werden, wie Sie die Methode “Instanz” aufrufen würden:$obj->hello()
– prodigitalson
18. Oktober 2010 um 17:14 Uhr
-
@prodigitalson, aber beachten Sie, dass sie sich immer noch wie statisch verhalten, also kein $this-business xD
– Hannes
18. Oktober 2010 um 17:25 Uhr
-
@prodigitalson, ich denke, Sie haben vielleicht in Ihrem Kommentar darauf hingewiesen – aber nur um es ein wenig zu verdeutlichen. Ist es möglich, statische Mitglieder für eine Objektinstanz wie folgt aufzurufen:
$obj::hello()
? Meine IDE gibt mir einige Fehler für Variablen, auf die verwiesen wird als$this::$variableName
.– Kalenjordan
13. Juli 2012 um 22:45 Uhr
-
Sie können sie nicht mit einer Objektinstanz aufrufen – Sie rufen sie mit einem Klassennamen auf.. statt
$this::methodName()
Sie nutzenself::methodName()
oderTheClass::methodName()
. Ab 5.3 könnte man das auch$classname::methodName()
wo$classname
ist ein String-Klassenname.– prodigitalson
14. Juli 2012 um 1:54 Uhr
Der Pfeil bedeutet, dass addChild als Mitglied des Objekts aufgerufen wird (in diesem Fall $sxe).
Der doppelte Doppelpunkt bedeutet, dass addChild ein Mitglied der SimpleXMLElement-Klasse ist.
prodigitalson
Dies ist nur eine Notation dafür, dass es sich um die Methode eines Objekts handelt und nichts mit der tatsächlichen Verwendung zu tun hat.
Bei der Dokumentation handelt es sich nicht um eine Instanz eines Objekts wie $object
also die ->
Operator wäre nicht korrekt, da Sie den tatsächlichen Klassennamen auflisten möchten. Nach der Verwendung für eine statische Methode, bei der der Klassenname statisch ist, verwenden Sie den Bereich res. Operator ::
…
So funktioniert die PHP-Dokumentation im Allgemeinen für Klassen.