PHP да ООП да классларни автозагрузка қилиш
Сиз биласизки, бирор классдан фойдаланиш учун
уни require орқали улашимиз керак.
Лойихада жуда кўп класслар бўлганда, жуда кўп
уланишлар ҳосил бўлади, уларни ёзиш жуда қийин
ва назорат қилиш қийин.
Бундай муаммони ҳал қилиш учун PHP га автозагрузка класслар қўшилди. Автозагрузка PHP га кодда классга мурожаат қилинганида у класс билан файлни автоматник ravishda юклаш имконини беради. Аммо, класслар ўзи-ўзидан юкланмайди - уларни бирон бир файл ва папка номлари келишувига амал қилган ҳолда, сайтнинг папкаларида махсус тарзда жойлаштириш керак. PHP даги мавжуд келишувдан фойдаланиш мумкин, ёки ўз келишувингизни тўғрилаб, ундан фойдаланишингиз мумкин.
Келилуги, аввалом PHP нинг стандарт келишувини кўриб чиқайлик. Бу келишув шундан иборатки, агар бизда класс билан бир файл бўлса, унда сайтнинг папкалари буйича ушбу файлга бўлган йўл файлнинг ном фазосига мос келиши керак, ва файл номи унда жойлашган класс номига мос келиши керак. Бу ҳолда папка ва файл номлари кичик ҳарфларда бўлиши керак.
Мисолда кўрамиз. Фарз қилайлик, бизда куйидаги класс бор:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Келишувга кўра ушбу класс
/core/admin/ папкасидаги
pagecontroller.php файлида жойлашиши керак.
Келилуги энди index.php файлида биз
ўз классимиздан require орқали уланмай,
автозагрузкадан фойдаланиб фойдаланамиз. Бунинг учун
класслар чақириладиган файлнинг бошланишида
spl_autoload_register функциясини чақириш керак.
Буни амалга оширамиз:
<?php
spl_autoload_register(); // автозагрузкани ёқамиз
$obj = new Core\Admin\PageController; // осий объект яратамиз
?>
index.php файлида классларни автоматик
юклашни ёқинг. Папка ва файл номлари келишувига амал қилган ҳолда
Core\User классни,
Core\Admin\Controller классни ва
Project\User\Data классни яратинг.
index.php файлида ушбу классларнинг объектларини яратинг.