Замени resolve метода с това
PS: Може да се поизчисти много този код, ама набързо толкова
Код:
public function resolve($class, $method= NULL)
{
$reflector = new \ReflectionClass($class);
if( ! $reflector->isInstantiable())
{
throw new \Exception("[$class] is not instantiable");
}
$constructor = $reflector->getConstructor();
if($method && $reflector->hasMethod($method)) {
$reflectionMethod = new ReflectionMethod($class, $method);
$methodParams = $reflectionMethod->getParameters();
$methodDeps = $this->getDependencies($methodParams);
}
if(is_null($constructor))
{
$instance = new $class;
}
else {
$parameters = $constructor->getParameters();
$dependencies = $this->getDependencies($parameters);
$instance = $reflector->newInstanceArgs($dependencies);
}
if(isset($reflectionMethod)) {
return $reflectionMethod->invokeArgs($instance, $methodDeps);
}
return $instance;
}