3

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

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

谁能用简单易懂的语言说出来。

例子会有很大帮助。

谢谢

4

1 回答 1

4

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

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

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

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

于 2017-08-18T12:40:24.947 回答