1: <?php
2:
3: namespace PHPixie;
4:
5: use PHPixie\Bundles\Bundle\Provides;
6: use PHPixie\DefaultBundle\Builder;
7: use PHPixie\Filesystem\Root;
8:
9: /**
10: * Default base bundle
11: * @package PHPixie
12: */
13: abstract class DefaultBundle implements Provides\HTTPProcessor,
14: Provides\ORM,
15: Provides\RouteResolver,
16: Provides\TemplateLocator,
17: Provides\Auth,
18: Provides\WebRoot
19: {
20: /**
21: * @var Builder
22: */
23: protected $builder;
24:
25: /**
26: * Constructor
27: * @param BundleFramework\Builder $frameworkBuilder
28: */
29: public function __construct($frameworkBuilder)
30: {
31: $this->builder = $this->buildBuilder($frameworkBuilder);
32: }
33:
34: /**
35: * Name of the bundle
36: * @return string
37: */
38: public function name()
39: {
40: return $this->builder->bundleName();
41: }
42:
43: /**
44: * Processor used for HTTP requests
45: * @return Processors\Processor|null
46: */
47: public function httpProcessor()
48: {
49: return $this->builder->httpProcessor();
50: }
51:
52: /**
53: * Route resolver for routing HTTP requests
54: * @return Route\Resolvers\Resolver|null
55: */
56: public function routeResolver()
57: {
58: return $this->builder->routeResolver();
59: }
60:
61: /**
62: * Filesystem locator for templates
63: * @return Filesystem\Locators\Locator|null
64: */
65: public function templateLocator()
66: {
67: return $this->builder->templateLocator();
68: }
69:
70: /**
71: * Orm config data
72: * @return Slice\Data|null
73: */
74: public function ormConfig()
75: {
76: return $this->builder->ormConfig();
77: }
78:
79: /**
80: * Configuration options passed to the bundle.
81: *
82: * Defined in /assets/config/bundles/<bundle name>
83: * @return Slice\Data
84: */
85: public function config()
86: {
87: return $this->builder->config();
88: }
89:
90: /**
91: * ORM wrapper
92: * @return ORM\Wrappers|null
93: */
94: public function ormWrappers()
95: {
96: return $this->builder->ormWrappers();
97: }
98:
99: /**
100: * User repositories for auth component
101: * @return Auth\Repositories|null
102: */
103: public function authRepositories()
104: {
105: return $this->builder->authRepositories();
106: }
107:
108: /**
109: * Web folder root
110: * @return Root|null
111: */
112: public function webRoot()
113: {
114: return $this->builder->webRoot();
115: }
116:
117: /**
118: * Build bundle builder
119: * @param BundleFramework\Builder $frameworkBuilder
120: * @return Builder
121: */
122: abstract protected function buildBuilder($frameworkBuilder);
123: }