Autowiring & Konfigurasi Service Lanjutan
Penjelasan
Untuk kasus yang tidak bisa ditangani autowiring otomatis (mis. Service butuh nilai string/angka konfigurasi, bukan class lain), konfigurasi tambahan ditulis di config/services.yaml — termasuk membaca environment variable lewat helper %env(...)%.
Contoh Konsep
<?php
namespace App\Service;
class NotifikasiService
{
public function __construct(private string $apiKey) {}
public function kirim(string $pesan): void
{
// pakai $this->apiKey untuk otentikasi ke layanan eksternal
}
}
// config/services.yaml (YAML, bukan PHP):
// services:
// App\Service\NotifikasiService:
// arguments:
// $apiKey: '%env(NOTIFIKASI_API_KEY)%'
Praktikum
Buat Service PembayaranService dengan constructor menerima string $merchantId. Tulis (sebagai komentar YAML) konfigurasi services.yaml yang mengisi $merchantId dari environment variable bernama MERCHANT_ID.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Autowiring OTOMATIS hanya bekerja untuk parameter bertipe CLASS/INTERFACE (mis. HargaService, Request) — parameter tipe primitif (string, int, bool, array) SELALU butuh konfigurasi manual di services.yaml seperti dicontohkan, karena Symfony tidak bisa menebak nilai konkretnya sendiri.