-> jest używane w odniesieniu do członka obiektu.
::
jest Operatorem rozstrzygania zakresu
i jest używany w odniesieniu do statycznego członka klasy.
Rozważ następującą klasę:
class FooBar {
public static function fizz() {
echo "Fizz";
}
public function buzz() {
echo "Buzz";
}
}
Możesz wywołać funkcję buzz()
używając -> :
$myFooBar = new FooBar();
$myFooBar->buzz();
Ale użyłbym ::
wywołać funkcję fizz()
, ponieważ jest to element statyczny (element, który nie wymaga wywołania instancji klasy):
FooBar::fizz();
Ponadto, gdy mówimy o różnicy między statycznymi członkowie a instancja członków, nie możesz używać $this
aby odwoływać się do bieżącego wystąpienia w statycznym członków. Używasz self
zamiast tego (bez wiodącego $
), który odnosi się do bieżącej klasy lub nadrzędny
jeśli chcesz odwołać się do klasy nadrzędnej lub jeśli masz przyjemność pracować z PHP 5.3.0, statyczny
(co pozwala na późne wiązanie statyczne).
Dokumentacja używa ::
odwoływanie się do funkcji wewnątrz klasy, ponieważ nazwa klasy w nagłówku nie jest instancją klasy. Nadal używam tego samego przykładu, wpis dokumentacji odwołujący się do funkcji buzz()
użyje następującego nagłówka:
FooBar::buzz
Ale jeśli dokumentacja nie określa, że jest to element statyczny, będziesz musiał użyć ->
na instancji, aby to nazwać:
$myFooBar = new FooBar();
$myFooBar->buzz();