1: <?php
2:
3: namespace PHPixie\Template;
4:
5: class Resolver
6: {
7: protected $compiler;
8: protected $filesystemLocator;
9: protected $overrides;
10: protected $map = array();
11:
12: public function __construct($compiler, $filesystemLocator, $configData)
13: {
14: $this->compiler = $compiler;
15: $this->filesystemLocator = $filesystemLocator;
16: $this->overrides = $configData->get('overrides', array());
17: }
18:
19: public function resolve($name)
20: {
21: if(array_key_exists($name, $this->map)) {
22: return $this->map[$name];
23: }
24:
25: if(array_key_exists($name, $this->overrides)) {
26: $templateName = $this->overrides[$name];
27:
28: }else{
29: $templateName = $name;
30: }
31:
32: $file = $this->filesystemLocator->locate($templateName);
33: if($file === null) {
34: throw new \PHPixie\Template\Exception("Template '$name' could not be found");
35: }
36:
37: $file = $this->compiler->compile($file);
38:
39: $this->map[$name] = $file;
40:
41: return $file;
42: }
43: }