PHP'de OOP'de Sınıf Otomatik Yükleme
Bir sınıfı kullanmak için onu
require ile bağlamamız gerektiğini
zaten biliyorsunuz. Bir projede çok fazla
sınıf olduğunda, yazması çok zahmetli ve
kontrol etmesi zor olan çok sayıda bağlantı
ortaya çıkar.
Bu sorunu çözmek için PHP'ye sınıf otomatik yükleme eklendi. Otomatik yükleme, PHP'nin bir sınıfa kodda erişim girişiminde bulunulduğunda o sınıfın dosyasını otomatik olarak yüklemesine olanak tanır. Ancak, sınıflar öylece yüklenmeyecek - dosya ve sınıf klasörlerinin isimlendirilmesine ilişkin herhangi bir kurala uyarak, onları site klasörlerine özel bir şekilde yerleştirmek gerekir. PHP'nin yerleşik kurallarını kullanabilir veya kendi kurallarınızı oluşturup onları kullanabilirsiniz.
Öncelikle PHP'nin standart kuralını inceleyelim. Bu kural, eğer bir sınıf dosyamız varsa, site klasörlerindeki bu dosyanın yolu, dosyanın isim alanıyla eşleşmeli ve dosya adı, içinde bulunan sınıfın adıyla eşleşmelidir. Bu durumda, klasör ve dosya adları küçük harf olmalıdır.
Bir örnek üzerinden inceleyelim. Aşağıdaki sınıfa sahip olduğumuzu varsayalım:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Kurala göre, bu sınıf /core/admin/
klasöründe, pagecontroller.php
dosyasında bulunmalıdır.
Şimdi index.php dosyasında sınıfımızı,
require ile bağlamadan, otomatik yükleme
kullanarak kullanalım. Bunun için, sınıfların
çağrıldığı dosyanın başında spl_autoload_register
fonksiyonunu çağırmak gerekir. Bunu yapalım:
<?php
spl_autoload_register(); // otomatik yüklemeyi etkinleştir
$obj = new Core\Admin\PageController; // sakin bir şekilde nesne oluştur
?>
index.php dosyasında sınıfların otomatik
yüklenmesini etkinleştirin. Klasör ve dosya
adlandırma kuralına uyarak Core\User
sınıfını, Core\Admin\Controller sınıfını
ve Project\User\Data sınıfını oluşturun.
index.php dosyasında bu sınıfların
nesnelerini oluşturun.