А не простой способ? Мы не ищем лёгких путей
Но вообще не стоит этого хотеть.
А если очень хочется? Я конечно могу накостылять getInstance на стороне пхп кода, создать базовый на сях, потом создать пользовательский в пхп и перекопировать все свойства базового класса в пользовательский. Но чёт как то не хочется так делать.
Единственный случай, когда это имеет смысл - это штуки типа DateTIme::createFromFormat() [1].
Увы, мне приходила мысль посмотреть исходники пыха, но увы там точно такое же поведение, если сделать
PHP:
class test extends DateTime {}
$date = test::createFromFormat('Y-m-d', '2009-02-15');
То мы в итоге получим экземпляр класса DateTime, а не test. И чёт мне в голову не приходит не один пышный класс который вёл бы себя иначе. Так что даже не знаю где посмотреть можно было бы.
[1] там тоже LSB не работает, и судя по тому, сколько времени висит
баг, это действительно непросто.
Ну, я бы не назвал это багом, я не помню чтоб где то в документации было заявлено что должно быть иначе, это скорей особенность, ведь в том же пхп коде программист может писать как "new static" так и "new self", и то что она долго висит это вполне может быть из за того что мало кому надо чтоб оно было иначе.