[英]Change parent variable from child class
我正在尝试在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');
有没有一种方法/解决方法/ hack来完成此任务?
将self
更改为static
。
当您使用self
,它将始终评估为您定义分配的类。 有关详细信息,请参见http://php.net/manual/en/language.oop5.late-static-bindings.php
或摆脱静态属性,并使用实例变量和方法。 这样,您就不仅限于特定类型的一种配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.