Accessing a parents variable from subclass php and parent keyword?

主宰稳场 提交于 2019-11-28 07:21:27

问题


I have a parent class and a subclass, the parent class has a constructer that sets a var and I would like to use that var in the subclass, I have it working but am getting confused by the keyword parent?

Example

 class Sub extends Parent {
     public function foo() {
         echo $this -> myVar;
     }
 }

 class Parent {
     var $myVar;
     public function __construct() {
          $this -> myVar = 'a';
     }
 }

This worked and I get the value of myVar, but am I supposed to be using the keyword parent and when I do I get an error, example,

 class Sub extends Parent {
     public function foo() {
         echo parent -> myVar;
     }
 }

 class Parent {
     var $myVar;
     public function __construct() {
          $this -> myVar = 'a';
     }
 }

回答1:


First off, Parent is a reserved word. Second off, don't use var unless you're using an older version of PHP. You can use protected. You don't need to use the parent keyword to access the variable because the child class should inherit it. You can access it via $this->myVar

EDIT to clarify

You only need to use parent:: when accessing methods of the base class or static variables of the base class. If you try to access a non static variable of the base class you will get an error Access to undeclared static property" fatal error:

Here's an example to get you started.

<?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 a working example of this code.




回答2:


Keyword parent should be used to access methods or static variables of parent class only, so your first code is the proper one, since $myVar is not static.




回答3:


Try this :

echo parent::$myVar;


来源:https://stackoverflow.com/questions/10852028/accessing-a-parents-variable-from-subclass-php-and-parent-keyword

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!