Otomatik Yükleme


    × Bunları biliyor muydunuz?
"Projects/ dizini altında oluşturulan proje dizinleri çalışan host'un ismi ile isimlendirilirse Settings/Projects.php yapılandırma dosyasına tanımlamaya gerek kalmadan otomatik olarak çağrılması sağlanır."


Daha önceki konularımızda oluşturduğumuz sınıfları kullanacağımı dosyaya require ile dahil ederek kullanmıştık. Böyle bir kullanımın dezavantajı bir sınıf için gerekli olan diğer sınıflarında dahil edilme zorunluluğudur. Bu nedenle bu bölümde bu işlemin nasıl daha pratik bir şekilde yapılacağı ve dahil etme işlemini doğrudan programın kendisine yaptıracağımızı göstereceğiz. Bu işlem için PHP'de bulunan spl_autoload_register() fonksiyonundan yararlanacağız. Bu fonksiyonun amacı olmayan bir sınıf çağrıldığında devreye girmesidir. 

 

 

# Otoyükleyicinin Oluşturulması


Otoyükleyiciyi oluşturmak için spl_autoloader_register() yöntemini kullanacağız. 

Dosya: autoloader.php
<?php 

spl_autoload_register(function(string $class)
{
    $path = str_replace('\\', '/', $class) . '.php';

    if( is_file($path) )
    {
        require $path;
    }   
});

Yukarıdaki fonksiyonun amacı çağrılan sınıfı otomatik olarak dahil etmektir. str_replace() fonksiyonu ise çağrılan sınıf namespace içeriyorsa isim alanındaki \ sembolünü / sembolüne çevirerek ilgili sınıfın yol bilgisini oluşturuyor.

 

 

# Otoyükleyicinin Kullanılması


Oluşturduğumuz otoyükleyiciyi sınıfları çağıracağımız dosyaya dahil ediyoruz.

Dosya: index.php
<?php require 'autoloader.php';

$automobile = new Automobile;

echo $automobile->wayType();
Highway

Yukarıdaki kullanımda dikkat edilirse artık Automobile:: sınıfını üst sınıfı olan Vehicle:: sınıfını require ile dahil etmeden otomatik olarak yükletmeyi başardık.