Example #1
0
 public function testGetService()
 {
     $dic = new ServiceLocator();
     $dic->register('foo', function () {
         return new \stdClass();
     });
     $this->assertInstanceOf('stdClass', $dic->getService('foo'));
 }
Example #2
0
 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());
 }
Example #3
0
 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'));
 }
Example #4
0
require_once __DIR__ . '/../vendor/autoload.php';
use Framework\Http\Request;
use Framework\Http\StreamableInterface;
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();
Example #5
0
<?php

require_once __DIR__ . '/../vendor/autoload.php';
use Application\Controller\HelloWorldAction;
use Framework\Http\Request;
use Framework\Http\StreamableInterface;
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\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'));
Example #6
0
use Framework\HttpKernel;
use Framework\KernelEvents;
use Framework\RouterListener;
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\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'));
});