->
wordt gebruikt bij het verwijzen naar een lid van een object.
::
is de Scope Resolution Operator
en wordt gebruikt om te verwijzen naar een statisch lid van een klas.
Beschouw de volgende klasse:
class FooBar {
public static function fizz() {
echo "Fizz";
}
public function buzz() {
echo "Buzz";
}
}
Je zou de functie buzz()
. aanroepen met behulp van ->
:
$myFooBar = new FooBar();
$myFooBar->buzz();
Maar zou ::
. gebruiken om de functie fizz()
. aan te roepen , omdat het een statisch lid is (een lid waarvoor geen instantie van de klasse hoeft te worden aangeroepen):
FooBar::fizz();
En terwijl we het hebben over het verschil tussen statische leden versus geïnstantieerde leden, u kunt $this
cannot niet gebruiken om te verwijzen naar de huidige instantie binnen static leden. Je gebruikt self
in plaats daarvan (geen leidende $
) die verwijst naar de huidige klasse, of parent
als je naar de bovenliggende klasse wilt verwijzen, of als je het genoegen hebt om met PHP 5.3.0 te werken, static
(wat late statische binding mogelijk maakt).
De documentatie gebruikt ::
om naar een functie binnen een klasse te verwijzen, aangezien de klassenaam in de koptekst geen instantie van de klasse is. Nog steeds hetzelfde voorbeeld gebruikend, een documentatie-item dat verwijst naar de functie buzz()
zou de volgende header gebruiken:
FooBar::buzz
Maar tenzij de documentatie aangeeft dat het een statisch lid is, moet u ->
. gebruiken op een instantie om het te noemen:
$myFooBar = new FooBar();
$myFooBar->buzz();