Best practice, overriding __construct() versus providing init() method
When you are subclassing objects and want to extend the initialization code, there are two approaches. Overriding __construct(), and implementing an initialization method that your superclass constructor calls. Method 1: class foo { public function __construct ($arg1, $arg2, $arg3) { // Do initialization } } class bar extends foo { public function __construct ($arg1, $arg2, $arg3) { parent::__construct ($arg1, $arg2, $arg3); // Do subclass initialization } } Method 2 class foo { public function init () { // Dummy function } public function __construct ($arg1, $arg2, $arg3) { // Do subclass