PHP:不可变的公共成员字段

前端之家收集整理的这篇文章主要介绍了PHP:不可变的公共成员字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要创建一个简单的成员字段容器的不可变类.我希望其字段在其构造函数中被实例化一次(这些值应该作为构造函数的参数给出).我希望这些字段是公开的,但是不可改变.我可以使用 Java在每个字段之前使用final关键字.在 PHP中怎么做?
您应该使用__set和__get魔术方法,并将该属性声明为protected或private:
  1. class Example
  2. {
  3. private $value;
  4.  
  5. public function __construct()
  6. {
  7. $this->value = "test";
  8. }
  9.  
  10. public function __get($key)
  11. {
  12. if (property_exists($this,$key)) {
  13. return $this->{$key};
  14. } else {
  15. return null; // or throw an exception
  16. }
  17. }
  18.  
  19. public function __set($key,$value)
  20. {
  21. return; // or throw an exception
  22. }
  23. }

用法

  1. $example = new Example();
  2. var_dump($example->value);
  3. $example->value = "invalid";
  4. var_dump($example->value);

输出

  1. string(4) "test"
  2. string(4) "test"

猜你在找的PHP相关文章