-> se používá při odkazování na člena objektu.
:: je operátor rozlišení rozsahu
a používá se k označení statického člena třídy.
Zvažte následující třídu:
class FooBar {
public static function fizz() {
echo "Fizz";
}
public function buzz() {
echo "Buzz";
}
}
Volali byste funkci buzz() pomocí -> :
$myFooBar = new FooBar();
$myFooBar->buzz();
Ale použil by :: k volání funkce fizz() , protože je to statický člen (člen, který nevyžaduje volání instance třídy):
FooBar::fizz();
Také, když mluvíme o rozdílu mezi statickým členové versus instanci členové, nemůžete použít $this odkazovat na aktuální instanci v rámci statické členů. Používáte self
místo toho (bez úvodních $ ), která odkazuje na aktuální třídu, nebo parent
pokud chcete odkazovat na nadřazenou třídu nebo pokud máte to potěšení pracovat s PHP 5.3.0, statický
(což umožňuje pozdní statickou vazbu).
Dokumentace používá :: odkazovat na funkci uvnitř třídy, protože název třídy v záhlaví není instancí třídy. Stále používáme stejný příklad, záznam v dokumentaci odkazující na funkci buzz() by použilo následující záhlaví:
FooBar::buzz
Ale pokud dokumentace neuvádí, že se jedná o statický člen, budete muset použít -> na instanci jej nazvat:
$myFooBar = new FooBar();
$myFooBar->buzz();