顯示廣告
隱藏 ✕
看板 tails
作者 tails (QQ)
標題 [PHP] 意外發現
時間 2012年05月04日 Fri. PM 04:53:57


不知道是哪一版才開始變這樣?

class裡的method就算不宣告成static,仍然可以使用 :: 來呼叫
而且特別的是它的$this會隨著呼叫的位置和方法而有所不同
直接舉例比較快:

我目前的PHP版本為:5.3.6-13ubuntu3.6

class A{
	
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 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇