访问成员属性为何在静态方法中会报错?" />
php class oop 使用$this-> 问题探讨
问题描述:
在php 中,使用$this-> 访问成员属性时,执行b::ccc() 会出现using $this when not in object context 的错误,但执行a::fff() 却可以成功。
解答:
立即学习“PHP免费学习笔记(深入)”;
要解决这个问题,请确保使用较新版本的 php(>=7.0)并使用正确的编码方式。虽然代码中还存在其他问题,但以下分析将分解代码并详细解释该错误的原因。
php 版本问题:
在php 7 和更高版本中,由于php不再允许在静态方法中使用$this访问属性,因此该代码将无法工作。
示例代码简化:
为了便于理解,将示例代码简化如下:
class A { protected $message; public function ccc() { return B::bbb(); } public function fff() { return $this->message['userError']; } } class B { protected $message; public function bbb() { return $this->message['userError']; } }
代码运行情况:
$this 指向问题:
在 a::ccc() 中调用 b::bbb() 时,this 实际上指向 a 类。这是因为 php 允许在静态方法中访问非静态属性,而这在较新版本的 php 中已被弃用。
解决方案:
要解决这个问题,请避免在静态方法中使用$this,并使用类名代替当前类(例如,b::bbb () 应改为a::bbb())。
以上就是PHP 类中使用 $this-> 访问成员属性为何在静态方法中会报错?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号