89 lines
2.4 KiB
PHP
89 lines
2.4 KiB
PHP
|
<?php
|
||
|
|
||
|
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
|
||
|
use Symfony\Component\Config\Loader\LoaderInterface;
|
||
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||
|
use Symfony\Component\HttpFoundation\Request;
|
||
|
use Symfony\Component\HttpKernel\Kernel;
|
||
|
use Symfony\Component\Routing\RouteCollectionBuilder;
|
||
|
use Symfony\Component\HttpFoundation\Response;
|
||
|
|
||
|
// require Composer's autoloader
|
||
|
require __DIR__.'/../vendor/autoload.php';
|
||
|
|
||
|
class AppKernel extends Kernel
|
||
|
{
|
||
|
// Utilisation du trait "MicroKernel"
|
||
|
use MicroKernelTrait;
|
||
|
|
||
|
// Ajout des bundles
|
||
|
public function registerBundles()
|
||
|
{
|
||
|
return array(
|
||
|
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
|
||
|
new Symfony\Bundle\TwigBundle\TwigBundle(),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// Configuration des bundles - équivalent d'une config.yml
|
||
|
protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
|
||
|
{
|
||
|
// PHP equivalent of config.yml
|
||
|
$c->loadFromExtension('framework', array(
|
||
|
'secret' => 'S0ME_SECRET',
|
||
|
'templating' => [
|
||
|
'engine' => [
|
||
|
'twig'
|
||
|
],
|
||
|
],
|
||
|
));
|
||
|
$c->loadFromExtension('twig', [
|
||
|
'default_path' => __DIR__.'/../templates',
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
// Configuration des routes
|
||
|
protected function configureRoutes(RouteCollectionBuilder $routes)
|
||
|
{
|
||
|
$routes->add('/random/{limit}', 'kernel:randomAction');
|
||
|
$routes->add('/twig', 'kernel:twigAction');
|
||
|
}
|
||
|
|
||
|
public function twigAction()
|
||
|
{
|
||
|
$container = $this->getContainer();
|
||
|
$twig = $container->get('twig');
|
||
|
return new Response($twig->render('index.html.twig'));
|
||
|
}
|
||
|
|
||
|
// Définition d'une route
|
||
|
public function randomAction($limit)
|
||
|
{
|
||
|
return new JsonResponse(array(
|
||
|
'number' => rand(0, $limit)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
// Configuration des répertoires de cache et logs
|
||
|
// Ces répertoires ne devrait pas être contenus dans la racine "web"
|
||
|
|
||
|
public function getCacheDir()
|
||
|
{
|
||
|
return __DIR__.'/../var/cache/'.$this->getEnvironment();
|
||
|
}
|
||
|
|
||
|
public function getLogDir()
|
||
|
{
|
||
|
return __DIR__.'/../var/logs';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Définition de l'environnement
|
||
|
|
||
|
$kernel = new AppKernel('dev', true);
|
||
|
$request = Request::createFromGlobals();
|
||
|
$response = $kernel->handle($request);
|
||
|
$response->send();
|
||
|
$kernel->terminate($request, $response);
|