84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
本課3分30說了,靜態屬性不可以在非靜態方法中調用的,
但是親測,本類中的非靜態方法是可以調用靜態屬性的
使用【靜態屬性的self::屬性名】就可以
首先非常感謝老師的回覆
一、您給的範例程式碼裡面 類別沒有定義test() 這個方法所以實例化會執行錯誤
echo (new Demo )->test(); // "Error"
二、我一直在用的是php7.2的版本練習東西
#您給的程式碼我把(new Demo)->test() 修改成(new Demo)->test2()運行
兩個輸出結果都是peter
是不是證明
#類別的【普通方法】 既可以呼叫【類別的靜態屬性】又可以呼叫類別的【靜態方法】
首先, 感謝你的認真學習態度, 你說得對, 這個地方, 教程中有不嚴謹的地方...
實際上, 普通方法中,直接調用靜態屬性,並不會報錯, 但是絕對不能調用靜態方法,
在普通方法中, 官方也是不推薦使用靜態成員的, 這裡允許使用靜態屬性, 是一個歷史遺留的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"
首先非常感謝老師的回覆
一、您給的範例程式碼裡面 類別沒有定義test() 這個方法所以實例化會執行錯誤
echo (new Demo )->test(); // "Error"
二、我一直在用的是php7.2的版本練習東西
#您給的程式碼我把(new Demo)->test() 修改成(new Demo)->test2()運行
兩個輸出結果都是peter
是不是證明
#類別的【普通方法】 既可以呼叫【類別的靜態屬性】又可以呼叫類別的【靜態方法】
首先, 感謝你的認真學習態度, 你說得對, 這個地方, 教程中有不嚴謹的地方...
實際上, 普通方法中,直接調用靜態屬性,並不會報錯, 但是絕對不能調用靜態方法,
在普通方法中, 官方也是不推薦使用靜態成員的, 這裡允許使用靜態屬性, 是一個歷史遺留的bug, 或許在以後的版本中會修正...
以下是測試程式碼,供您參考:
#