$provider) { $this->addProvider($name, $provider); } } public function addProvider($name, ProviderInterface $provider) { $this->providers[$name] = $provider; } public function populate(Closure $loggerClosure) { foreach ($this->providers as $name => $provider) { $provider->populate(function($text) use ($name, $loggerClosure) { $loggerClosure(sprintf('Indexing %s, %s', $name, $text)); }); } } }