从子类php和父关键字访问父变量?

时间:2012-06-01 14:21:13

标签: php oop class object parent-child

我有一个父类和一个子类,父类有一个设置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 个答案:

答案 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;