Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterschied zwischen -> und ::in PHP MySQLi OOP

-> wird verwendet, wenn auf ein Element eines Objekts verwiesen wird.

:: ist der Bereichsauflösungsoperator und wird verwendet, um auf ein statisches Mitglied einer Klasse zu verweisen.

Betrachten Sie die folgende Klasse:

class FooBar {
    public static function fizz() {
        echo "Fizz";
    }

    public function buzz() {
        echo "Buzz";
    }
}

Sie würden die Funktion buzz() aufrufen mit -> :

$myFooBar = new FooBar();
$myFooBar->buzz();

Aber würde :: verwenden um die Funktion fizz() aufzurufen , da es sich um ein statisches Mitglied handelt (ein Mitglied, für das keine Instanz der Klasse aufgerufen werden muss):

FooBar::fizz();

Wo wir gerade über den Unterschied zwischen statisch sprechen Mitglieder im Vergleich zu instanziiert Mitglieder können $this nicht verwenden um auf die aktuelle Instanz innerhalb von statisch zu verweisen Mitglieder. Sie verwenden self stattdessen (kein führendes $ ), die sich auf die aktuelle Klasse bezieht, oder parent wenn Sie auf die übergeordnete Klasse verweisen möchten oder das Vergnügen haben, mit PHP 5.3.0 zu arbeiten, static (was eine späte statische Bindung ermöglicht).

Die Dokumentation verwendet :: auf eine Funktion innerhalb einer Klasse verweisen, da der Klassenname im Header keine Instanz der Klasse ist. Immer noch dasselbe Beispiel, ein Dokumentationseintrag, der sich auf die Funktion buzz() bezieht würde den folgenden Header verwenden:

FooBar::buzz

Aber wenn in der Dokumentation nicht angegeben ist, dass es sich um ein statisches Mitglied handelt, müssen Sie -> verwenden auf einer Instanz, um es aufzurufen:

$myFooBar = new FooBar();
$myFooBar->buzz();