/** * @param $name * * @throws \Exception */ public function __get($name) { if (property_exists($this, $name) && $this->{$name} !== null) { //处理自定义的属性或者获取已经注入的属性服务 return $this->{$name}; } if ($this->_di->has($name)) { //不然就去获取di中的属性 $this->{$name} = $this->_di->get($name); return $this->{$name}; } throw new \Exception("property {$name} is not defined in " . __CLASS__); }
/** * @param Request $request * @return IController * @throws ApiException */ public function create(Request $request) { $name = $this->getName($request); return $this->container->createService('controller.' . $name); }
public function testKeys() { $diContainer = new DiContainer(); $diContainer['foo'] = 123; $diContainer['bar'] = 123; $this->assertEquals(array('foo', 'bar'), $diContainer->keys()); }
public static function create() { $container = new DiContainer(); $container->registerService('application', function (DiContainer $container) { return new \Eshopino\Api\Application($container->getService('requestFactory'), $container->getService('controllerFactory'), $container->getService('configuration')); }); $container->registerService('requestFactory', function (DiContainer $container) { return new \Eshopino\Api\RequestFactory($container->getService('configuration')); }); $container->registerService('controllerFactory', function (DiContainer $container) { return new \Eshopino\Api\ControllerFactory($container); }); $container->registerService('controller.OrderCreate', function (DiContainer $container) { return new \Eshopino\Api\Controllers\OrderCreateController($container->getService('itemManager'), $container->getService('orderManager'), $container->getService('configuration')); }); $container->registerService('controller.OrderStatus', function (DiContainer $container) { return new \Eshopino\Api\Controllers\OrderStatusController($container->getService('orderManager')); }); $container->registerService('controller.ItemStatus', function (DiContainer $container) { return new \Eshopino\Api\Controllers\ItemStatusController($container->getService('itemManager')); }); $container->registerService('configuration', function (DiContainer $container) { return new \Eshopino\Api\Configuration(); }); return $container; }
/** * Get PDO object * * @return PDO|null */ public static function getDb() { return DiContainer::build('db')->getConnection(); }