我有一个父类和一个子类,父类有一个设置var
的构造函数,我想在子类中使用var
,我有它工作但是我感到困惑通过关键字parent
?
实施例
class Sub extends Parent {
public function foo() {
echo $this -> myVar;
}
}
class Parent {
var $myVar;
public function __construct() {
$this -> myVar = 'a';
}
}
这很有用,我得到myVar
的值,但我应该使用关键字parent
,当我这样做时,我会收到错误,例如,
class Sub extends Parent {
public function foo() {
echo parent -> myVar;
}
}
class Parent {
var $myVar;
public function __construct() {
$this -> myVar = 'a';
}
}
答案 0 :(得分:12)
首先,Parent是一个保留字。其次,请不要使用var
,除非您使用的是旧版本的PHP。你可以使用受保护的。您不需要使用parent关键字来访问变量,因为子类应该继承它。您可以通过$this->myVar
编辑澄清
访问基类的方法或基类的parent::
变量时,只需要使用static
。如果您尝试访问基类的非静态变量,则会出现错误Access to undeclared static property" fatal error:
这是一个让你入门的例子。
<?php
class Animal{
protected $myVar;
public function __construct() {
$this->myVar = 'a';
}
}
class Cat extends Animal {
public function foo() {
echo $this->myVar;
}
}
$cat = new Cat();
$cat->foo();
?>
Here's此代码的工作示例。
答案 1 :(得分:1)
关键字parent
应仅用于访问父类的方法或静态变量,因此您的第一个代码是正确的,因为$myVar
不是静态的。< / p>
答案 2 :(得分:-2)
试试这个:
echo parent::$myVar;