PHP:不可变的公共成员字段
我需要创建一个不可变的类,它只是一个成员字段容器。我希望其字段在其构造函数中实例化一次(值应作为构造函数的参数给出)。我希望这些字段是公开的但不可变的。我可以使用 Java 在每个字段之前使用 final
关键字来完成此操作。 PHP 中是如何完成的?
I need to create an immutable class which is simply a member field container. I want its fields to be instantiated once in its constructor (the values should be given as parameters to the constructor). I want the fields to be public but immutable. I could have done it with Java using the final
keyword before each field. How is it done in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您应该使用
__set
和__get
魔术方法,并将该属性声明为受保护或私有:示例:
输出:
@property-read
应该可以帮助您的 IDE 确认此神奇属性的存在。You should use
__set
and__get
magic methods and declare that property as protected or private:Example:
Outputs:
@property-read
should help your IDE acknowledge existence of this magic property.您可以使用
__set()
魔术方法,并在有人尝试直接设置属性时引发异常。但是,这将阻止对属性的修改,无论它们是否是公共的。
You could use the
__set()
magic method and throw an exception when someone tries to set a property directly.However, this would prevent modification of properties regardless of whether they're public or not.
神奇方法
可以做得更好 - 如果您有 dinamyc 字段数
magic methods
so you can do better - if you have a dinamyc count of fields