The Clean Way - 2018+, Symfony 3.4+
ตั้งแต่ปี 2560 และ Symfony 3.3 + 3.4มีวิธีที่สะอาดกว่ามาก - ติดตั้งและใช้งานง่าย
แทนการใช้ภาชนะบรรจุและการบริการ / พารามิเตอร์ระบุตำแหน่งต่อต้านรูปแบบที่คุณสามารถส่งผ่านพารามิเตอร์ในชั้นเรียนผ่านมันคอนสตรัค ไม่ต้องกังวลมันไม่ใช่งานที่ต้องใช้เวลา แต่ต้องติดตั้งเพียงครั้งเดียวและลืมวิธีการ
วิธีการตั้งค่าใน 2 ขั้นตอน?
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"
}
}
พร้อมอัพเกรดทันที!
ในกรณีที่คุณใช้วิธีการเก่าคุณสามารถอัตโนมัติกับอธิการบดี
อ่านเพิ่มเติม
นี้เรียกว่าการฉีดนวกรรมิกมากกว่าบริการระบุตำแหน่งวิธีการ
เพื่ออ่านข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ให้ตรวจสอบการโพสต์ของฉันวิธีการรับพารามิเตอร์ใน Symfony ควบคุมวิธีทำความสะอาด
(ผ่านการทดสอบแล้วและฉันจะคอยอัปเดตสำหรับเวอร์ชันหลัก Symfony ใหม่ (5, 6 ... ))
get
วิธีการในคอนโทรลเลอร์ใช้คอนเทนเนอร์ด้วย แต่สามารถรับบริการได้จากคอนเทนเนอร์เท่านั้นไม่ใช่พารามิเตอร์ คุณต้องgetParameter
รับพารามิเตอร์