aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/di/service_collection.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/di/service_collection.php')
-rw-r--r--phpBB/phpbb/di/service_collection.php40
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);
}
}