首页 > 后端开发 > php教程 > 为什么在访问公共属性时不调用 PHP 的 __get 和 __set 魔术方法?

为什么在访问公共属性时不调用 PHP 的 __get 和 __set 魔术方法?

Barbara Streisand
发布: 2024-11-25 19:59:15
原创
926 人浏览过

Why are PHP's __get and __set magic methods not invoked when accessing a public property?

PHP 中的魔术方法 __get 和 __set

PHP 提供了魔术方法,使开发人员能够重载某些操作,例如属性访问和方法调用。这些方法包括 __get 和 __set,它们旨在覆盖属性访问的默认行为。

提供的代码定义了一个具有公共属性和魔术方法 __get 和 __set 的类 foo。然而,当尝试使用这些方法访问 $foo->bar 时,只会访问公共属性。

这是因为 __get 和 __set 仅在属性或方法不可访问时才会被调用。由于 $foo->bar 是公共属性,因此不会触发魔术方法。

根据 PHP 手册,从不可访问的属性读取数据时执行 __get,向不可访问的属性写入数据时使用 __set特性。在这种情况下,类成员是公共的,因此可以访问,从而使魔术方法变得无关紧要。

不要使用魔术方法,而是考虑实现适当的 getter 和 setter 或直接访问属性以获得更高效和可预测的行为。魔术方法应保留用于无法通过正常方式访问属性或方法的特殊情况。

以上是为什么在访问公共属性时不调用 PHP 的 __get 和 __set 魔术方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板