扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
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"
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
首先非常感谢老师的回复
一、您给的示例代码里面 类没有定义 test() 这个方法 所以实例化会运行错误
echo (new Demo)->test(); // "Error"
二、我一直在用的是php7.2的版本练习东西
您给的代码中我把(new Demo)->test() 修改成(new Demo)->test2()运行
两个输出结果都是peter
是不是证明
类的【普通方法】 既可以调用【类的静态属性】又可以调用类的【静态方法】
首先, 感谢你的认真学习态度, 你说得对, 这个地方, 教程中有不严谨的地方...
实际上, 普通方法中,直接调用静态属性,并不会报错, 但是绝对不能调用静态方法,
在普通方法中, 官方也是不推荐使用静态成员的, 这里允许使用静态属性, 是一个历史遗留的bug, 或许在以后的版本中会修正...
下面是测试代码,供您参考: