$class = Foo::class;
$foo = new $class;
$bar = new $class->method();
queue_options: { name: 'queue' }
- это должно работать как для producers, так и для consumersold_sound_rabbit_mq.{producer-name}_producer
А как я, новичёк в Симфони, об этом должен был узнать?! Во всех мануалах пишут именно так.
my_queue1
вообще должен работать? Если следовать документации, то вам нужен old_sound_rabbit_mq.task_producer
Вообще-то будет работать.
src
классы не по PSR (присутствует что-то вроде framework-bundle/src/
?symfony/symfony
)? В защиту скажу, что исключить тесты из autoload можно гораздо проще и лаконичнее)))
src/Symfony/Bundles/framework-bundle/src/FrameworkBundle.php
src/Symfony/Bundles/framework-bundle/tests/KernelTestCase.php
src/Symfony/Bundles/framework-bundle/composer.json
"Symfony\\Bundle\\": "src/Symfony/Bundle/",
для всех бандлов"Symfony\\Bundle\\FrameworkBundle": "src/Symfony/Bundle/framework-bundle/src/",
- только для одногоК тому же, ссылаться на контроллер из модуля будет удобнее если модуль будет бандлом.
Removed support for bundle:controller:action syntax to reference controllers.
Большинство бандлов/модулей у вас будет пустыми, но в некоторых вам все же понадобится использовать Extension и CompilerPass.
_instanceof
и !tagged
CompilerPass уже и не нужны. Я ими давно не пользовался, по крайней мере.protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
{
$container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
$confDir = $this->getProjectDir().'/config';
$loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
$loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
$loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
$loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
// Складываю в директорию services кастомные конфиги модулей, если они нужны
// Они перезаписывают те, которые были созданы автоматически
$loader->load($confDir.'/{services}/**/*'.self::CONFIG_EXTS, 'glob');
}
Разработчики Symfony зря советуют не использовать бандлы. Ваши модули по сути и будут бандлы. Вы создаёте в модуле бандл в котором описываете метод интеграции модуля с фреймворком.
App\:
resource: '../src/*'
Размещение тестов непосредственно в самом модуле довольно спорное решение.
App/User
App/User/Controller
App/User/Entity
App/User/*
App/Blog
App/Blog/Controller
App/Blog/Entity
App/Blog/*
App/Events
App/Events/Controller
App/Events/Entity
App/Events/*
...