我是PHP世界的新手,从 php.net 学习。我知道,当将对象转换为数组时,当ClassName或星号键 (*(附加到数组键中的私有和受保护属性名称之前时,会在私有和受保护的属性名称周围添加空字节。
但我的问题是,为什么php 添加空字节是什么原因?
谁能用简单易行的话说出来。
例子会有很大帮助。
谢谢
private
/protected
属性的要点是你不应该从类本身之外访问它们。这不是安全措施或类似的东西,而是在不同代码片段之间强制执行合约。当您将某些内容标记为private
/protected
时,您明确声明此内容不适合一般公众使用,并且不应将任何外部代码耦合到它。
这主要是对你自己和其他开发人员的提醒,如果你不服从这个标记,最坏的情况是会给你轻轻的耳光;无论如何,这不是一个铁定的保护。有很多方法可以解决这个问题,例如使用反射。但是,如果访问这些私有部分变得太容易,开发人员可能会左右做,并否定整个要点。
由于在将对象转换为数组时,这些属性包含在数组中,因此至少由于增加了NUL
字节,如何直接访问它们并不是很明显的。如果您花时间弄清楚如何访问它们,您希望真正知道自己在做什么。
TL;DR:(我相信(这是尝试执行一些最低编码标准的最小尝试,并且一旦新手弄清楚数组强制转换是什么,就不要让新手违反所有 OOP 原则。