在 PHP 中,未声明的类属性/变量将默认为“公共(public)”可见性。
有没有办法(对于某些类,但不是全部)将默认可见性更改为“ protected ”(或私有(private))?
我知道正常地声明它们是一个很好的做法。然而,在本例中,我有很多层模型类,这些模型类源自具有很多列的 SQL View 。我希望这些默认为“ protected ”(以防止我的前端开发人员在没有 HTML 转义的情况下使用原始值),并且当需要“公共(public)”访问时,我将如此声明它们。即,看到它与安全相关,我想将“公共(public)白名单”而不是“ protected /私有(private)黑名单”。
最佳答案
如果您需要这种级别的可见性控制,您必须声明一个类。直接回答你的问题,不,没有办法动态设置可见性。
尽管文档没有针对 stdClass
对象类型的特定 session ,但使用 (object)
转换的任何数组都将是 stdClass
对象将非数字索引添加为公共(public)属性。 http://php.net/manual/en/language.types.object.php#language.types.object.casting
一个通用的解决方案是你有一个带有 protected
属性的类,该属性将是一个数组,并且它将保存值。您还必须编写一个访问方法,也需要索引并返回原始值或转义值。
关于PHP:将未声明的类属性的默认可见性更改为 protected /私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731649/