如何在PHP中实现只读成员变量?
作者:互联网
尝试更改时,抛出异常.
解决方法:
我认为对于类属性,解决方案是:
>不要使用您感兴趣的名称定义属性
>使用magic __get方法使用“假”名称访问该属性
>定义__set方法,以便在尝试设置该属性时抛出异常.
>有关魔术方法的更多信息,请参阅Overloading.
对于变量,我认为不可能有一个只读变量,当你试图写入时,PHP会抛出异常.
例如,考虑这个小班:
class MyClass {
protected $_data = array(
'myVar' => 'test'
);
public function __get($name) {
if (isset($this->_data[$name])) {
return $this->_data[$name];
} else {
// non-existant property
// => up to you to decide what to do
}
}
public function __set($name, $value) {
if ($name === 'myVar') {
throw new Exception("not allowed : $name");
} else {
// => up to you to decide what to do
}
}
}
实现类并尝试读取属性:
$a = new MyClass();
echo $a->myVar . '<br />';
会得到你预期的输出:
test
在尝试写入房产时:
$a->myVar = 10;
会得到一个例外:
Exception: not allowed : myVar in /.../temp.php on line 19
标签:member-variables,php,readonly 来源: https://codeday.me/bug/20190928/1829300.html