Skip to content

Instantly share code, notes, and snippets.

@m4rw3r
Created May 5, 2012 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m4rw3r/2602721 to your computer and use it in GitHub Desktop.
Save m4rw3r/2602721 to your computer and use it in GitHub Desktop.
<?php
public function getService($service)
{
if(isset($this->_instances[$service]))
{
return $this->_instances[$service];
}
if( ! isset($this->_loaders[$service]))
{
return self::getGlobalService($service);
}
if(is_string($this->_loaders[$service]))
{
$i = new $this->_loaders[$service];
}
elseif(is_callable($this->_loaders[$service]))
{
$i = call_user_func($this->_loaders[$service], $this);
}
else
{
throw new Inject_LibraryException('Faulty service loader for the service "'.$service.'".');
}
if(isset(self::$_global_singletons[$service]))
{
$this->_instances[$service] = $i;
}
return $i;
}
public function setService($service, $loader, $shared = true)
{
if($shared)
{
$this->_loaders[$service] = $loader;
$this->_singletons[$service] = true;
}
else
{
$this->_loaders[$service] = $loader;
unset($this->_singletons[$service]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment