self ::引用父类的静态方法中的派生类

时间:2015-06-30 19:40:32

标签: php static-methods multiple-constructors

我喜欢this answer中提出的想法,允许在PHP中使用多个构造函数。我的代码类似于:

B

现在我想创建一个派生类create(),它将使用相同的“伪构造函数”,因为它是相同的代码。但是,在这种情况下,当我不对self方法进行编码时,A常量是类$aa,因此变量$bbA都是课程$bb,我希望B成为课程$this

如果我使用B特殊变量,那么这当然是A类,即使在B范围内,如果我从create()调用任何父方法。

我知道我可以复制整个create*方法(也许Traits会有帮助吗?),但我还必须复制所有“构造函数”(所有$bb方法),这是愚蠢的。

即使在B上下文中调用该方法,如何帮助A成为/~\*(.*)~\*[,\s]*/gU

1 个答案:

答案 0 :(得分:2)

您想使用static,它代表方法的类。 (self表示方法定义的类。)

static public function create(){
    $instance = new static();
    //... some important code
    return $instance;
}

请参阅Late Static Bindings上的文档。

您需要PHP 5.3+才能使用它。