PHP 提供了魔术方法,使开发人员能够重载某些操作,例如属性访问和方法调用。这些方法包括 __get 和 __set,它们旨在覆盖属性访问的默认行为。
提供的代码定义了一个具有公共属性和魔术方法 __get 和 __set 的类 foo。然而,当尝试使用这些方法访问 $foo->bar 时,只会访问公共属性。
这是因为 __get 和 __set 仅在属性或方法不可访问时才会被调用。由于 $foo->bar 是公共属性,因此不会触发魔术方法。
根据 PHP 手册,从不可访问的属性读取数据时执行 __get,向不可访问的属性写入数据时使用 __set特性。在这种情况下,类成员是公共的,因此可以访问,从而使魔术方法变得无关紧要。
不要使用魔术方法,而是考虑实现适当的 getter 和 setter 或直接访问属性以获得更高效和可预测的行为。魔术方法应保留用于无法通过正常方式访问属性或方法的特殊情况。
以上是为什么在访问公共属性时不调用 PHP 的 __get 和 __set 魔术方法?的详细内容。更多信息请关注PHP中文网其他相关文章!