Mysql
 sql >> Base de données >  >> RDS >> Mysql

Différence entre -> et ::en PHP MySQLi OOP

-> est utilisé pour faire référence à un membre d'un objet.

:: est l'opérateur de résolution de portée et est utilisé pour faire référence à un membre statique d'une classe.

Considérez la classe suivante :

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

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

Vous appelleriez la fonction buzz() en utilisant -> :

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

Mais utiliserait :: pour appeler la fonction fizz() , car il s'agit d'un membre statique (un membre qui ne nécessite pas l'appel d'une instance de la classe) :

FooBar::fizz();

Aussi, alors que nous parlons de la différence entre statique membres versus instancié membres, vous ne pouvez pas utiliser $this pour faire référence à l'instance actuelle dans statique membres. Vous utilisez self à la place (pas de $ en tête ) qui fait référence à la classe actuelle, ou parent si vous voulez faire référence à la classe parent, ou si vous avez le plaisir de travailler avec PHP 5.3.0, static (ce qui permet une liaison statique tardive).

La documentation utilise :: pour faire référence à une fonction à l'intérieur d'une classe car le nom de la classe dans l'en-tête n'est pas une instance de la classe. Toujours en utilisant le même exemple, une entrée de documentation faisant référence à la fonction buzz() utiliserait l'en-tête suivant :

FooBar::buzz

Mais à moins que la documentation ne spécifie qu'il s'agit d'un membre statique, vous devrez utiliser -> sur une instance pour l'appeler :

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