1: <?php
2:
3: namespace PHPixie\Filesystem\Locators\Locator;
4:
5: class Prefix implements \PHPixie\Filesystem\Locators\Locator,
6: \PHPixie\Filesystem\Locators\Registry
7: {
8: protected $locatorBuilder;
9: protected $locatorsConfig;
10: protected $defaultPrefix;
11:
12: protected $locators = array();
13:
14: public function __construct($locatorBuilder, $configData)
15: {
16: $this->locatorBuilder = $locatorBuilder;
17: $this->locatorsConfig = $configData->slice('locators');
18: $this->defaultPrefix = $configData->get('defaultPrefix', 'default');
19: }
20:
21: public function get($name)
22: {
23: if(!array_key_exists($name, $this->locators)) {
24: $locatorConfig = $this->locatorsConfig->slice($name);
25: $this->locators[$name] = $this->locatorBuilder->buildFromConfig($locatorConfig);
26: }
27:
28: return $this->locators[$name];
29: }
30:
31: public function locate($name, $isDirectory = false)
32: {
33: $split = explode(':', $name, 2);
34: if(count($split) > 1) {
35: list($prefix, $name) = $split;
36:
37: }else{
38: $prefix = $this->defaultPrefix;
39: $name = $name;
40: }
41:
42: return $this->get($prefix)->locate($name, $isDirectory);
43: }
44: }
45: