Phosphorum\Bootstrap::initDatabase PHP Метод

initDatabase() защищенный Метод

Database connection is created based in the parameters defined in the configuration file.
protected initDatabase ( )
    protected function initDatabase()
    {
        $this->di->setShared('db', function () {
            /** @var DiInterface $this */
            $config = $this->getShared('config')->get('database')->toArray();
            $em = $this->getShared('eventsManager');
            $that = $this;
            $adapter = '\\Phalcon\\Db\\Adapter\\Pdo\\' . $config['adapter'];
            unset($config['adapter']);
            /** @var \Phalcon\Db\Adapter\Pdo $connection */
            $connection = new $adapter($config);
            // Listen all the database events
            $em->attach('db', function ($event, $connection) use($that) {
                /**
                 * @var \Phalcon\Events\Event $event
                 * @var \Phalcon\Db\AdapterInterface $connection
                 * @var DiInterface $that
                 */
                if ($event->getType() == 'beforeQuery') {
                    $variables = $connection->getSQLVariables();
                    $string = $connection->getSQLStatement();
                    if ($variables) {
                        $string .= ' [' . join(',', $variables) . ']';
                    }
                    // To disable logging change logLevel in config
                    $that->get('logger', ['db'])->debug($string);
                }
            });
            // Assign the eventsManager to the db adapter instance
            $connection->setEventsManager($em);
            return $connection;
        });
        $this->di->setShared('modelsManager', function () {
            /** @var DiInterface $this */
            $em = $this->getShared('eventsManager');
            $modelsManager = new ModelsManager();
            $modelsManager->setEventsManager($em);
            return $modelsManager;
        });
        $this->di->setShared('modelsMetadata', function () {
            /** @var DiInterface $this */
            $config = $this->getShared('config');
            $config = $config->get('metadata')->toArray();
            $adapter = '\\Phalcon\\Mvc\\Model\\Metadata\\' . $config['adapter'];
            unset($config['adapter']);
            $metaData = new $adapter($config);
            return $metaData;
        });
    }