如何用非靜態方法重載靜態方法?如何用非靜態方法覆蓋靜態方法?
代碼
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
爲什麼你需要這樣做?他們服務於一個非常不同的目的,因此壓倒一切並不合理。 –
錯誤消息說明了一切:無法使靜態方法非靜態 – JvdBerg
如果要在不實例化類的情況下調用該函數,那麼這就是方法 – chokrijobs