public function testGetService() { $dic = new ServiceLocator(); $dic->register('foo', function () { return new \stdClass(); }); $this->assertInstanceOf('stdClass', $dic->getService('foo')); }
public function testShortcutProtectedMethod() { $renderer = $this->getMock(ResponseRendererInterface::class); $renderer->expects($this->once())->method('renderResponse')->willReturn(new Response(200, 'HTTP', '1.1', [], 'RESPONSE')); $dic = new ServiceLocator(['foo' => 'bar']); $dic->register('qux', function () { return new \stdClass(); }); $dic->register('renderer', function () use($renderer) { return $renderer; }); $action = new Action(); $action->setServiceLocator($dic); $this->assertInstanceOf(Response::class, $action->render('foo/bar.twig', ['foo' => 'bar'])); $this->assertInstanceOf(RedirectResponse::class, $action->redirect('http:/foo.com')); $this->assertInstanceOf('stdClass', $action->getService('qux')); $this->assertSame('bar', $action->getParameter('foo')); }
public function testHandleRequest() { $dic = new ServiceLocator(); $dic->register('http_kernel', function () { return new DummyHttpKernel(); }); $kernel = new Kernel($dic); $response = $kernel->handle(Request::create('GET', '/')); $this->assertInstanceOf(Response::class, $response); $this->assertSame('DUMMY!', $response->getBody()); }
use Framework\Routing\Loader\CompositeFileLoader; use Framework\Routing\Loader\PhpFileLoader; use Framework\Routing\Loader\XmlFileLoader; use Framework\ServiceLocator\ServiceLocator; use Framework\Templating\TwigRendererAdapter; $dic = new ServiceLocator(); $dic = new ServiceLocator(); $dic->setParameter('database.dsn', 'mysql:host=localhost;port=3306;dbname=phpdim2016'); $dic->setParameter('database.user', 'root'); $dic->setParameter('database.password', 'root'); $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->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('controller_factory', function () { return new ControllerFactory();
use Framework\Session\Driver\NativeDriver; use Framework\Session\Session; use Framework\Templating\TwigRendererAdapter; 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);