public function testGetParameter() { $dic = new ServiceLocator(['foo' => 'bar']); $this->assertSame('bar', $dic->getParameter('foo')); }
use Framework\Kernel; use Framework\ControllerFactory; use Framework\Routing\Router; use Framework\Routing\Loader\CompositeFileLoader; use Framework\Routing\Loader\PhpFileLoader; use Framework\Routing\Loader\XmlFileLoader; use Framework\ServiceLocator\ServiceLocator; use Framework\Templating\PhpRenderer; use Framework\Templating\BracketRenderer; use Framework\Templating\TwigRendererAdapter; use Application\Repository\BlogPostRepository; $dic = new ServiceLocator(); $dic->setParameter('database.dsn', 'mysql:host=localhost;port=3306;dbname=lpdim2016')->setParameter('database.user', 'root')->setParameter('database.password', '')->setParameter('database.options', [\PDO::ATTR_AUTOCOMMIT => false, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF-8'"])->setParameter('router.file', __DIR__ . '/../app/config/routes.xml')->setParameter('app.view_dir', __DIR__ . '/../app/views')->setParameter('twig.options', ['cache' => __DIR__ . '/../app/cache/twig', 'debug' => true])->register('repository.blog_post', function (ServiceLocator $dic) { return new BlogPostRepository($dic->getService('database')); })->register('database', function (ServiceLocator $dic) { return new \PDO($dic->getParameter('database.dsn'), $dic->getParameter('database.user'), $dic->getParameter('database.password'), $dic->getParameter('database.options')); })->register('twig', function (ServiceLocator $dic) { return new \Twig_Environment(new \Twig_Loader_Filesystem($dic->getParameter('app.view_dir')), $dic->getParameter('twig.options')); })->register('renderer', function (ServiceLocator $dic) { return new TwigRendererAdapter($dic->getService('twig')); })->register('router', function (ServiceLocator $dic) { $loader = new CompositeFileLoader(); $loader->add(new PhpFileLoader()); $loader->add(new XmlFileLoader()); return new Router($dic->getParameter('router.file'), $loader); })->register('controller_factory', function (ServiceLocator $dic) { return new ControllerFactory(); }); $kernel = new Kernel($dic); $response = $kernel->handle(Request::createFromGlobals()); if ($response instanceof StreamableInterface) {
use Monolog\Handler\StreamHandler; use Monolog\Logger; use Symfony\Component\Yaml\Yaml; $settings = Yaml::parse(file_get_contents(__DIR__ . '/app/config/settings.yml')); $dic = new ServiceLocator($settings['parameters']); $dic->setParameter('database.options', [\PDO::ATTR_AUTOCOMMIT => false, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"]); $dic->setParameter('router.file', __DIR__ . '/app/config/routes.xml'); $dic->setParameter('app.views_dir', __DIR__ . '/app/views'); $dic->setParameter('twig.options', ['cache' => __DIR__ . '/../app/cache/twig', 'debug' => true]); $dic->setParameter('logger.log_file', __DIR__ . '/app/cache/app.log'); $dic->setParameter('session.options', ['session.name' => 'lpdim2016', 'session.save_path' => __DIR__ . '/app/sessions']); $dic->register('repository.blog_post', function (ServiceLocator $dic) { return new BlogPostRepository($dic->getService('database')); }); $dic->register('database', function (ServiceLocator $dic) { return new \PDO($dic->getParameter('database.dsn'), $dic->getParameter('database.user'), $dic->getParameter('database.password'), $dic->getParameter('database.options')); }); $dic->register('twig', function (ServiceLocator $dic) { return new \Twig_Environment(new \Twig_Loader_Filesystem($dic->getParameter('app.views_dir')), $dic->getParameter('twig.options')); }); $dic->register('renderer', function (ServiceLocator $dic) { return new TwigRendererAdapter($dic->getService('twig')); }); $dic->register('router', function (ServiceLocator $dic) { $loader = new CompositeFileLoader(); $loader->add(new PhpFileLoader()); $loader->add(new XmlFileLoader()); return new Router($dic->getParameter('router.file'), $loader); }); $dic->register('error_handler', function (ServiceLocator $dic) { return new ErrorHandler($dic->getService('renderer'), $dic->getParameter('app.environment'), $dic->getParameter('app.debug'));