我有一些Legacy類。 許多類都使用Factory類實例化。將依賴注入容器傳遞給靜態方法
還有一個單身人士班。
未來我想用DIC完全替代它們。 目前代碼庫要做的很大。
現在我的目標是將DI容器注入到由Singleton類實例化的每個服務中。Singleton類有一個帶有這個簽名的靜態方法。
final class Singleton
{
private static $singletonCache = array();
public static function getInstance($namespace, $className)
{
}
}
這個功能我想,以檢查內部:
$instance = new $className();
if($instance instanceof ContainerAwareInterface)
{
// TODO: how do we get the container here
$instance->setContainer($container);
}
但我如何能最好地讓我的「單級」,這是僅稱爲靜態內部的容器?
'var_dump($ instance);'並檢查你所得到的。 –
這是虛擬代碼。我知道我到了那裏。 我的問題是在靜態方法「getInstance」的上下文中無法使用$ container。我如何從我的全球範圍注入它? – psren
'$ instance-> setContainer($ container);'在這裏你通過傳遞'$ container'參數來調用方法'setContainer'問問你自己,在使用之前你在哪裏得到它? –