PHPda OOPda Klasslarni Avtomatik Yuklash
Siz allaqachon bilasizki, biron bir klassdan foydalanish uchun
uni require orqali ulashimiz kerak.
Loyihada juda ko'p klasslar bo'lsa, juda ko'p
ulanishlar paydo bo'ladi, ularni yozish juda qiyin
va nazorat qilish mushkul.
Bunday muammoni hal qilish uchun PHPga klasslarni avtomatik yuklash qo'shildi. Avtomatik yuklash PHPga kodda klassga murojaat qilishga urinilganda avtomatik ravishda klass faylini yuklash imkonini beradi. Biroq, klasslar shunchaki yuklanmaydi - ularni saytning papkalariga qandaydir bir kelishuvga asosan, fayl va papka nomlari bo'yicha maxsus tartibda joylashtirish kerak. PHPning o'zidagi kelishuvdan foydalanish mumkin, yoki o'zingizning kelishuvingizni yaratish va undan foydalanish mumkin.
Keling, avval PHPning standart kelishuvini ko'rib chiqaylik. Ushbu kelishuv shundan iboratki, agar bizda klass saqlanadigan fayl bo'lsa, unda sayt papkalaridagi ushbu faylga bo'lgan yo'l fayl nomlar fazosi (namespace) bilan mos kelishi kerak, fayl nomi esa ichida saqlanadigan klass nomiga mos kelishi kerak. Bunda papka va fayl nomlari kichik harflarda yozilishi kerak.
Keling, misol orqali ko'rib chiqaylik. Faraz qilaylik, bizda quyidagi klass mavjud:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Kelishuvga ko'ra ushbu klass
/core/admin/ papkasida pagecontroller.php
faylida joylashgan bo'lishi kerak.
Keling endi index.php faylida biz
o'z klassimizdan require orqali ulanmasdan,
balki avtomatik yuklashdan foydalanib foydalanaylik.
Buning uchun klasslar chaqiriladigan faylning boshida
spl_autoload_register funksiyasini chaqirish kerak.
Buni amalga oshiramiz:
<?php
spl_autoload_register(); // avtomatik yuklashni yoqamiz
$obj = new Core\Admin\PageController; // xavotirsiz ob'ekt yaratamiz
?>
index.php faylida klasslarni avtomatik yuklashni
yoqing. Papka va fayl nomlari bo'yicha kelishuvga rioya qilgan holda
Core\User klassini,
Core\Admin\Controller klassini va
Project\User\Data klassini yarating.
index.php faylida ushbu klasslarning ob'ektlarini yarating.