php如何确保父类被构造

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.