У меня есть родительский класс и подкласс, родительский класс имеет конструктор, который устанавливает 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'; } }
Во-первых, родитель – это зарезервированное слово. Во-вторых, не используйте var
если вы не используете более старую версию PHP. Вы можете использовать защищенные. Вам не нужно использовать родительское ключевое слово для доступа к переменной, потому что дочерний класс должен наследовать его. Вы можете получить доступ к нему через $this->myVar
EDIT уточнить
Вам нужно использовать 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(); ?>
Вот рабочий пример этого кода.
parent
ключевого слова должен использоваться для доступа к методам или статическим переменным только для родительского класса, поэтому ваш первый код является правильным, так как $myVar
не является статическим.
Попробуй это :
echo parent::$myVar;