Аутоматско учитавање класа у ООП у 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
креирајте објекте ових класа.