->код> се използва, когато се отнася до член на обект.
:: е Оператор за разделяне на обхвата
и се използва за обозначаване на статичен член на клас.
Помислете за следния клас:
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();