Created
January 29, 2016 17:08
Revisions
-
Paul M. Jones created this gist
Jan 29, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,60 @@ <?php $di = $app->getContainer(); // ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // Twig $di->set('view', function () use ($di) { $settings = $di->get('settings'); $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']); // Add extensions $view->addExtension(new Slim\Views\TwigExtension($di->get('router'), $di->get('request')->getUri())); $view->addExtension(new Twig_Extension_Debug()); return $view; }); // Flash messages $di->set('flash', $di->lazyNew('\Slim\Flash\Messages')); // Set Callable Resolver $di->set('callableResolver', new App\CallableResolver($di)); // ----------------------------------------------------------------------------- // Service factories // ----------------------------------------------------------------------------- // monolog $di->params['Monolog\Logger']['name'] = $settings['logger']['name']; $di->set('logger', function () use ($di) { $logger = $di->newInstance('Monolog\Logger'); $logger->pushProcessor(new \Monolog\Processor\UidProcessor()); $logger->pushHandler(new \Monolog\Handler\StreamHandler($settings['logger']['path'], \Monolog\Logger::DEBUG)); return $logger; }); // doctrine settings $di->set('settings:database', function () use ($di) { $settings = $di->get('settings'); return $settings['database']; }); // Lazyloading doctrine $di->set('db', $di->lazy( ['\Doctrine\DBAL\DriverManager', 'getConnection'], $di->lazyGet('settings:database'), $di->lazyNew('\Doctrine\DBAL\Configuration') )); // Model Injections $di->params['App\Model\AbstractModel']['db'] = $di->lazyGet('db'); // Controller Injections // Inject view and logger using setter injection $di->setters['App\Controller\AbstractController']['setView'] = $di->lazyGet('view'); $di->setters['App\Controller\AbstractController']['setLogger'] = $di->lazyGet('logger'); // Simply pass a usermodel object // @TODO, Pass Services to controller instead of Models $di->params['App\Controller\HomeController']['user'] = $di->lazyNew('App\Model\UserModel');