0Pricing
PHP Academy · Ders

DependencyInjection Container

Symfony DI container ile hizmetleri kaydedin ve bağımlılıkları birbirine bağlayın.

DependencyInjection Container, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

Dependency Injection Nedir?

Dependency Injection (DI), bir sınıfın bağımlılıklarını kendi içinde oluşturmak yerine dışarıdan aldığı bir tasarım kalıbıdır. Bu yaklaşım, kodun test edilebilir ve gevşek bağlı olmasını sağlar.

Symfony DI Bileşeni

Symfony'nin symfony/dependency-injection bileşeni, hizmet tanımlarını otomatik olarak bağlayabilen, yapılandırabilen ve önbelleğe alabilen güçlü bir IoC kapsayıcısı sağlar.

$ composer require symfony/dependency-injection

Kapsayıcı Oluşturma

Bir kapsayıcı oluşturun ve hizmetleri kaydedin.

<?php
use Symfony\Component\DependencyInjection\ContainerBuilder;

$container = new ContainerBuilder();

// Register a service:
$container->register("logger", \App\Logger::class);

Yapıcı Bağımsız Değişkenleri Ekleme

Hizmet tanımlarına yapıcı bağımsız değişkenleri aktarın.

<?php
$container->register("mailer", \App\Mailer::class)
    ->addArgument("smtp.example.com")
    ->addArgument(587);

Hizmet Başvuruları

Bir Reference kullanarak bir hizmeti diğerine ekleyin.

<?php
use Symfony\Component\DependencyInjection\Reference;

$container->register("email_service", \App\EmailService::class)
    ->addArgument(new Reference("mailer"))
    ->addArgument(new Reference("logger"));

Hizmet Alma

Kapsayıcıdan bir hizmet alın. Bağımlılıklar otomatik olarak çözümlenir.

<?php
$emailService = $container->get("email_service");
$emailService->send("user@example.com", "Welcome!");

Otomatik Bağlama

Otomatik bağlama etkinleştirildiğinde kapsayıcı, tür ipuçlarını inceler ve eşleşen hizmetleri otomatik olarak ekler.

<?php
$container->register(EmailService::class)
    ->setAutowired(true);
// Constructor is: public function __construct(Mailer $mailer, Logger $logger)

Parametreler

Yapılandırma değerlerini kapsayıcı parametreleri olarak saklayın.

<?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 Yapılandırması

Hizmetleri YAML içinde tanımlayın (symfony/config ve symfony/yaml gerektirir).

# services.yaml
services:
    App\Mailer:
        arguments:
            - "%mailer.host%"
            - "%mailer.port%"

Kapsayıcıyı Derleme

Performans için kapsayıcıyı derleyin. Bu işlem tanımları doğrular ve hizmet grafiğini optimize eder.

<?php
$container->compile();
// Dump to PHP cache file:
$dumper = new PhpDumper($container);
file_put_contents("CachedContainer.php", $dumper->dump());

Paylaşılan ve Paylaşılmayan Hizmetler

Hizmetler varsayılan olarak paylaşılır (tekil örnek). Hizmet her alındığında yeni bir örnek elde etmek için shared(false) ayarını yapın.

Özet

Symfony DI kapsayıcısı hizmetleri kaydeder, bağlar ve çözümler. Kolaylık için otomatik bağlamayı, yapılandırma için parametreleri kullanın; performans için üretim ortamında kapsayıcıyı derleyin.

Hızlı Kontrol

Symfony DI kapsayıcısında otomatik bağlama ne yapar?

Sıkça Sorulan Sorular

“DependencyInjection Container” dersi ücretsiz mi?

Evet — “DependencyInjection Container” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“DependencyInjection Container” dersinde ne öğreneceğim?

Symfony DI container ile hizmetleri kaydedin ve bağımlılıkları birbirine bağlayın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“DependencyInjection Container” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. HttpFoundation: İstek ve Yanıt
  2. DependencyInjection Container
  3. EventDispatcher: Gevşek Bağlı Olaylar
  4. Console Bileşeni: CLI Komutları
← PHP Academy Sayfasına Dön