diff options
Diffstat (limited to 'phpBB/phpbb/di/service_collection.php')
-rw-r--r-- | phpBB/phpbb/di/service_collection.php | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/phpBB/phpbb/di/service_collection.php b/phpBB/phpbb/di/service_collection.php index 3a18644891..82ca9bf679 100644 --- a/phpBB/phpbb/di/service_collection.php +++ b/phpBB/phpbb/di/service_collection.php @@ -21,6 +21,11 @@ use Symfony\Component\DependencyInjection\ContainerInterface; class service_collection extends \ArrayObject { /** + * @var \Symfony\Component\DependencyInjection\ContainerInterface + */ + protected $container; + + /** * Constructor * * @param ContainerInterface $container Container object @@ -31,6 +36,37 @@ class service_collection extends \ArrayObject } /** + * {@inheritdoc} + */ + public function getIterator() + { + return new service_collection_iterator($this); + } + + // Because of a PHP issue we have to redefine offsetExists + // (even with a call to the parent): + // https://bugs.php.net/bug.php?id=66834 + // https://bugs.php.net/bug.php?id=67067 + // But it triggers a sniffer issue that we have to skip + // @codingStandardsIgnoreStart + /** + * {@inheritdoc} + */ + public function offsetExists($index) + { + return parent::offsetExists($index); + } + // @codingStandardsIgnoreEnd + + /** + * {@inheritdoc} + */ + public function offsetGet($index) + { + return $this->container->get($index); + } + + /** * Add a service to the collection * * @param string $name The service name @@ -38,8 +74,6 @@ class service_collection extends \ArrayObject */ public function add($name) { - $task = $this->container->get($name); - - $this->offsetSet($name, $task); + $this->offsetSet($name, null); } } |