可能重複:
What exactly is late-static binding in PHP?PHP的面向對象編程父實例孩子
我想建立一個抽象類將實例化它的使用靜態功能子類。
<?php
class A
{
protected $value;
public function __construct($value)
{
$this->value = $value;
}
public static function create($value)
{
/* A must not know about B!
* I give that example for the context understanding */
return **new B**($value);
}
}
class B extends A
{
}
理所當然的還沒有知道關於B ..我不知道這是否是可能的,我不希望有實現我所有的170子類的創建功能...
你認爲我應該使用工廠,它會返回我的170個類中的一個類的實例嗎?這很麻煩,不是很維護..
對不起,但我不明白你究竟想要什麼。 – Hast
有可能,請參閱'static'關鍵字或Late Static Binding。很可能你做錯了(因爲你可以使用標準的構造函數),只是說,所以你以後可以不會說你沒有受到警告。 – hakre
正如你所提到的,A不會知道它的任何孩子,也不應該。你正在努力的目標行爲是什麼?它聽起來像你正在尋找工廠設計。 –