gregiolo
gregiolo

Reputation: 113

Inheriting instance in PHP

I try to call getTest() function inside Child class. First I initialize instance of Ext class so I assume main property $ext should now contain it. But Child class does not inherit it and obtained error message is:

Call to a member function getTest() on a non-object

Where is the issue?

<?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";
    }
 }

 ?>

I know that to solve it other way I can use:

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

but I would like to understand why that does not work..

Upvotes: 2

Views: 52

Answers (1)

Maks3w
Maks3w

Reputation: 6459

At the moment on construct the object the atribute don't have a value yet.

You need call to the parent constructor before use the attribute

function __construct()
{
    parent::__construct();
    echo $this->ext->getTest();
}

Upvotes: 2

Related Questions