可能重複:
In PHP, whats the difference between :: and ->?PHP:差異之間 - >和::
在PHP中,同時調用一個函數的帶箭頭的一類內的主要區別()是什麼->
和示波器分辨率運算器::
?
更多間隙,之間的區別:
$name = $foo->getName();
$name = $foo::getName();
範圍解析操作符::
的主要利潤是多少?
可能重複:
In PHP, whats the difference between :: and ->?PHP:差異之間 - >和::
在PHP中,同時調用一個函數的帶箭頭的一類內的主要區別()是什麼->
和示波器分辨率運算器::
?
更多間隙,之間的區別:
$name = $foo->getName();
$name = $foo::getName();
範圍解析操作符::
的主要利潤是多少?
$name = $foo->getName();
這將調用一個構件或物體$foo
的靜態功能,而
$name = $foo::getName();
將調用的類的$foo
的靜態功能。如果你想稱之爲'利潤',使用::
就可以訪問類的靜態成員,而不需要這樣的類的對象實例。也就是說,
$name = ClassOfFoo::getName();
它們適用於不同的功能類型。 ->
總是在靜態和非靜態方法的對象上使用(儘管我認爲對靜態方法使用->
是不好的做法)。 ::
僅用於靜態方法,可用於對象(來自PHP 5.3)以及更重要的類。
<?php
class aClass {
static function aStaticMethod() {}
function aNormalMethod() {}
}
$obj = new aClass();
$obj->aNormalMethod(); //allowed
$obj->aStaticMethod(); //allowed
$obj::aStaticMethod(); //allowed as of PHP 5.3
$class_name = get_class($obj);
$class_name::aStaticMethod(); //long hand for $obj::aStaticMethod()
aClass::aStaticMethod(); //allowed
//aClass::aNormalMethod(); //not allowed
//aClass->aStaticMethod(); //not allowed
//aClass->aNormalMethod(); //not allowed
'$ obj-> aStaticMethod(); // allowed'允許????老兄,我對' - >'感到困惑,你確定' - >'是允許的嗎? –
嘗試運行腳本。它的工作原理,但它不是真正的最佳實踐。 –
'::'可以訪問類的靜態成員?哇!所以有足夠的利潤! :D感謝哥們,K-ballo –
如果'::'可以訪問'static'成員,那麼'static'的美妙之處是什麼?我認爲這只是PHP中的一種非結構化方式:( –
)您似乎將'static'與其他東西混淆了,在所有語言中都有訪問類的靜態(公共)成員的方法 –