app.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. use demo\AppRoute;
  3. use demo\Logger;
  4. use demo\Services\NavBuilder;
  5. use demo\Services\Timer;
  6. use Demo\UserConverter;
  7. use Silex\Application;
  8. use Silex\Provider\AssetServiceProvider;
  9. use Silex\Provider\TwigServiceProvider;
  10. use Silex\Provider\ServiceControllerServiceProvider;
  11. use Silex\Provider\HttpFragmentServiceProvider;
  12. use Symfony\Component\HttpFoundation\Request;
  13. $app = new Application();
  14. // Non-closure classes are used as parameters, not Pimple services, but may
  15. // nonetheless be used as such.
  16. $app['timer'] = Timer::create();
  17. // Closures are the basic form of Pimple services.
  18. $app['logger'] = function () { return new Logger(); };
  19. $app['nav_builder'] = function ($app) { return NavBuilder::create($app); };
  20. $app->register(new ServiceControllerServiceProvider());
  21. $app->register(new AssetServiceProvider());
  22. $app->register(new TwigServiceProvider());
  23. $app->register(new HttpFragmentServiceProvider());
  24. $app['twig'] = $app->extend('twig', function ($twig, $app) {
  25. // add custom globals, filters, tags, ...
  26. return $twig;
  27. });
  28. $app['converter.user'] = function () {
  29. return new UserConverter();
  30. };
  31. $app['route_class'] = AppRoute::class;
  32. // Support PATCH/PUT/DELETE.. emulation on POST for browsers. Beware XSS.
  33. Request::enableHttpMethodParameterOverride();
  34. return $app;