1: <?php
2:
3: namespace PHPixie\Filesystem\Locators\Locator;
4:
5: class Group
6: {
7: protected $locatorBuilder;
8: protected $locatorsConfig;
9:
10: protected $locators;
11:
12: public function __construct($locatorBuilder, $configData)
13: {
14: $this->locatorBuilder = $locatorBuilder;
15: $this->locatorsConfig = $configData->slice('locators');
16: }
17:
18: protected function locators()
19: {
20: if($this->locators === null) {
21: $this->locators = array();
22: foreach($this->locatorsConfig->keys(null, true) as $key) {
23: $locatorConfig = $this->locatorsConfig->slice($key);
24: $this->locators[] = $this->locatorBuilder->buildFromConfig($locatorConfig);
25: }
26: }
27:
28: return $this->locators;
29: }
30:
31: public function locate($name, $isDirectory = false)
32: {
33: $path = null;
34: foreach($this->locators() as $locator) {
35: $path = $locator->locate($name, $isDirectory);
36: if($path !== null) {
37: break;
38: }
39: }
40:
41: return $path;
42: }
43: }