我喜欢this answer中提出的想法,允许在PHP中使用多个构造函数。我的代码类似于:
B
现在我想创建一个派生类create()
,它将使用相同的“伪构造函数”,因为它是相同的代码。但是,在这种情况下,当我不对self
方法进行编码时,A
常量是类$aa
,因此变量$bb
和A
都是课程$bb
,我希望B
成为课程$this
。
如果我使用B
特殊变量,那么这当然是A
类,即使在B
范围内,如果我从create()
调用任何父方法。
我知道我可以复制整个create*
方法(也许Traits会有帮助吗?),但我还必须复制所有“构造函数”(所有$bb
方法),这是愚蠢的。
即使在B
上下文中调用该方法,如何帮助A
成为/~\*(.*)~\*[,\s]*/gU
?
答案 0 :(得分:2)
您想使用static
,它代表方法的类。 (self
表示方法定义的类。)
static public function create(){
$instance = new static();
//... some important code
return $instance;
}
请参阅Late Static Bindings上的文档。
您需要PHP 5.3+才能使用它。