为什么 php 会向私有和受保护的属性名称添加空字节?



我是PHP世界的新手,从 php.net 学习。我知道,当将对象转换为数组时,当ClassName星号键 (*(附加到数组键中的私有和受保护属性名称之前时,会在私有和受保护的属性名称周围添加空字节。

但我的问题是,为什么php 添加空字节是什么原因?

谁能用简单易行的话说出来。

例子会有很大帮助。

谢谢

private/protected属性的要点是你不应该从类本身之外访问它们。这不是安全措施或类似的东西,而是在不同代码片段之间强制执行合约。当您将某些内容标记为private/protected时,您明确声明此内容不适合一般公众使用,并且不应将任何外部代码耦合到它。

这主要是对你自己和其他开发人员的提醒,如果你不服从这个标记,最坏的情况是会给你轻轻的耳光;无论如何,这不是一个铁定的保护。有很多方法可以解决这个问题,例如使用反射。但是,如果访问这些私有部分变得太容易,开发人员可能会左右做,并否定整个要点。

由于在将对象转换为数组时,这些属性包含在数组中,因此至少由于增加了NUL字节,如何直接访问它们并不是很明显的。如果您花时间弄清楚如何访问它们,您希望真正知道自己在做什么。

TL;DR:(我相信(这是尝试执行一些最低编码标准的最小尝试,并且一旦新手弄清楚数组强制转换是什么,就不要让新手违反所有 OOP 原则。

最新更新