CodeBlanks Logo Icon CodeBlanks

composer.json dosyası

PHP kursu · İleri seviye · Ders 35/92

composer.json yapısını ve temel alanlarını öğrenirsin.

Yapılandırma dosyasının yapısı

Composer'ın yapılandırma dosyası projenin bağımlılıklarını ve autoload ayarlarını taşır. name alanı vendor/project biçiminde paket adını tutar. require bölümü üretim için gerekli paketleri ve sürümlerini listeler. require-dev bölümü yalnızca geliştirme sırasında gerekli paketleri (test, linter) taşır. autoload bölümü PSR-4 eşlemesini tanımlar; örneğin App\ ile src/ eşleşmesi App namespace'ini src/ klasörüne bağlar.

autoload ve PSR-4 eşlemesi

autoload bölümü sınıfların dosya yollarını otomatik bulmayı sağlar. PSR-4 alt bölümü namespace'leri klasörlere bağlar: App\ ile src/ eşleşmesini yazarsan, App\Models\User sınıfı src/Models/User.php dosyasından yüklenir.

Composer kurulumdan sonra vendor/autoload.php dosyasını üretir; bu dosyayı require_once ile çağırınca tüm sınıflar otomatik yüklenir ve manuel require yazmazsın.

Uygulama Yapılandırma dizisini yazdır

Bir $config dizisi tanımla: name => "app/shop", require => ["monolog/monolog" => "^3.5", "guzzlehttp/guzzle" => "^7.8"], autoload => ["psr-4" => ["App\\" => "src/"]]. Önce name değerini, sonra require altındaki her paketi monolog/monolog: ^3.5 biçiminde, en son autoload psr-4 altındaki App\ eşlemesini App\ => src/ biçiminde yazdır.

Örnek çözümü göster
" . $ver . "\n"; } ile paketleri yazdır. foreach ($config["autoload"]["psr-4"] as $ns => $path) { echo $ns . " => " . $path . "\n"; } ile eşlemeyi yazdır.
Örnek çözüm:
<?php
$config = [
    "name" => "app/shop",
    "require" => ["monolog/monolog" => "^3.5", "guzzlehttp/guzzle" => "^7.8"],
    "autoload" => ["psr-4" => ["App\\" => "src/"]]
];
echo $config["name"] . "\n";
foreach ($config["require"] as $pkg => $ver) {
    echo $pkg . ": " . $ver . "\n";
}
foreach ($config["autoload"]["psr-4"] as $ns => $path) {
    echo $ns . " => " . $path . "\n";
}

Kendini test et

  1. require bölümünü tamamla

    <?php
    $config = [
        "name" => "app/shop",
        "____" => [
            "monolog/monolog" => "^3.5"
        ]
    ];
    echo $config["name"] . "\n";
    
    Cevabı göster
    <?php
    $config = [
        "name" => "app/shop",
        "require" => [
            "monolog/monolog" => "^3.5"
        ]
    ];
    echo $config["name"] . "\n";
    
  2. require-dev bölümü ne işe yarar?

    • Üretim paketlerini listeler
    • vendor/ klasörünü temizler
    • Yalnızca geliştirme paketlerini listeler
    • Sınıf yollarını tanımlar
    Cevabı göster

    Yalnızca geliştirme paketlerini listeler — Doğru. require-dev yalnızca geliştirme sırasında gerekli paketleri taşır.

  3. Yapılandırma bölümlerini eşleştir

    name
    Paket adını tutar
    require
    Üretim paketleri
    require-dev
    Geliştirme paketleri
    autoload
    Sınıf yüklemeyi ayarlar

İleri seviye bölümündeki tüm dersler