PHP扩展类继承
我有一个我正在扩展的基类,但是我不能理解为什么我在基类中定义的变量不能被子类访问。我知道它们必须得到保护才能允许访问,但它们仍然不适合我PHP扩展类继承,php,Php,我有一个我正在扩展的基类,但是我不能理解为什么我在基类中定义的变量不能被子类访问。我知道它们必须得到保护才能允许访问,但它们仍然不适合我 class user { protected static $username; protected static $password; protected static $remember; function __construct() { } public function login($userna
class user {
protected static $username;
protected static $password;
protected static $remember;
function __construct() {
}
public function login($username, $password, $remember) {
$this->username = $username;
$this->password = $password;
$this->remember = $remember;
$login = new login();
}
}
class login extends user {
function __construct() {
print("user is: " . $this->username);
die();
}
}
因为变量应该是非静态的。 如果您想要静态变量(如您所知),它应该是这样的
print("user is: " . self::$username);
这将更有意义:
class user {
protected $username;
protected $password;
protected $remember;
public function __construct($username, $password, $remember) {
$this->username = $username;
$this->password = $password;
$this->remember = $remember;
}
public static function login($username, $password, $remember) {
return new login($username, $password, $remember);
}
}
class login extends user {
public function __construct($username, $password, $remember) {
parent::__construct($username, $password, $remember);
print("user is: " . $this->username);
die();
}
}
$foo = new user::login('foo', 'bar', 'meh');
基类中的变量是静态的,可以更好地理解继承 您需要这样做:
class user {
protected $username;
protected $password;
protected $remember;
public function __construct($username, $password, $remember) {
$this->username = $username;
$this->password = $password;
$this->remember = $remember;
}
}
class login extends user {
public function __construct($username, $password, $remember) {
parent::__construct($username, $password, $remember);
print("user is: " . $this->username);
}
}
$user = new login('joe bloggs', 'a password', TRUE);
除了静态变量外,它们在显示的程序流中没有初始化。@WilliamHand-上面的操作对您有效吗?这是您所需要的吗?@WilliamHand-更像是为了声誉和接受。我同意这更有意义,但我不断得到意外的T_字符串,当我运行最后一行时需要T_变量或“$”-不确定为什么?除了这一点,代码中仍然有一个错误(即将修复)。错误显示在哪一行?我页面中调用类页面的第1行,也就是最后一行。