2

我尝试在Child类中调用getTest()函数。首先我初始化Ext类的实例,所以我假设主属性$ext现在应该包含它。但是类没有继承它,得到的错误信息是:

在非对象上调用成员函数 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 ) { ... }
}

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

4

1 回答 1

2

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

您需要在使用属性之前调用父构造函数

function __construct()
{
    parent::__construct();
    echo $this->ext->getTest();
}
于 2012-11-10T09:22:18.080 回答