} } class User extends DomainObject { } class Document extends DomainObject { static function getGroup() { return "document"; } } class spreadSheet extends Document { } var_export(User::createObj()); var_export(spreadSheet::createObj()); abstract class A { public static function create() { return new static(); } public static function getName($name) { return __CLASS__; } } class B extends A { public static function getName($name)