public function execute(Request $request) { $key = $request->getKey(); $definitionsMap = $request->getDefinitionsMap(); $definition = $definitionsMap[$key]; return $definition->getConcrete(); }
public function execute(Request $request) { $key = $request->getKey(); $definitionsMap = $request->getDefinitionsMap(); $definition = $definitionsMap[$key]; $value = $definition->getConcrete(); return $request->getContainer()->get($value); }
public function build(Request $request) { $key = $request->getKey(); $definitionsMap = $request->getDefinitionsMap(); $definition = $definitionsMap->get($key); $builder = $this->getBuilder($definition->getType()); return $builder->execute($request); }
public function execute(Request $request) { $key = $request->getKey(); foreach ($request->getProviders() as $provider) { if ($provider->has($key)) { return $provider->get($key); } } }
protected function handle(Request $request) { $key = $request->getKey(); $providers = $request->getProviders(); foreach ($providers as $provider) { if ($provider->has($key)) { return true; } } return false; }
public function execute(Request $request) { $key = $request->getKey(); $reflected = new \ReflectionClass($key); // abstract class or interface if (!$reflected->isInstantiable()) { $message = "Unable to resolve [{$reflected->name}]"; $this->raiseException($message); } $constructor = $reflected->getConstructor(); $parameters = array(); if (!is_null($constructor)) { $parameters = $this->getDependencies($constructor, $request->getContainer()); } return !empty($parameters) ? $reflected->newInstanceArgs($parameters) : $reflected->newInstanceArgs(); }
/** * Build the requested service. * * @param Request $request * @return mixed */ public function build(Request $request) { $key = (string) $request->getKey(); // circular dependency guard if (array_key_exists($key, $this->buildingKeys)) { throw new ContainerException("Circular Dependency detected for {$key}"); } $this->buildingKeys[$key] = true; // check local if ($this->localHas($request)) { $factory = new LocalFactory(); $returnValue = $factory->build($request); unset($this->buildingKeys[$key]); return $returnValue; } // check in nested providers if ($this->providersHas($request)) { $factory = new ProviderFactory(); $returnValue = $factory->build($request); unset($this->buildingKeys[$key]); return $returnValue; } // try to bail-out client call with reflection. // if we're able to resolve all dependencies, we'll assemble a new // definition with the returned value for future use. $factory = new LocalFactory(); // temporary definition $def = new Definition((string) $key, null, new DefinitionType(DefinitionType::REFLECTION)); $request->getDefinitionsMap()->add($def); $returnValue = $factory->build($request); unset($this->buildingKeys[$key]); $request->getContainer()->singleton($key, $returnValue); return $returnValue; }
protected function handle(Request $request) { $key = $request->getKey(); $definitions = $request->getDefinitionsMap(); return $definitions->has($key); }