ich bin gerade dabei ein DI Container zu basteln. Allerdings ist mir etwas aufgefallen was ich nicht ganz nachvollziehen kann. Und zwar bekomme ich 2 unterschiedliche Objekte mit gleicher ID ( var_dump(object) ). Fehlerbehandlungen im Code wurden zwecks Veranschaulichung entfernt. Zum testen wurden Diese auch aus dem Code entfernt um Fehlerquellen auszuschließen.
Folgender Maßen registriere ich die Closures.
PHP-Code:
$objInversionContainer->register('View', function()
{
return (new View('string und so'));
});
$objInversionContainer->register('View2', function()
{
return (new View('string und so2'));
});
PHP-Code:
class Container
{
private $arrRegister = array();
private $arrInstances = array();
public function register($strKey, \Closure $objClosure)
{
if ( ! is_string($strKey))
{
throw new \InvalidArgumentException(sprintf('Invalid argument in %s', __METHOD__));
}
$this->arrRegister[$strKey] = $objClosure;
}
public function resolve($strKey)
{
return (call_user_func($this->arrRegister[$strKey]));
}
}
PHP-Code:
var_dump($objInversionContainer->resolve('View'));
var_dump($objInversionContainer->resolve('View2'));
PHP-Code:
object(Dispendium\Foundation\View\View)[5]
private 'arrTemplatesFolder' => null
private 'strMinifiedFolder' => string 'string und so' (length=13)
private 'blnMinifyTemplates' => boolean true
object(Dispendium\Foundation\View\View)[5]
private 'arrTemplatesFolder' => null
private 'strMinifiedFolder' => string 'string und so2' (length=14)
private 'blnMinifyTemplates' => boolean true
Einen Kommentar schreiben: