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