這件事一直困擾着我很久,我找不到它! >PHP中的 - >和::有什麼區別?
讓我舉一個例子 -
使用類時,在PHP之間::有什麼區別。
想象一下,一個名爲MyClass類,並在這個類有一個函數myFunction的
是什麼兩者的區別:
MyClass myclass = new MyClass
myclass::myFunction();
或
MyClass myclass = new MyClass
myclass->myFunction();
謝謝
這件事一直困擾着我很久,我找不到它! >PHP中的 - >和::有什麼區別?
讓我舉一個例子 -
使用類時,在PHP之間::有什麼區別。
想象一下,一個名爲MyClass類,並在這個類有一個函數myFunction的
是什麼兩者的區別:
MyClass myclass = new MyClass
myclass::myFunction();
或
MyClass myclass = new MyClass
myclass->myFunction();
謝謝
如說: 「::」 是靜態的方法調用,而 「 - >」 爲實例方法調用
除了使用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();
MyClass::myFunction(); // static method call
$myclass->myFunction(); // instance method call
「::」用於調用該類的靜態方法。所以,你可以使用:
MyClass::myStaticFunction()
但不是:
MyClass->myStaticFunction()
class MyClass {
static function myStaticFunction(...){
...
}
}
//$myObject=new MyClass(); it isn't necessary. It's true??
MyClass::myStaticFunction();
那麼,'myclass :: myFunction();'編譯,如果是的話,這是什麼意思? – Oskar 2009-11-26 15:30:08
我只是試過它和$ myclass :: myFunction()不解析在PHP中 - 這是很好的,因爲根據定義,靜態方法不應該被允許從一個實例執行。 – 2009-11-26 15:59:53
這是有道理的,但你永遠不知道用PHP ... :) – Oskar 2009-11-26 16:47:14