Аўтазагрузка класаў у ААП у PHP
Вы ўжо ведаеце, што каб скарыстацца
якім-небудзь класам, мы павінны падключыць
яго праз require. Калі ў праекце
вельмі шмат класаў, то атрымліваецца шмат
падключэнняў, якія вельмі незручна пісаць
і цяжка кантраляваць.
Для вырашэння такой праблемы ў 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
стварыце аб'екты гэтых класаў.