#2 | Phalcon\Db\Adapter\Pdo->__construct(Array([adapter] => Mysql, [host] => localhost, [username] => dewa, [password] => dewa, [dbname] => dewa, [charset] => utf8))
<?php
use \Kotarosoft\Mail;
use \Kotarosoft\Tag;
use \Kotarosoft\AssetsManager;
use \Phalcon\Logger as Logger;
use \Phalcon\Logger\Adapter\File as LoggerAdapter;
use \Phalcon\Mvc\Dispatcher as Dispatcher;
use \Phalcon\Session\Adapter\Files as SessionAdapter;
$loader = new \Phalcon\Loader();
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir,
$config->application->libraryDir,
)
)->register();
$di = new \Phalcon\DI\FactoryDefault();
$config->merge($theme_config);
$di->setShared('config', $config);
$di->setShared('url', function () use ($config) {
$url = new \Phalcon\Mvc\Url();
$url->setBaseUri($config->application->baseUri);
if (strpos($_SERVER['SERVER_NAME'], 'preview') === false) {
$url->setBaseUri('/');
} else {
$url->setBaseUri($config->application->baseUri);
}
return $url;
});
$di->setShared('view', function () use ($config) {
$view = new \Phalcon\Mvc\View();
$view->setViewsDir($config->application->viewsDir);
$view->registerEngines(array(
'.volt' => function ($view, $di) use ($config) {
$volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(array(
'compiledPath' => $config->application->cacheDir,
'compiledSeparator' => '_',
'compileAlways' => $config->application->debug,
));
require $config->application->voltFile;
return $volt;
},
));
return $view;
});
$di->setShared('db', function () use ($config) {
$connection = new \Phalcon\Db\Adapter\Pdo\Mysql((array) $config->database);
if ($config->application->debugSql == true) {
$eventsManager = new \Phalcon\Events\Manager();
$logger = new LoggerAdapter($config->application->logFile);
$formatter = new \Phalcon\Logger\Formatter\Line("%date% [%type%] %message%", 'Y-m-d H:i:s');
$logger->setFormatter($formatter);
$eventsManager->attach('db', function ($event, $connection) use ($logger) {
if ($event->getType() == 'beforeQuery') {
$logger->log($connection->getSQLStatement(), Logger::INFO);
}
});
$connection->setEventsManager($eventsManager);
}
return $connection;
});
$di->setShared('modelsMetadata', function () use ($config) {
return new \Phalcon\Mvc\Model\Metadata\Memory();
});
$di->setShared('session', function () {
$session = new SessionAdapter();
$session->start();
return $session;
});
$di->setShared('crypt', function () use ($config) {
$crypt = new \Phalcon\Crypt();
$crypt->setKey($config->application->cryptSalt);
return $crypt;
});
//http://forum.phalconphp.com/discussion/215/flash-css-classes-not-working-for-me
$di->setShared('flash', function () {
return new \Phalcon\Flash\Session(array(
'error' => 'alert alert-danger alert-dismissable',
'success' => 'alert alert-success alert-dismissable',
'notice' => 'alert alert-info alert-dismissable',
));
});
$di->setShared('dispatcher', function () {
$dispatcher = new Dispatcher();
return $dispatcher;
});
$di->setShared('router', function () use ($config) {
$router = new \Phalcon\Mvc\Router(false);
$router->removeExtraSlashes(true);
require $config->application->routeFile;
// some default settings
$router->add('/rss.xml', array('controller' => 'rss', 'action' => 'index'));
$router->add('/sendmail', array('controller' => 'contacts', 'action' => 'send'));
$router->add('/', array('controller' => 'index', 'action' => 'index'));
$router->notFound(array('controller' => 'index', 'action' => 'route404'));
return $router;
});
$di->setShared('mail', function () use ($config) {
return new Mail($config);
});
$di->setShared('tag', function () use ($config) {
return new Tag($config);
});
$di->setShared('assets', function () use ($config) {
$assets = new AssetsManager($config);
return $assets;
});
|