靜態屬性是可以在非靜態方法中呼叫的
God_Like
God_Like 2019-04-14 19:20:19
0
3
2210

本課3分30說了,靜態屬性不可以在非靜態方法中調用的,

但是親測,本類中的非靜態方法是可以調用靜態屬性的

使用【靜態屬性的self::屬性名】就可以

God_Like
God_Like

全部回覆(2)
God_Like

首先非常感謝老師的回覆

一、您給的範例程式碼裡面  類別沒有定義test() 這個方法所以實例化會執行錯誤

echo (new Demo )->test();    // "Error" 

二、我一直在用的是php7.2的版本練習東西

#您給的程式碼我把(new Demo)->test() 修改成(new Demo)->test2()運行

兩個輸出結果都是peter

是不是證明

#類別的【普通方法】 既可以呼叫【類別的靜態屬性】又可以呼叫類別的【靜態方法】

Peter-Zhu

首先, 感謝你的認真學習態度, 你說得對, 這個地方, 教程中有不嚴謹的地方...

實際上, 普通方法中,直接調用靜態屬性,並不會報錯, 但是絕對不能調用靜態方法, 

在普通方法中, 官方也是不推薦使用靜態成員的, 這裡允許使用靜態屬性, 是一個歷史遺留的bug, 或許在以後的版本中會修正...

以下是測試程式碼,供您參考:

class Demo
{
    // 静态属性
    public static $name = 'peter';
    
    // 静态方法
    public static function hello()
    {
       return self::$name;
    }
    
    //  普通方法1
    public function test1()
    {
        return self::$name;
    }
    
    //  普通方法1
    public function test2()
    {
        return self::hello();
    }
}

echo (new Demo)->test1();    // "peter"
echo '<hr>';
echo (new Demo)->test();    // "Error"


#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板