Как вернуть подкласс из конструктора в PHP

<?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() тоже не работает).

Я знаю, что правильный шаблон будет фабрикой здесь. Но для этого потребуется много изменений в коде, поэтому мне интересно, можно ли это сделать так. Поскольку SubSuper , я не понимаю, почему его нельзя ограничивать с точки зрения ООП.

Related of "Как вернуть подкласс из конструктора в PHP"