清洁之路 2018
自2018年和Symfony 3.4以来,有更干净的方式 - 易于设置和使用。
您可以使用容器和服务/参数定位器反模式,而是可以通过它的构造函数将参数传递给类。别担心,这不是耗时的工作,而是设置一次并忘记方法。
如何通过2个步骤进行设置?
1.config.yml
# config.yml
parameters:
api_pass: 'secret_password'
api_user: 'my_name'
services:
_defaults:
autowire: true
bind:
$apiPass: '%api_pass%'
$apiUser: '%api_user%'
App\:
resource: ..
2. 任何Controller
<?php declare(strict_types=1);
final class ApiController extends SymfonyController
{
/**
* @var string
*/
private $apiPass;
/**
* @var string
*/
private $apiUser;
public function __construct(string $apiPass, string $apiUser)
{
$this->apiPass = $apiPass;
$this->apiUser = $apiUser;
}
public function registerAction(): void
{
var_dump($this->apiPass); // "secret_password"
var_dump($this->apiUser); // "my_name"
}
}
即时升级准备就绪!
如果您使用较旧的方法,则可以使用Rector自动执行。
阅读更多
这称为基于服务定位器的构造函数注入方法。
要了解有关此内容的更多信息,请查看我的帖子 如何在Symfony控制器中获取参数 干净的方式。
(它经过测试,我为新的Symfony主要版本(5,6...)保持更新)。