->код> се използва, когато се отнася до член на обект.
::
е Оператор за разделяне на обхвата
и се използва за обозначаване на статичен член на клас.
Помислете за следния клас:
class FooBar {
public static function fizz() {
echo "Fizz";
}
public function buzz() {
echo "Buzz";
}
}
Бихте извикали функцията buzz()
като използвате ->
:
$myFooBar = new FooBar();
$myFooBar->buzz();
Но ще използва ::
за да извикате функцията fizz()
, тъй като е статичен член (член, който не изисква да бъде извикан екземпляр на класа):
FooBar::fizz();
Освен това, докато говорим за разликата между статичени членове срещу създаден членове, не можете да използвате $this
за препратка към текущия екземпляр в статичен членове. Използвате self
вместо това (без водещ $
), който се отнася до текущия клас, или родителкод>
ако искате да се обърнете към родителския клас или ако имате удоволствието да работите с PHP 5.3.0, static
(което позволява късно статично свързване).
Документацията използва ::
да се позовава на функция вътре в клас, тъй като името на класа в заглавката не е екземпляр на класа. Все още използвайки същия пример, запис в документация, отнасящ се до функцията buzz()
ще използва следната заглавка:
FooBar::buzz
Но освен ако документацията не посочва, че е статичен член, ще трябва да използвате ->
на екземпляр, за да го извикате:
$myFooBar = new FooBar();
$myFooBar->buzz();