Sınıflar ve Nesneler (PHP 5)
PHP Manual

Özdevinimli Nesne Yükleme

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).

PHP 5 ile birlikte bu durum zorunluluk olmaktan çıkmıştır. Henüz tanımlanmamış bir sınıfı özdevinimli olarak çağırmak istediğinizde, bir __autoload işlevi tanımlayabilirsiniz. Bu işlevi çağırmakla PHP'nin çalışması hata ile sonuçlanmadan önce betik yorumlama motoruna sınıfı yüklemek için son bir şans verilmiş olur.

Bilginize: __autoload işlevinde oluşan istisnalar catch bloğu ile yakalanamaz, dolayısıyla ölümcül hata ile sonuçlanır.

Bilginize: PHP CLI'yi etkileşimli kipte kullanıyorsanız özdevinimli yükleme kullanılamayacaktır.

Bilginize: Sınıf ismini call_user_func() gibi bir işlevde kullanırsanız ../ gibi bazı tehlikeli karakterler içerebilir. Böyle işlevlerde kullanıcı girdilerini kullanmamanız ya da en azından girdiyi __autoload() ile doğrulamanızı öneririz.

Örnek 1 - Özdevinimli 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
function __autoload($class_name) {
    require_once 
$class_name '.php';
}

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

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

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

<?php

function __autoload($isim) {
    
var_dump($isim);
}

class 
Fan implements DenemeA {
}

/*
string(5) "DenemeA"

Fatal error: Interface 'DenemeA' not found in ...
*/
?>

Ayrıca Bakınız


Sınıflar ve Nesneler (PHP 5)
PHP Manual