phpPhp ile classlara değinmeden önce OOP nedir diye bir açıklama gereği hissetmiyorum :) . Direk konuya dalmak istiyorum zira herkes bi yerde mutlaka OOP nedir diye okumuşlardır. Okumayanlar içinde buyrun link burada.

Sınıflara ilk __autoload fonksiyondan başlayalım. Bu metot sınıflarımızı uygulamamıza otomatik olarak yükleyecektir böylece şu classı yüklemişmiydim yüklememişmiydim derdinden kurtuluyoruz.

Metotu bir örnekle açıklayıp bitirelim. Öncelikle aşağıdaki bir dizin içinde index.php ve bir de class adında dizin yaratalım ve class içerisine de a.class.php ve b.class.php diye iki adet php dosyası yaratalım.

autoload_1

Burdaki önemli nokta class dosyalarımıza gelişi güzel bir isim değilde bir düzen içerisinde isim vermektir. Çünkü fonksiyon belli bir düzeneğe göre eklemee yapacaktır. örneğin a.class.php dosyasını yüklerken class.b.php dosyasını yüklemeyecektir az sonra yazacağımız fonksiyon da bu düzeni siz kendinize göre oluşturabilirsiniz.

Evet dosyalarımızı oluşturduğumuza göre autoload fonksiyonumuzu yazalım.

autoload.php:

< ?php
function __autoload($classname)
{
    $include = "class/{$classname}.class.php";
    if (file_exists($include))
    {
        include_once($include);
    }
    else
    {
        exit($classname.' sınıfı yüklenemedi.');
    }
}
?>

Yukarıdaki autoload fonksiyonunu sayfamızın üstüne include ediyoruz. Daha sonra ise class dizinindeki herhangi bir sınıfı başlatmak istediğimiz de autoload devreye girerek sınıfı yüklüyor. Eğer hiç bir sınıf başlatmassanız sayfada hiç bir sınıfı dahil etmemiş olursunuz.

class/a.class.php:

< ?php
class a
{
    public function __construct()
    {
        echo 'Merhaba ben a sınıfıyım';
    }
}
?>

class/b.class.php:

< ?php
class b
{
    public function __construct()
    {
        echo 'Merhaba ben b sınıfıyım';
    }
}
?>

Yukarıda autoload fonksiyonu ile yüklenmesini istediğimiz sınıfları yazdık ve class dizinine sınıfadi.class.php şeklinde kaydettik.

Şimdide en son olarak index.php mizi yazalım ve örneğimizin çalışır halini görelim.

index.php:

< ?php
# Sayfa tipini ve karakter setini belirtelim.
header('Content-Type: text/html; charset=utf-8');
 
# Autoload fonksiyonumuzu dahil edelim.
include_once('autoload.php');
 
$a = new a;
echo '<br>';
$b = new b;
?>

Görüldüğü üzere __autoload fonksiyonu biz tek tek belirtmemize gerek kalmadan tüm sınıfları sayfamıza dahil etti. Burdan şu anlaşılmasın içinde 100 tane dosya varsa hepsini dahil etmiyor sayfanızda hangi sınıfı başlatıyorsanız o sınıfı dahil ediyor sadece.

Yazıyı noktalarken soru ve merak ettikleriniz için yorumları kullanabilirsiniz.