简体   繁体   中英

php how to ensure that parent class gets constructed

What is the best way to ensure that parent class allways gets constructed, since we can easily override constructors without having to call them at all.

Also: is this bad practice?

abstract class A
{
 // make it final to ensure parent constructor is allways used
 final function __construct($param1)
 {
  // do essencial stuff here with $param1
  // pass construction with remaining args to child
  call_user_func_array(array($this,'init'),array_slice(func_get_args(),1));
 }
 abstract function init();
}

class B extends A
{
 function init($param2)
 {
  // effectively extends parent constructor, no?
 }
}

$obj = new B("p1","p2");

You can explicitly call parent's constructor by calling:

parent::__construct(<params>);

Also as far as I know, constructors should be public .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM