/** * Verifies collection is correct type and calls connect on providers. * * Note: This is the same code as {@see Silex\Application::mount} * * @param ControllerProviderInterface|ControllerCollection $collection * * @throws LogicException If controllers is not an instance of ControllerProviderInterface or ControllerCollection * * @return ControllerCollection */ protected function verifyCollection($collection) { if ($collection instanceof ControllerProviderInterface) { $connectedControllers = $collection->connect($this->app); if (!$connectedControllers instanceof ControllerCollection) { throw new LogicException(sprintf('The method "%s::connect" must return a "ControllerCollection" instance. Got: "%s"', get_class($collection), is_object($connectedControllers) ? get_class($connectedControllers) : gettype($connectedControllers))); } $collection = $connectedControllers; } elseif (!$collection instanceof ControllerCollection) { throw new LogicException('The "mount" method takes either a "ControllerCollection" or a "ControllerProviderInterface" instance.'); } return $collection; }
/** * Mounts controllers under the given route prefix. * * @param string $prefix The route prefix * @param ControllerCollection|ControllerProviderInterface $controllers A ControllerCollection or a ControllerProviderInterface instance * * @return Application * * @throws \LogicException */ public function mount($prefix, $controllers) { if ($controllers instanceof ControllerProviderInterface) { $connectedControllers = $controllers->connect($this); if (!$connectedControllers instanceof ControllerCollection) { throw new \LogicException(sprintf('The method "%s::connect" must return a "ControllerCollection" instance. Got: "%s"', get_class($controllers), is_object($connectedControllers) ? get_class($connectedControllers) : gettype($connectedControllers))); } $controllers = $connectedControllers; } elseif (!$controllers instanceof ControllerCollection) { throw new \LogicException('The "mount" method takes either a "ControllerCollection" or a "ControllerProviderInterface" instance.'); } $this['controllers']->mount($prefix, $controllers); return $this; }