PHP, как обеспечить создание родительского класса

Что является лучшим способом гарантировать, что родительский класс всегда создается, так как мы можем легко переопределить конструкторы, не вызывая их вообще.

Кроме того: это плохая практика?

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");

1 ответ

Вы можете явно вызвать конструктор родителя, вызвав:

parent::__construct(<params>);

Кроме того, насколько я знаю, конструкторы должны быть public,

Другие вопросы по тегам