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之间有什么区别,它们是否做完全相同的事情?
解决方法:
通常在_defaults部分中使用bind替换该文件定义的服务中的任何匹配参数名称.
因此,从第二个示例中获取变量名称,并将其放入更常见的_defaults中:节
_defaults:
# autowire / autoconfig, etc
bind: #!
$service: '@App\Service\SomeService'
$scalar: 22
具有这些变量名的任何服务都将被该服务或标量值(22)替换(除非在本地被覆盖).
标签:symfony4,symfony,php 来源: https://codeday.me/bug/20191025/1927017.html