2011-09-23 254 views

回答

8
$name = $foo->getName(); 

這將調用一個構件或物體$foo的靜態功能,而

$name = $foo::getName(); 

將調用的類的$foo的靜態功能。如果你想稱之爲'利潤',使用::就可以訪問類的靜態成員,而不需要這樣的類的對象實例。也就是說,

$name = ClassOfFoo::getName(); 
+0

'::'可以訪問類的靜態成員?哇!所以有足夠的利潤! :D感謝哥們,K-ballo –

+0

如果'::'可以訪問'static'成員,那麼'static'的美妙之處是什麼?我認爲這只是PHP中的一種非結構化方式:( –

+0

)您似乎將'static'與其他東西混淆了,在所有語言中都有訪問類的靜態(公共)成員的方法 –

2
  • - >被稱爲訪問實例的方法(或實例化對象的一個​​變量)
  • ::用於訪問一個uninstanced對象的靜態函數
0

它們適用於不同的功能類型。 ->總是在靜態和非靜態方法的對象上使用(儘管我認爲對靜態方法使用->是不好的做法)。 ::僅用於靜態方法,可用於對象(來自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 
+0

'$ obj-> aStaticMethod(); // allowed'允許????老兄,我對' - >'感到困惑,你確定' - >'是允許的嗎? –

+0

嘗試運行腳本。它的工作原理,但它不是真正的最佳實踐。 –