调用匿名类的工厂函数

时间:2017-01-24 11:18:06

标签: php static-methods php-7 anonymous-class

我想通过工厂函数实例化anonymous class。可悲的是,我的天真方法会在最后一行抛出一个解析错误Parse error: syntax error, unexpected 'class'

class Foo {
    static function factory() {
        return new static;
    }
}
(class extends Foo {})::factory();

这样的事情可能吗?或者是否有其他方法可以达到同一目标?

1 个答案:

答案 0 :(得分:1)

两个问题:

  1. 您需要使用new class()语法(即使用大括号)返回静态

  2. 您还需要使用new

  3. 生成匿名类

    代码:

    class Foo {
        static function factory() {
            return new static();
        }
    }
    (new class extends Foo {})::factory();