<?php class Super { public $my; public function __construct ( $someArg ) { if ( class_exists('Sub') ) { // or some other condition return new Sub( $someArg ); } $this->my = $someArg; } } class Sub extends Super {} ?>
Это не работает, так как new Super()
будет «пустым» Super
объектом (все члены имеют NULL
). (PHP не позволяет присваивать $this
, поэтому $this = new Sub()
тоже не работает).
Я знаю, что правильный шаблон будет фабрикой здесь. Но для этого потребуется много изменений в коде, поэтому мне интересно, можно ли это сделать так. Поскольку Sub
– Super
, я не понимаю, почему его нельзя ограничивать с точки зрения ООП.