Are parent constructors called if a child class does NOT define a constructor?

class, constructor, parent-child, php

Solution

Maybe this was sort of obvious but did some looking around, and a direct answer to this question surprisingly wasn't very easy to find so here it is:

If the child class does NOT define a constructor then the parent constructor will be called.

In the example below $obj will still call the constructor from BaseClass because SubClass never called a constructor.

class BaseClass {
    function __construct() {
       print "In BaseClass constructor\n";
    }
}

class SubClass extends BaseClass {
    //I do not have a constructor :(
}

$obj = new SubClass();

Problem

In the PHP Constructors and Destructors documentation it states Note: Parent constructors are not called implicitly if the child class defines a constructor. In order to run a parent constructor, a call to parent::__construct() within the child constructor is required. But what if the child class does not call a constructor, will the parent constructor still be called? Or should we create a constructor that calls the parent constructor anyway? IE: ``` class BaseClass { function __construct() { print "In BaseClass constructor\n"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); } } ```

Original source

Related problems