Example #1
0
    {
        $this->group = static::getGroup();
        // обращается к статичному методу дочернего класса
    }
    public static function create()
    {
        return new static();
        // создаёт обьект доченего класса
    }
    static function getGroup()
    {
        return "default";
    }
}
class User extends DomainObject
{
}
class Document extends DomainObject
{
    static function getGroup()
    {
        return "document";
    }
}
class SpreadSheet extends Document
{
}
var_dump(User::create());
var_dump(Document::create());
var_dump(SpreadSheet::create());
Example #2
0
{
    private $group;
    public function __construct()
    {
        $this->group = static::getGroup();
    }
    public static function create()
    {
        return new static();
    }
    static function getGroup()
    {
        return "default";
    }
}
class User extends DomainObject
{
}
class Document extends DomainObject
{
    static function getGroup()
    {
        return "document";
    }
}
class SpreadSheet extends Document
{
}
print_r(User::create());
print_r(SpreadSheet::create());