Kernel.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App;
  3. use App\Swoole\EntityManagerHandler;
  4. use App\Swoole\SrandStartHandler;
  5. use K911\Swoole\Server\RequestHandler\RequestHandlerInterface;
  6. use K911\Swoole\Server\WorkerHandler\WorkerStartHandlerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
  8. use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  9. use Symfony\Component\DependencyInjection\ContainerBuilder;
  10. use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
  11. use Symfony\Component\DependencyInjection\Reference;
  12. use Symfony\Component\HttpKernel\Kernel as BaseKernel;
  13. use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
  14. class Kernel extends BaseKernel implements CompilerPassInterface
  15. {
  16. use MicroKernelTrait;
  17. protected function configureContainer(ContainerConfigurator $container): void
  18. {
  19. $container->parameters()->set('container.dumper.inline_factories', true);
  20. $container->parameters()->set('container.dumper.inline_class_loader', true);
  21. $container->import('../config/{packages}/*.yaml');
  22. $container->import('../config/{packages}/'.$this->environment.'/*.yaml');
  23. $container->import('../config/{packages}/'.$this->environment.'/*.php');
  24. $container->import('../config/{services}.yaml');
  25. $container->import('../config/{services}_'.$this->environment.'.yaml');
  26. }
  27. protected function configureRoutes(RoutingConfigurator $routes): void
  28. {
  29. $routes->import('../config/{routes}/'.$this->environment.'/*.yaml');
  30. $routes->import('../config/{routes}/*.yaml');
  31. $routes->import('../config/{routes}.yaml');
  32. }
  33. public function process(ContainerBuilder $container)
  34. {
  35. if ($this->environment !== 'swoole') {
  36. return;
  37. }
  38. $container->register(EntityManagerHandler::class, EntityManagerHandler::class)
  39. ->addArgument(new Reference(EntityManagerHandler::class.'.inner'))
  40. ->setAutowired(true)
  41. ->setAutoconfigured(true)
  42. ->setPublic(false)
  43. ->setDecoratedService(RequestHandlerInterface::class, null, -20)
  44. ;
  45. $container->register(SrandStartHandler::class, SrandStartHandler::class)
  46. ->addArgument(new Reference(SrandStartHandler::class.'.inner'))
  47. ->setAutowired(true)
  48. ->setAutoconfigured(true)
  49. ->setPublic(false)
  50. ->setDecoratedService(WorkerStartHandlerInterface::class)
  51. ;
  52. }
  53. }