aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/extension/provider.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/extension/provider.php')
-rw-r--r--phpBB/includes/extension/provider.php13
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);
}
}