Click to See Complete Forum and Search --> : PHP: __construct() question


potatoCode
July 18th, 2009, 02:15 AM
Hello php gurus

If a class has a method named after the class, is the function constructor?
If I have a base class as// Inheritance test
class Animal
{

function __construct($ref)
{
$this->animalName = $ref;
}

function eat()
{
printf("%s is eating<br />", $this->animalName);
}

protected $animalName;

}and I'd like to call the base's constructor in the derived//
class Panda extends Animal
{
function __construct($ref)
{
$this->Animal($ref); //works only if Animal($ref) is defined in the base
}

function eat()
{
printf("Big %s is eating<br />", $this->animalName);
return $this;
}

function yawn()
{
printf("Big %s is yawning<br />", $this->animalName);
}
}
What is the difference between __construct() and the function with the same class name?

Thanks for the help.

PeejAvery
July 18th, 2009, 09:37 AM
If no constructor method is found, then a function that has the same name as the class itself becomes the constructor.

potatoCode
July 18th, 2009, 04:24 PM
Hi PeejAvery
If no constructor method is found, then a function that has the same name as the class itself becomes the constructor.I see.
Then, how do I initialize base member in the derived class
when the base class only uses __construct?
because $this->__construct($ref); doesn't work.

PeejAvery
July 19th, 2009, 04:08 PM
You could just create a new instance of the class and then unset it.

potatoCode
July 19th, 2009, 07:19 PM
You could just create a new instance of the class and then unset it.Hm, does that mean a ctor with the same class name serves as a better base class ctor
than __construct() when the dervied class has the need to intialize its base members?


Is that the only difference between the named ctor and __construct()?

japonicus
August 21st, 2009, 07:40 PM
The child class (panda) can call the parent's constructor using: parent::__construct($ref)