クリーンウェイ-2018+、Symfony 3.4+
2017年とSymfony3.3+ 3.4以降、はるかにクリーンな方法があります-セットアップと使用が簡単です。
コンテナとサービス/パラメータロケータのアンチパターンを使用する代わりに、コンストラクタを介してクラスにパラメータを渡すことができます。心配しないでください。時間のかかる作業ではなく、一度セットアップしてアプローチを忘れてください。
2つのステップで設定するにはどうすればよいですか?
1.1。app/config/services.yml
# 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 ...)用に更新されています)。