如何使用非静态方法覆盖静态方法?
class Env {
static protected $vars = [
];
static public function get_env_var($var){
return self::$vars[$var];
}
static public function set_env_var($var, $value){
self::$vars[$var] = $value;
}
}
class Test extends Env {
private $env_vars = [];
public function __construct(){
$this->env_vars = self::$vars;
}
public function get_env_var($var){
return $this->env_vars[$var];
}
public function set_env_var($var, $value){
$this->env_vars[$var] = $value;
}
}
$Test = new Test();
Cannot make static method Env::get_env_var() non static in class Test in
答案 0 :(得分:2)
你不能。
如果您之前将其定义为static
,则您有正当理由。
答案 1 :(得分:2)
原始问题是如何将静态方法覆盖为非静态方法。 你的答案不是问题的答案,因为孩子仍然是静止的。
您不能使用非静态方法覆盖静态方法。
答案 2 :(得分:1)
public static function get_env_var($var)
答案 3 :(得分:0)
class Parent
{
public static function start()
{
echo 'Parent::start';
}
}
class Child extends Parent
{
public static function start()
{
parent::start();
echo 'Child::start';
}
}