从子类更改父变量

时间:2015-07-04 11:04:52

标签: php

我正在尝试在php中构建简单的配置系统,您可以在其中扩展基础并将数据放在子类中,父级会为您处理所有内容。我会让代码说明一切。但是,当我尝试这样做时,子类不会更改父变量。

父类

Queue queue = new LinkedList();

儿童班

class ConfigBase {
    protected static $data = [];

    public static function Get($name)
    {
        if(!isset(self::$data[$name]))
        {
            return null;
        }

        return self::$data[$name];
    }

    public static function Set($name, $value)
    {
        self::$data[$name] = $value;
    }
}

输出:

class Database extends ConfigBase {
    protected static $data = [
        'host'      => 'localhost',
        'username'  => 'root',
        'password'  => '',
        'database'  => '',
        'port'      => 3306
    ];
}

有没有办法/解决方法/黑客来实现这个目标?

1 个答案:

答案 0 :(得分:4)

self更改为static

当您使用self时,它将始终评估您定义分配的类。有关详细信息,请参阅http://php.net/manual/en/language.oop5.late-static-bindings.php

或者去除静态属性并使用实例变量和方法。然后,您不限于特定类型的一种配置。