编程语言
首页 > 编程语言> > PHP-Symfony手动连接参数-‘arguments’与’bind’

PHP-Symfony手动连接参数-‘arguments’与’bind’

作者:互联网

我试图弄清楚如何手动将参数注入DefaultController(不带自动装配).
我发现有两种方法可以实现这一目标.

我可以使用参数:

services:
    _defaults:
        autowire: false
        autoconfigure: true
        public: true

    App\Service\SomeService: ~

    App\Controller\DefaultController:
        arguments:                                    #!
            $service: '@App\Service\SomeService'
            $scalar: 22

与此同时,我可以使用绑定键:

services:
    _defaults:
        autowire: false
        autoconfigure: true
        public: true

    App\Service\SomeService: ~

    App\Controller\DefaultController:
        bind:                                         #!
            $service: '@App\Service\SomeService'
            $scalar: 22

我的控制器:

class DefaultController extends Controller
{
    public function __construct($service, $scalar)
    {
        var_dump(get_class($service), $scalar);
    }
...

这两个选项产生相同的输出:

string(23) “App\Service\SomeService”
int(22)

那么,这两个配置键参数和bind之间有什么区别,它们是否做完全相同的事情?

解决方法:

通常在_de​​faults部分中使用bind替换该文件定义的服务中的任何匹配参数名称.

因此,从第二个示例中获取变量名称,并将其放入更常见的_defaults中:节

_defaults:
    # autowire / autoconfig, etc
    bind:                                         #!
        $service: '@App\Service\SomeService'
        $scalar: 22

具有这些变量名的任何服务都将被该服务或标量值(22)替换(除非在本地被覆盖).

标签:symfony4,symfony,php
来源: https://codeday.me/bug/20191025/1927017.html