container = $container ?? new LeagueContainer(); $this->container->addShared( ContainerInterface::class, $this ); $this->container->inflector( ContainerAwareInterface::class ) ->invokeMethod( 'set_container', [ ContainerInterface::class ] ); foreach ( $this->service_providers as $service_provider_class ) { $service_provider = new $service_provider_class(); $implements = class_implements( $service_provider ); if ( array_key_exists( Conditional::class, $implements ) && ! $service_provider->is_needed() ) { continue; } $this->container->addServiceProvider( $service_provider ); } } /** * Finds an entry of the container by its identifier and returns it. * * @param string $id Identifier of the entry to look for. * * @throws NotFoundExceptionInterface No entry was found for **this** identifier. * @throws ContainerExceptionInterface Error while retrieving the entry. * * @return mixed Entry. */ public function get( $id ) { return $this->container->get( $id ); } /** * Returns true if the container can return an entry for the given identifier. * Returns false otherwise. * * `has($id)` returning true does not mean that `get($id)` will not throw an exception. * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. * * @param string $id Identifier of the entry to look for. * * @return bool */ public function has( $id ) { return $this->container->has( $id ); } }