Otomatik Yüklenen Sınıflar

Nesne-yönelimli uygulama yazan birçok geliştirici, her bir sınıf tanımı için ayrı bir PHP kaynak dosyası oluşturmaktadır. Bu kullanımın en can sıkıcı noktalarından bir tanesi, betiklerin en tepesinde bir sürü dosyanın betiğe dahil edilmesini gerektirmesidir (her bir sınıf için ayrı bir dosya).

spl_autoload_register() işlevi, henüz tanımlanmamışlarsa, sınıfların ve arayüzlerin otomatik olarak yüklenmesini sağlayacak sayıda otomatik yükleyiciyi kaydeder. Otomatik yükleyicileri kaydederek, bir hatayla başarısızlığa uğramadan önce PHP'ye sınıf veya arayüzü yüklemek için son bir şans verilir.

Dikkat

PHP 8.0.0 öncesinde sınıf ve arayüzleri otomatik yüklemek için __autoload() işlevini kullanmak mümkündü. Bununla birlikte, __autoload() işlevi spl_autoload_register() işlevinin daha az esnek benzeridir ve __autoload() işlevinin kullanılması PHP 7.2.0 itibariyle önerilmemekte olup PHP 8.0.0 itibariyle kullanımdan kaldırılmıştır.

Kurucu benzeri her sınıf aynı yolla otomatik yüklenebilir. Buna sınıflar, arayüzler, nitelikler ve sayılamalar dahildir.

Bilginize:

spl_autoload_register(), birden çok otomatik yükleyiciyi kaydetmek için bir çok kez çağrılabilir. Ancak bir otomatik yükleme işlevinden bir istisna yavrulanması, bu işlemi kesintiye uğratır ve diğer otomatik yükleme işlevleri çalışamaz. Bu nedenle, bir otomatik yükleme işlevinden istisna yavrulanması kesinlikle önerilmez.

Örnek 1 - Otomatik yükleme örneği

Bu örnek MyClass1 ve MyClass2 sınıflarını yüklemeye çalışmaktadır. Sınıflar aynı isimli MyClass1.php ve MyClass2.php dosyalarının içinde yer almaktadırlar.

<?php
spl_autoload_register
(function ($class_name) {
include
$class_name . '.php';
});


$obj = new MyClass1();
$obj2 = new MyClass2();
?>

Örnek 2 - Başka bir otomatik yükleme örneği

Bu örnek DenemeA arayüzünü yüklemeye çalışır.

<?php

spl_autoload_register
(function ($name) {
var_dump($isim);
});

class
Fan implements DenemeA {
}


?>
To Top