Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从子类更改父变量_Php - Fatal编程技术网

Php 从子类更改父变量

Php 从子类更改父变量,php,Php,我正在尝试用php构建一个简单的配置系统,在这个系统中,您可以扩展基类并将数据放入子类中,父类为您处理所有事情。我会让代码自己说话。但是,当我尝试这样做时,子类不会更改父变量 父类 class ConfigBase { protected static $data = []; public static function Get($name) { if(!isset(self::$data[$name])) { r

我正在尝试用php构建一个简单的配置系统,在这个系统中,您可以扩展基类并将数据放入子类中,父类为您处理所有事情。我会让代码自己说话。但是,当我尝试这样做时,子类不会更改父变量

父类

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
    ];
}
输出:

// NULL
echo Database::Get('host');

有没有办法/解决方法/破解方法来完成这一点?

self
更改为
static

当您使用
self
时,它将始终计算到您定义作业的类。有关详细信息,请参阅

或者去掉静态属性,使用实例变量和方法。这样,您就不局限于一种特定类型的配置