Я не уверен, но я не верю, что есть способ изменить тип объекта внутренне. По крайней мере, мне не удалось заставить __construct () вернуть объект другого класса.
Возможно, проще всего было бы создать метод статического инициализатора в SpecialUser, который принимает объект IPSMember и переводит свойства, возвращая объект SpecialUser.
class SpecialUser extends IPSMember
{
public static function initWithIPSMember (IPSMember $ipsMember)
{
$specialUserObj = new SpecialUser();
// translate any properties
return $specialUserObj;
}
}
Метод getproperties класса Reflection может помочь вам сделать это быстро. http://php.net/manual/en/reflectionclass.getproperties.php
Надеюсь, кто-то может предложить вам более быстрое решение.
Удачи.