Unterschied zwischen Doppelpunkt- und Pfeiloperatoren in PHP? [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
mko

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?

Benutzer-Avatar
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();

Mehr zum statischen Konzept

  • 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 nutzen self::methodName() oder TheClass::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.

Benutzer-Avatar
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.

1335470cookie-checkUnterschied zwischen Doppelpunkt- und Pfeiloperatoren in PHP? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy