Kontainer DependencyInjection
Daftarkan layanan dan hubungkan dependensi dengan kontainer DI Symfony.
Kontainer DependencyInjection adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Apa itu Dependency Injection?
Dependency Injection (DI) adalah pola ketika sebuah kelas menerima dependensinya dari luar, bukan membuatnya secara internal — sehingga kode dapat diuji dan memiliki keterikatan yang longgar.
Komponen DI Symfony
Komponen symfony/dependency-injection milik Symfony menyediakan wadah IoC yang kuat untuk menghubungkan otomatis, mengonfigurasi, dan menyimpan definisi layanan dalam cache.
$ composer require symfony/dependency-injectionMembuat Wadah
Bangun wadah dan daftarkan layanan.
<?php
use Symfony\Component\DependencyInjection\ContainerBuilder;
$container = new ContainerBuilder();
// Register a service:
$container->register("logger", \App\Logger::class);Menambahkan Argumen Konstruktor
Teruskan argumen konstruktor ke definisi layanan.
<?php
$container->register("mailer", \App\Mailer::class)
->addArgument("smtp.example.com")
->addArgument(587);Referensi Layanan
Suntikkan satu layanan ke layanan lain menggunakan Reference.
<?php
use Symfony\Component\DependencyInjection\Reference;
$container->register("email_service", \App\EmailService::class)
->addArgument(new Reference("mailer"))
->addArgument(new Reference("logger"));Mengambil Layanan
Ambil layanan dari wadah. Dependensi diselesaikan secara otomatis.
<?php
$emailService = $container->get("email_service");
$emailService->send("user@example.com", "Welcome!");Penghubungan Otomatis
Dengan penghubungan otomatis yang diaktifkan, wadah memeriksa petunjuk tipe dan secara otomatis menyuntikkan layanan yang sesuai.
<?php
$container->register(EmailService::class)
->setAutowired(true);
// Constructor is: public function __construct(Mailer $mailer, Logger $logger)Parameter
Simpan nilai konfigurasi sebagai parameter wadah.
<?php
$container->setParameter("mailer.host", "smtp.example.com");
$container->setParameter("mailer.port", 587);
// Reference in service definition:
$container->register("mailer", Mailer::class)
->addArgument("%mailer.host%")
->addArgument("%mailer.port%");Konfigurasi YAML
Tentukan layanan dalam YAML (memerlukan symfony/config dan symfony/yaml).
# services.yaml
services:
App\Mailer:
arguments:
- "%mailer.host%"
- "%mailer.port%"Mengompilasi Wadah
Kompilasi wadah untuk meningkatkan kinerja. Langkah ini memvalidasi definisi dan mengoptimalkan grafik layanan.
<?php
$container->compile();
// Dump to PHP cache file:
$dumper = new PhpDumper($container);
file_put_contents("CachedContainer.php", $dumper->dump());Layanan Bersama vs Tidak Bersama
Secara default, layanan digunakan bersama (singleton). Tetapkan shared(false) untuk mendapatkan instans baru setiap kali layanan diambil.
Ringkasan
Wadah DI Symfony mendaftarkan, menghubungkan, dan menyelesaikan layanan. Gunakan penghubungan otomatis untuk kemudahan, parameter untuk konfigurasi, dan kompilasi wadah di produksi demi kinerja.
Pemeriksaan Singkat
Apa yang dilakukan penghubungan otomatis dalam wadah DI Symfony?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kontainer DependencyInjection” gratis?
Ya — teks lengkap “Kontainer DependencyInjection” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kontainer DependencyInjection”?
Daftarkan layanan dan hubungkan dependensi dengan kontainer DI Symfony. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Kontainer DependencyInjection” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- HttpFoundation: Request dan Response
- Kontainer DependencyInjection
- EventDispatcher: Event yang Terpisah
- Komponen Konsol: Perintah CLI