use Pagekit\Event\PrefixEventDispatcher; return ['name' => 'database', 'main' => function ($app) { $default = ['wrapperClass' => 'Pagekit\\Database\\Connection']; $app['dbs'] = function () use($default) { $dbs = []; foreach ($this->config['connections'] as $name => $params) { $dbs[$name] = DriverManager::getConnection(array_replace($default, $params)); } return $dbs; }; $app['db'] = function ($app) { return $app['dbs'][$this->config['default']]; }; $app['db.em'] = function ($app) { return new EntityManager($app['db'], $app['db.metas'], $app['db.events']); }; $app['db.metas'] = function ($app) { $manager = new MetadataManager($app['db'], $app['db.events']); $manager->setLoader(new AnnotationLoader()); $manager->setCache($app['cache.phpfile']); return $manager; }; $app['db.events'] = function ($app) { return new PrefixEventDispatcher('model.', $app['events']); }; $app['db.debug_stack'] = function () { return new DebugStack(); }; Type::overrideType(Type::SIMPLE_ARRAY, '\\Pagekit\\Database\\Types\\SimpleArrayType'); Type::overrideType(Type::JSON_ARRAY, '\\Pagekit\\Database\\Types\\JsonArrayType'); }, 'autoload' => ['Pagekit\\Database\\' => 'src'], 'config' => ['default' => 'mysql', 'connections' => ['mysql' => ['driver' => 'pdo_mysql', 'dbname' => '', 'host' => 'localhost', 'user' => 'root', 'password' => '', 'engine' => 'InnoDB', 'charset' => 'utf8', 'collate' => 'utf8_unicode_ci', 'prefix' => '', 'driverOptions' => [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8 COLLATE utf8_unicode_ci']]]]];