-> bruges, når der henvises til et medlem af et objekt.
::
er Scope Resolution Operator
og bruges til at henvise til et statisk medlem af en klasse.
Overvej følgende klasse:
class FooBar {
public static function fizz() {
echo "Fizz";
}
public function buzz() {
echo "Buzz";
}
}
Du ville kalde funktionen buzz()
ved hjælp af ->
:
$myFooBar = new FooBar();
$myFooBar->buzz();
Men ville bruge ::
at kalde funktionen fizz()
, da det er et statisk medlem (et medlem, som ikke kræver en forekomst af klassen for at blive kaldt):
FooBar::fizz();
Også mens vi taler om forskellen mellem statisk medlemmer versus instantierede medlemmer, kan du ikke bruge $this
at henvise til den aktuelle instans i statisk medlemmer. Du bruger selv
i stedet (ingen indledende $
) som refererer til den aktuelle klasse eller forælder
hvis du vil henvise til forældreklassen, eller hvis du har fornøjelsen af at arbejde med PHP 5.3.0, statisk
(hvilket giver mulighed for sen statisk binding).
Dokumentationen bruger ::
at henvise til en funktion inde i en klasse, da klassenavnet i headeren ikke er en forekomst af klassen. Bruger stadig det samme eksempel, en dokumentationspost, der henviser til funktionen buzz()
ville bruge følgende overskrift:
FooBar::buzz
Men medmindre dokumentationen angiver, at det er et statisk medlem, skal du bruge ->
på en instans for at kalde det:
$myFooBar = new FooBar();
$myFooBar->buzz();