DependencyInjection-Container
Registrieren Sie Services und verbinden Sie Abhängigkeiten mit dem Symfony-DI-Container.
DependencyInjection-Container ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Dependency Injection?
Dependency Injection (DI) ist ein Muster, bei dem eine Klasse ihre Abhängigkeiten von außen erhält, statt sie intern zu erstellen. Dadurch wird der Code testbar und lose gekoppelt.
Die Symfony-DI-Komponente
Die Komponente symfony/dependency-injection von Symfony stellt einen leistungsfähigen IoC-Container bereit, der Service-Definitionen automatisch verdrahten, konfigurieren und cachen kann.
$ composer require symfony/dependency-injectionEinen Container erstellen
Erstellen Sie einen Container und registrieren Sie Services.
<?php
use Symfony\Component\DependencyInjection\ContainerBuilder;
$container = new ContainerBuilder();
// Register a service:
$container->register("logger", \App\Logger::class);Konstruktorargumente hinzufügen
Übergeben Sie Konstruktorargumente an Service-Definitionen.
<?php
$container->register("mailer", \App\Mailer::class)
->addArgument("smtp.example.com")
->addArgument(587);Service-Referenzen
Injizieren Sie einen Service mit einer Reference in einen anderen.
<?php
use Symfony\Component\DependencyInjection\Reference;
$container->register("email_service", \App\EmailService::class)
->addArgument(new Reference("mailer"))
->addArgument(new Reference("logger"));Einen Service abrufen
Rufen Sie einen Service aus dem Container ab. Abhängigkeiten werden automatisch aufgelöst.
<?php
$emailService = $container->get("email_service");
$emailService->send("user@example.com", "Welcome!");Autowiring
Wenn Autowiring aktiviert ist, untersucht der Container die Typangaben und injiziert passende Services automatisch.
<?php
$container->register(EmailService::class)
->setAutowired(true);
// Constructor is: public function __construct(Mailer $mailer, Logger $logger)Parameter
Speichern Sie Konfigurationswerte als Container-Parameter.
<?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%");YAML-Konfiguration
Definieren Sie Services in YAML (erfordert symfony/config und symfony/yaml).
# services.yaml
services:
App\Mailer:
arguments:
- "%mailer.host%"
- "%mailer.port%"Den Container kompilieren
Kompilieren Sie den Container für eine bessere Leistung. Dabei werden Definitionen validiert und der Service-Graph optimiert.
<?php
$container->compile();
// Dump to PHP cache file:
$dumper = new PhpDumper($container);
file_put_contents("CachedContainer.php", $dumper->dump());Geteilte und nicht geteilte Services
Services werden standardmäßig geteilt (Singletons). Setzen Sie shared(false), um bei jedem Abruf des Services eine neue Instanz zu erhalten.
Zusammenfassung
Der Symfony-DI-Container registriert, verdrahtet und löst Services auf. Verwenden Sie Autowiring für mehr Komfort, Parameter für die Konfiguration und kompilieren Sie den Container in der Produktion für eine bessere Leistung.
Kurzer Check
Was bewirkt Autowiring im Symfony-DI-Container?
Häufig gestellte Fragen
Ist die Lektion „DependencyInjection-Container“ kostenlos?
Ja — der vollständige Text von „DependencyInjection-Container“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „DependencyInjection-Container“?
Registrieren Sie Services und verbinden Sie Abhängigkeiten mit dem Symfony-DI-Container. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „DependencyInjection-Container“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- HttpFoundation: Request und Response
- DependencyInjection-Container
- EventDispatcher: Entkoppelte Ereignisse
- Console-Komponente: CLI-Befehle