在使用 PHP 的 DOM 类(DOMNode、DOMEElement 等)时,我注意到它们拥有真正的只读属性。例如,我可以读取 DOMNode 的 $nodeName 属性,但无法写入(如果这样做,PHP 会引发 fatal error )。
如何在 PHP 中创建自己的只读属性?
最佳答案
你可以这样做:
class Example {
private $__readOnly = 'hello world';
function __get($name) {
if($name === 'readOnly')
return $this->__readOnly;
user_error("Invalid property: " . __CLASS__ . "->$name");
}
function __set($name, $value) {
user_error("Can't set property: " . __CLASS__ . "->$name");
}
}
仅在您真正需要时使用它 - 它比正常的属性访问要慢。对于 PHP,最好采用只使用 setter 方法从外部更改属性的策略。
关于PHP 只读属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/402215/