PHP:将未声明的类属性的默认可见性更改为 protected /私有(private)

标签 php class oop scope visibility

在 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/

相关文章:

Perl read_config sub,oop 与否?

java - 如何访问对象中的对象?

javascript - 如何根据选择其他选择选项来更改选择选项

php - 使用 php 中的简单插入查询插入数据

php - 原则插入看不到外键字段

javascript - 如何检测用户的时区?

delphi - 定义方法的问题

class - 非托管 var 作为托管类 c++ 的成员

oop - Lua类继承问题

c++ - 使用单个数字表示多个变量