看板 tails
作者 標題 [PHP] 意外發現
時間 2012年05月04日 Fri. PM 04:53:57
不知道是哪一版才開始變這樣?
class裡的method就算不宣告成static,仍然可以使用 :: 來呼叫
而且特別的是它的$this會隨著呼叫的位置和方法而有所不同
直接舉例比較快:
我目前的PHP版本為:5.3.6-13ubuntu3.6
class A{
}
class B{
}
$b = new B();
$b->testB();
$a = new A();
$a->testA();
A::testA();
public function testA (){
echo get_class($this) . '<br/>';
}
}
class B{
public function testB (){
$a = new A();
$a->testA();
A::testA();
}
}
$b = new B();
$b->testB();
$a = new A();
$a->testA();
A::testA();
這樣會印出
A
B
A
Notice: Undefined variable: this
但如果testA宣告成static的話
就會變成:
Notice: Undefined variable: this
Notice: Undefined variable: this
Notice: Undefined variable: this
Notice: Undefined variable: this
嗯
目前還不知道該如何應用....
--
※ 作者: tails 時間: 2012-05-04 16:53:57
※ 編輯: tails 時間: 2012-05-04 18:06:29
※ 看板: tails 文章推薦值: 0 目前人氣: 0 累積人氣: 199
回列表(←)
分享