Autowiring a scalar with a named binding

Autowiring resolves by type, and a string has no type to resolve — so every service with a configuration value needs an explicit argument, which is the thing autowiring was meant to remove.

services:
    _defaults:
        autowire: true
        bind:
            string $projectDir: '%kernel.project_dir%'
            string $stripeKey: '%env(STRIPE_KEY)%'
            iterable $exporters: !tagged_iterator app.exporter

Binding by parameter name and type together is the 5.x form and is stricter than the old name-only version, which is worth adopting because it catches a name collision between two differently typed arguments. The failure mode is real and quiet: renaming a constructor parameter silently unbinds it, and the error appears at container compile rather than at the rename. lint:container in CI is what turns that into a build failure.