Menu
Coddy logo textTech

Composer Autoloader

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 13 / 91.

Kendi otomatik yükleyicinizi yazmak işe yarar, ancak gerçek PHP projeleri otomatik yüklemeyi yönetmek için Composer kullanır. Composer, projenizin yapılandırmasını okur ve PSR-4 standartlarını izleyen optimize edilmiş bir otomatik yükleyici oluşturur.

Yapılandırma, projenizin kök dizinindeki composer.json dosyasında bulunur. Otomatik yükleme kurallarını şu şekilde tanımlarsınız:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Bu, App\ ile başlayan herhangi bir sınıfın src/ dizininden yüklenmesi gerektiğini Composer’a bildirir. Bu kurulumu yaptıktan sonra Composer, otomatik yükleyici dosyalarını vendor/ dizininde oluşturur.

Composer'ın otomatik yükleyicisini kullanmak için giriş dosyanızın en üstüne yalnızca bir satır eklemeniz yeterlidir:

<?php
require 'vendor/autoload.php';

use App\Models\User;
use App\Services\Logger;

$user = new User("Alice");
$logger = new Logger();

Bu tek require ifadesi, projenizin tamamındaki tüm sınıf yükleme işlemlerini gerçekleştirir. Gerekirse birden fazla ad alanı eşlemesi tanımlayabilirsiniz:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/",
            "Tests\\": "tests/"
        }
    }
}

Önemli Nokta: Composer'ın otomatik yükleyicisi, dosyaların manuel olarak dahil edilmesi gereksinimini ortadan kaldırır ve projeniz genelinde tutarlı sınıf yükleme işlemi sağlar. Bu, neredeyse tüm modern PHP uygulamaları ve framework'ler tarafından kullanılan standart yaklaşımdır.

challenge icon

Görev

Kolay

Birden çok dosyadaki sınıfları düzenlemek için Composer'ın otomatik yükleme yaklaşımını kullanan küçük bir uygulama oluşturalım. Gerçek bir PHP projesinin kodunu PSR-4 ad alanları ve merkezi bir otomatik yükleyiciyle nasıl yapılandırdığını simüle edeceksin.

Birlikte çalışan dört dosya oluşturacaksın:

  • src/Models/Product.php: App\Models ad alanında bir Product sınıfı tanımla. Bu sınıfta public $name ve public $price özellikleri, her iki değeri kabul edip ayarlayan bir yapıcı ve "[name]: $[price]" değerini döndüren bir getInfo() yöntemi bulunmalıdır.
  • src/Models/Customer.php: App\Models ad alanında bir Customer sınıfı tanımla. Bu sınıfta bir public $name özelliği, adı kabul edip ayarlayan bir yapıcı ve "Welcome, [name]!" değerini döndüren bir greet() yöntemi bulunmalıdır.
  • vendor/autoload.php: Composer'ın davranışını taklit eden basit bir otomatik yükleyiciyi spl_autoload_register kullanarak oluştur. App\ ad alanı ön ekini src/ dizinine eşlemeli, ad alanı ayraçlarını dizin ayraçlarına dönüştürmeli ve doğru dosyayı yüklemek için sonuna .php eklemelidir.
  • index.php: Bu, giriş noktası dosyandır. Tek bir satırla vendor/autoload.php dosyasındaki otomatik yükleyiciyi require et; ardından hem App\Models\Product hem de App\Models\Customer sınıflarını içe aktarmak için use anahtar sözcüğünü kullan. Adı "Laptop" ve fiyatı 999 olan bir Product ile adı "Alice" olan bir Customer oluştur. Müşteri üzerinde greet() ve ürün üzerinde getInfo() çağrılarının sonuçlarını yazdır (her biri kendi satırında).

Buradaki temel kavram, index.php dosyanın otomatik yükleyiciyi yüklemek için yalnızca bir require ifadesine ihtiyaç duymasıdır; bundan sonra, kullandığın tüm sınıflar otomatik olarak yüklenir. Modern PHP framework'leri ve uygulamaları Composer ile tam olarak böyle çalışır.

Kendin dene

<?php
// TODO: vendor/autoload.php dosyasından autoloader'ı require et

// TODO: App\Models\Product'ı içe aktarmak için 'use' anahtar kelimesini kullan

// TODO: App\Models\Customer'ı içe aktarmak için 'use' anahtar kelimesini kullan

// TODO: "Laptop" adında ve 999 fiyatında bir Product oluştur

// TODO: "Alice" adında bir Customer oluştur

// TODO: Müşterinin greet() sonucunu yazdır

// TODO: Ürünün getInfo() sonucunu yazdır
?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi