1 min read

Composer PSR-4 Autoloading Kullanımı

Daha önceki yazılarımızda PSR-0 ile autoloading kullanımından bahsetmiştik, bu yazımızda PSR-4 kod standartlarına uygun olarak kullanabileceğimiz Autoloading yapısıyla ilgili örnek yapacağız.

PSR-4’ü yada PSR-0’ın ne olduğunu bilmeyenler yada net olarak hatırlamayanlar için PHP Kod Standartları yazımızı inceleyebilirler.

 

PSR-4 standatları için öncelikle dizin yapımızı inceleyelim.

Proje1/
    app/
        lib/
            module/
                module.php
    composer.json
    .
    .
    .

Geliştireceğimiz modüller lib klasörü altında yer almakta. PSR-4 standartlarına göre her sınıf namespace olarak dizin isimlerini esas alır. Yani bu örnekte module isimli sınıf için namespace şu şekilde olmalı;

<?php

namespace lib\module;

class module
{

}

Neden app dizinini dahil etmedik diye soracak olursanız, app dizini uygulamanın diğer dosyalarını da içeren bir dizin olduğu için tüm dosyalar autoload için uygun değil. Bu nedenle autoload edilecek kök dizin olarak lib klasörünü seçtik.

Şimdi sırada geldi composer.json dosyasını düzenlemeye. Bu json dosyası composer tarafından her uygulama çalıştırıldığında otomatik yüklenecek sınıfları, interface, trait gibi dosyaları otomatik include eder ve kullanıma hazır eder.

"autoload": {
        "psr-4": {
            "lib\\" : "app/lib"
        }
},

Composer dosyamızın autoload alanına psr-4 adında bir obje açtık ve buraya lib namespace‘ine sahip dosyaların app/lib dizinin altında olduğunu söyledik. Böylelikle composer bu dizinlerde uygun olan dosyaları tarayıp include edecek.

Son olarak projeye dahil ettiğimiz sınıfların composer tarafından taranıp autoload.php dosyasına eklenmesine. Bunun için kök dizine gelip yani proje1 dizininde

composer update

komutunu konsolda çalıştırıp composer’ü tetiklememiz yeterlidir.