2009-11-26 82 views
3

這件事一直困擾着我很久,我找不到它! >PHP中的 - >和::有什麼區別?

讓我舉一個例子 -

使用類時,在PHP之間::有什麼區別。

想象一下,一個名爲MyClass類,並在這個類有一個函數myFunction的

是什麼兩者的區別:

MyClass myclass = new MyClass 
myclass::myFunction(); 

MyClass myclass = new MyClass 
myclass->myFunction(); 

謝謝

回答

2

如說: 「::」 是靜態的方法調用,而 「 - >」 爲實例方法調用

除了使用parent ::訪問基類中的函數時,其中「parent ::」可用於靜態和非靜態父級方法

abstract class myParentClass 
{ 
    public function foo() 
    { 
     echo "parent class"; 
    } 
} 

class myChildClass extends myParentClass 
{ 
    public function bar() 
    { 
     echo "child class"; 
     parent::foo(); 
    } 
} 

$obj = new myChildClass(); 
$obj->bar(); 
11
MyClass::myFunction(); // static method call 

$myclass->myFunction(); // instance method call 
+0

那麼,'myclass :: myFunction();'編譯,如果是的話,這是什麼意思? – Oskar 2009-11-26 15:30:08

+0

我只是試過它和$ myclass :: myFunction()不解析在PHP中 - 這是很好的,因爲根據定義,靜態方法不應該被允許從一個實例執行。 – 2009-11-26 15:59:53

+0

這是有道理的,但你永遠不知道用PHP ... :) – Oskar 2009-11-26 16:47:14

3

「::」用於調用該類的靜態方法。所以,你可以使用:

MyClass::myStaticFunction() 

但不是:

MyClass->myStaticFunction() 
0
class MyClass { 
    static function myStaticFunction(...){ 
    ... 
    } 

} 

//$myObject=new MyClass(); it isn't necessary. It's true?? 

MyClass::myStaticFunction();