编程语言
首页 > 编程语言> > 如何在PHP中实现只读成员变量?

如何在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