這篇文章主要介紹了PHP使用靜態方法的幾個注意事項,以實例的形式講述了PHP靜態方法調用的技巧和易錯點分析,需要的朋友可以參考下
本文實例介紹了PHP使用靜態方法的幾個常見注意事項。分享給大家供大家參考。具體方法如下:
1. 即使類別中的方法並未用static聲明,但其未使用到可改變的類別成員變量,在外部仍可用運算子::來呼叫;
2. 以靜態方式(用::運算子)呼叫的方法中$this的取值是由呼叫時的上下文決定的!而不是定義他的類別!!
例如以下的程式碼:
<?php class TestClass1 { public $normal_v = 'normal_v from TestClass1'; public static $STATIC_V = 'STATIC_V from TestClass1'; public function test_func1() { echo $this->normal_v.'<br />'.self::$STATIC_V; } } class TestClass2 { public $normal_v = 'normal_v from TestClass2'; public static $STATIC_V = 'STATIC_V from TestClass2'; public function test_func2() { TestClass1::test_func1(); } } $t2 = new TestClass2(); $t2->test_func2();
這段程式碼是輸出會是什麼呢,我以為會是normal_v from TestClass1 df250b2156c434f3390392d09b1c9563 STATIC_V from TestClass1,測試發現其實我錯了,正確的輸出是:
normal_v from TestClass2
STATIC_V from TestClass1
說明:test_func1()雖然是在TestClass1中定義的,但卻是在TestClass2中呼叫的,其內部的$this變數則是由TestClass2決定的!
其實這兩個類別的關係應該屬於"雙向關聯".
有興趣的朋友可以測試運行本文實例,相信會有新的收穫!
以上是php 使用靜態方法的幾個注意事項說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!