/** * Get instance with container * * @param string $in Scope::SINGLETON | Scope::PROTOTYPE * @param string $bindingToType AbstractModule::TO_CLASS | AbstractModule::TO_PROVIDER ... * @param mixed $target target interface or class * * @return mixed */ public function getInstanceWithContainer($in, $bindingToType, $target) { if ($in === Scope::SINGLETON && $this->container->has($target)) { $instance = $this->container->get($target); return $instance; } $isToClassBinding = $bindingToType === AbstractModule::TO_CLASS; $instance = $isToClassBinding ? $this->injector->getInstance($target) : $this->getProvidedInstance($target); if ($in === Scope::SINGLETON) { $this->container->set($target, $instance); } return $instance; }