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