PHP 只读属性?

标签 php programming-languages

在使用 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/

相关文章:

php - Lighty (Lighttpd) 虚拟主机配置

programming-languages - 在 Pyret 语言中, 'shadow' 是做什么的?

php - 什么是 PHP 函数命名和参数顺序逻辑/约定?

php - 通过Solr生成内容关键词

php - 如何使用 curl + php 上传名称中包含空格的文件?

php - sql UPDATE,一个计算被多次使用,是否可以只计算一次?

javascript - 单击一个更新按钮保存所有文本字段

programming-languages - Lua 开发是否停滞不前,或者是否还有新版本计划?

java - 编程语言捕获和处理的异常算作软件中断吗?

programming-languages - 有助于编写 quines(自打印程序)的语言功能?