1: <?php
2: namespace Pharborist;
3:
4: class SourceDiscovery {
5: 6: 7:
8: protected $extensions;
9:
10: 11: 12:
13: protected $callback;
14:
15: public function __construct($callback, $extensions = ['php']) {
16: $this->callback = $callback;
17: $this->extensions = $extensions;
18: }
19:
20: public function scanDirectory($directory) {
21: $directory_iterator = new \RecursiveDirectoryIterator($directory);
22: $iterator = new \RecursiveIteratorIterator($directory_iterator);
23: $pattern = '/^.+\.(' . implode('|', $this->extensions) . ')$/i';
24: $regex = new \RegexIterator($iterator, $pattern, \RecursiveRegexIterator::GET_MATCH);
25: $callback = $this->callback;
26: foreach ($regex as $name => $object) {
27: $callback($name);
28: }
29: }
30: }
31: