在PHP中继承实例

时间:2012-11-10 09:14:29

标签: php

我尝试在 Child 类中调用 getTest()函数。 首先,我初始化 Ext 类的实例,因此我假设主要属性 $ ext 现在应该包含它。但 Child 类不会继承它并获取错误消息:

在非对象上调用成员函数getTest()

问题出在哪里?

<?php

 $A = new Main;

 class Main
 {
    protected $ext = null;
    function __construct()
    {
      $this->ext= new Ext();
      new Child;
    }
 }

 class Child extends Main
 {
    function __construct()
    {
      echo $this->ext->getTest();
    }
 }


 class Ext extends Main
 {

    public function getTest()
    {
      return "cool";
    }
 }

 ?>

我知道要以其他方式解决它:

class Child
{
  private $Main;
  function __construct( &$Main ) { ... }
}

但我想了解为什么这不起作用..

1 个答案:

答案 0 :(得分:2)

在构造对象时,属性还没有值。

在使用属性

之前,需要调用父构造函数
function __construct()
{
    parent::__construct();
    echo $this->ext->getTest();
}