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