Вопрос по oop, php, class, parent-child, object – Доступ к родительской переменной из подкласса php и родительского ключевого слова?

9

У меня есть родительский класс и подкласс, родительский класс имеет конструктор, который устанавливает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';
     }
 }

Ваш Ответ

3   ответа
1

Ключевое словоparent следует использовать для доступа к методам илиstatic переменные только родительского класса, поэтому ваш первый код является правильным, так как$myVar не является статичным

12

Прежде всего, Parent - зарезервированное слово. Во-вторых, не используйтеvar если вы не используете более старую версию PHP. Вы можете использовать защищенный. Вам не нужно использовать ключевое слово parent для доступа к переменной, потому что дочерний класс должен ее наследовать. Вы можете получить к нему доступ через$this->myVar

РЕДАКТИРОВАТЬto clarify

Вам нужно только использовать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(); 

?> 

Здесь & APOS; s рабочий пример этого кода.

Вам нужно только использоватьparent:: при доступе к методам базового класса или статическим переменным базового класса. Если вы попытаетесь получить доступ к нестатической переменной базового класса, вы получите ошибкуAccess to undeclared static property" fatal error: Пожалуйста, отметьте это как ответ, если этот ответ помог вам :-)
Ye, я использую PHP 5.3 спасибо за информацию :) hadley
Спасибо теперь понимаю :) hadley
Почему в руководстве сказано использовать ключевое словоparent при доступе к родительскому классу? Почему я не должен использовать это здесь? Еще раз спасибо, приятель hadley
-2

Попробуй это :

echo parent::$myVar;

Похожие вопросы