setShared(Services::CONFIG, $config); /** * @description Phalcon - \Phalcon\Db\Adapter\Pdo\Mysql */ $di->set(Services::DB, function () use ($config, $di) { $config = $config->get('database')->toArray(); $adapter = $config['adapter']; unset($config['adapter']); $class = 'Phalcon\Db\Adapter\Pdo\\' . $adapter; $connection = new $class($config); // Assign the eventsManager to the db adapter instance $connection->setEventsManager($di->get(Services::EVENTS_MANAGER)); return $connection; }); /** * @description Phalcon - \Phalcon\Mvc\Url */ $di->set(Services::URL, function () use ($config) { $url = new UrlResolver; $url->setBaseUri($config->get('application')->baseUri); return $url; }); /** * @description Phalcon - \Phalcon\Mvc\View\Simple */ $di->set(Services::VIEW, function () use ($config) { $view = new View; $view->setViewsDir($config->get('application')->viewsDir); return $view; }); /** * @description Phalcon - EventsManager */ $di->setShared(Services::EVENTS_MANAGER, function () use ($di, $config) { return new EventsManager; }); /** * @description Phalcon - TokenParsers */ $di->setShared(Services::TOKEN_PARSER, function () use ($di, $config) { return new JWTTokenParser($config->get('authentication')->secret, JWTTokenParser::ALGORITHM_HS256); }); /** * @description Phalcon - AuthManager */ $di->setShared(Services::AUTH_MANAGER, function () use ($di, $config) { $authManager = new AuthManager($config->get('authentication')->expirationTime); $authManager->registerAccountType(UsernameAccountType::NAME, new UsernameAccountType); return $authManager; }); /** * @description Phalcon - \Phalcon\Mvc\Model\Manager */ $di->setShared(Services::MODELS_MANAGER, function () use ($di) { $modelsManager = new ModelsManager; return $modelsManager->setEventsManager($di->get(Services::EVENTS_MANAGER)); }); /** * @description PhalconRest - \League\Fractal\Manager */ $di->setShared(Services::FRACTAL_MANAGER, function () { $fractal = new FractalManager; $fractal->setSerializer(new CustomSerializer); return $fractal; }); /** * @description PhalconRest - \PhalconRest\User\Service */ $di->setShared(Services::USER_SERVICE, new UserService); } }