PHP-те ООП-де класстарды автозагрузкалау
Сіз білесіз, кез келген класты қолдану үшін оны
require арқылы қосу керек.
Жобede класстар өте көп болғанда,
қосылымдар да көп болады, оларды жазған әлдеқайда
ыңғайсыз және бақылау қиын.
Мұндай мәселені шешу үшін PHP-ге автозагрузка класстары қосылды. Автозагрузка PHP-ге кодта сол класқа сілтеме жасалған кезде класы бар файлды автоматты түрде жүктеуге мүмкіндік береді. Алайда, класстар өздігінен жүктелмейді - оларды класстардың файлдары мен бумаларының атаулары бойынша қандай да бір келісім бойынша сайттың бумаларына арнайы орналастыру керек. 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 файлында осы класстардың объектілерін жасаңыз.