diff options
Diffstat (limited to 'phpBB/includes/extension/provider.php')
-rw-r--r-- | phpBB/includes/extension/provider.php | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/phpBB/includes/extension/provider.php b/phpBB/includes/extension/provider.php index 9b5ec56d30..3939c2ef07 100644 --- a/phpBB/includes/extension/provider.php +++ b/phpBB/includes/extension/provider.php @@ -24,9 +24,9 @@ abstract class phpbb_extension_provider implements IteratorAggregate { /** * Array holding all found items - * @var array + * @var array|null */ - protected $items = array(); + protected $items = null; /** * An extension manager to search for items in extensions @@ -42,8 +42,6 @@ abstract class phpbb_extension_provider implements IteratorAggregate public function __construct(phpbb_extension_manager $extension_manager) { $this->extension_manager = $extension_manager; - - $this->items = $this->find(); } /** @@ -51,7 +49,7 @@ abstract class phpbb_extension_provider implements IteratorAggregate * * @return array List of task names */ - abstract function find(); + abstract protected function find(); /** * Retrieve an iterator over all items @@ -60,6 +58,11 @@ abstract class phpbb_extension_provider implements IteratorAggregate */ public function getIterator() { + if ($this->items === null) + { + $this->items = $this->find(); + } + return new ArrayIterator($this->items); } } |