When I set 'db' as a shared service, it is not executed by Phalcon ! But the connection to database is success. I don't know how !
My code:
services.php
$di->setShared('db', function () {
$config = $this->getConfig();
$class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
$params = [
'host' => $config->database->host,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname,
'charset' => $config->database->charset
];
if ($config->database->adapter == 'Postgresql') {
unset($params['charset']);
}
$connection = new $class($params);
return $connection;
});
bootstrap_web.php
<?php
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Application;
error_reporting(E_ALL);
define('BASE_PATH', dirname(__DIR__));
define('APP_PATH', BASE_PATH . '/app');
try {
/**
* The FactoryDefault Dependency Injector automatically registers the services that
* provide a full stack framework. These default services can be overidden with custom ones.
*/
$di = new FactoryDefault();
/**
* Include general services
*/
require APP_PATH . '/config/services.php';
/**
* Include web environment specific services
*/
require APP_PATH . '/config/services_web.php';
/**
* Get config service for use in inline setup below
*/
$config = $di->getConfig();
/**
* Include Autoloader
*/
include APP_PATH . '/config/loader.php';
/**
* Handle the request
*/
$application = new Application($di);
/**
* Register application modules
*/
$application->registerModules([
'test' => ['className' => 'Project\Modules\Test\Module']
]);
/**
* Include routes
*/
// require APP_PATH . '/config/routes.php';
echo str_replace(["\n","\r","\t"], '', $application->handle()->getContent());
} catch (\Exception $e) {
echo $e->getMessage() . '<br>';
echo '<pre>' . $e->getTraceAsString() . '</pre>';
}
Am I doing something wrong ?