composer.json dosyası
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
-
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"; -
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.
-
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