PHP使用靜態(tài)方法的幾個注意事項

字號:


    本文實例介紹了PHP使用靜態(tài)方法的幾個常見注意事項。分享給大家供大家參考。具體方法如下:
    1. 即使類中的方法并未用static聲明,但其未使用到可改變的類成員變量,在外部仍可用操作符::來調(diào)用;
    2. 以靜態(tài)方式(用::操作符)調(diào)用的方法中$this的取值是由調(diào)用時的上下文決定的!而不是定義他的類!!
    例如以下的代碼:
    <?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 <br /> STATIC_V from TestClass1,測試發(fā)現(xiàn)其實我錯了,正確的輸出是:
    normal_v from TestClass2
    STATIC_V from TestClass1
    說明:test_func1()雖然是在TestClass1中定義的,但卻是在TestClass2中調(diào)用的,其內(nèi)部的$this變量則是由TestClass2決定的!
    其實這兩個類的關系應該屬于"雙向關聯(lián)".
    感興趣的朋友可以測試運行本文實例,相信會有新的收獲!