1: <?php
2:
3: namespace PHPixie\Route;
4:
5: class Builder
6: {
7: protected $instances = array();
8:
9: public function translator($resolver, $configData, $httpContextContainer = null)
10: {
11: return new Translator(
12: $this,
13: $resolver,
14: $configData,
15: $httpContextContainer
16: );
17: }
18:
19: public function matcherPattern($pattern, $defaultParameterPattern = '.+?', $parameterPatterns = array())
20: {
21: return new Matcher\Pattern(
22: $pattern,
23: $defaultParameterPattern,
24: $parameterPatterns
25: );
26: }
27:
28: public function translatorMatch($attributes = array(), $path = null)
29: {
30: return new Translator\Match(
31: $attributes,
32: $path
33: );
34: }
35:
36: public function translatorFragment($path = null, $host = null, $serverRequest = null)
37: {
38: return new Translator\Fragment(
39: $path,
40: $host,
41: $serverRequest
42: );
43: }
44:
45: public function translatorTarget($translator, $resolverPath)
46: {
47: return new Translator\Target(
48: $translator,
49: $resolverPath
50: );
51: }
52:
53: public function matcher()
54: {
55: return $this->instance('matcher');
56: }
57:
58: public function resolvers()
59: {
60: return $this->instance('resolvers');
61: }
62:
63: protected function instance($name)
64: {
65: if(!array_key_exists($name, $this->instances)) {
66: $method = 'build'.ucfirst($name);
67: $this->instances[$name] = $this->$method();
68: }
69:
70: return $this->instances[$name];
71: }
72:
73: protected function buildMatcher()
74: {
75: return new Matcher();
76: }
77:
78: protected function buildResolvers()
79: {
80: return new Resolvers(
81: $this
82: );
83: }
84: }