⊗ppOpNsAu 105 of 107 menu

Аўтазагрузка класаў у ААП у 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 стварыце аб'екты гэтых класаў.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць