services: _defaults: autowire: true autoconfigure: true PhpQml\Bridge\: resource: '../src/' exclude: - '../src/BridgeBundle.php' PhpQml\Bridge\SessionAuthenticator: arguments: $expectedToken: '%env(default::BRIDGE_TOKEN)%' # Maker classes extend symfony/maker-bundle's AbstractMaker, which is a # require-dev dependency. In `composer install --no-dev` builds (the # staging-symfony tree the AppImage is assembled from) AbstractMaker is # absent: PHP fails to autoload BridgeResourceMaker etc., so the glob # above silently drops them — that's fine. But a top-level explicit # `services.PhpQml\Bridge\Maker\BridgeResourceMaker:` block forces # ResolveClassPass to load the class regardless of dev/prod, which then # crashes the prod container compile. Scope the qml_path injection to # `when@dev:` so prod builds never touch these definitions. when@dev: services: # _defaults must be repeated here — `when@` opens a fresh # services block, so the top-level autowire/autoconfigure don't # carry over. Without autoconfigure the explicit definitions # below would lose maker-bundle's `maker.command` tag, and # `make:bridge:resource` would silently disappear from the # console while `make:bridge:command` (registered by the glob, # no override) keeps working. _defaults: autowire: true autoconfigure: true PhpQml\Bridge\Maker\BridgeResourceMaker: arguments: $qmlPath: '%bridge.qml_path%' PhpQml\Bridge\Maker\BridgeWindowMaker: arguments: $qmlPath: '%bridge.qml_path%' PhpQml\Bridge\Maker\BridgeEventMaker: arguments: $qmlPath: '%bridge.qml_path%' PhpQml\Bridge\Maker\BridgeReadModelMaker: arguments: $qmlPath: '%bridge.qml_path%'