Аутоматско учитавање класа у ООП у PHP

Већ знате да да бисмо користили неку класу, морамо је укључити преко require. Када у пројекту постоји веома много класа, онда настаје много укључења, која је врло незгодно писати и тешко их је контролисати.

За решавање оваквог проблема у PHP је додато аутоматско учитавање класа. Аутоматско учитавање омогућава PHP-у да аутоматски учита фајл са класом при покушају приступа тој класи у коду. Међутим, једноставно тако класе се неће учитавати - неопходно их је распоредити по фасциклама сајта на посебан начин, следећи неки споразум о именовању фајлова и фасцикли класа. Може се користити уграђени споразум у PHP, или осмислити свој и користити га.

Хајде да за почетак размотримо стандардни споразум PHP. Овај споразум се састоји у томе да ако имамо неки фајл са класом, онда пут кроз фасцикле сајта до тог фајла мора да се поклапа са именским простором фајла, а име фајла мора да се поклапа са именом класе која се у њему налази. При томе имена фасцикли и фајла морају бити у малим словима.

Погледајмо на примеру. Претпоставимо да имамо следећу класу:

/core/admin/pagecontroller.php<?php
  namespace Core\Admin;
  
  class PageController
  {
    
  }
?>

Према споразуму ова класа мора да се налази у фасцикли /core/admin/ у фајлу pagecontroller.php.

Хајде сада у фајлу index.php да искористимо нашу класу, без укључења преко require, већ користећи аутоматско учитавање. За то на почетку фајла, у ком се позивају класе, треба позвати функцију spl_autoload_register. Урадимо то:

index.php<?php
  spl_autoload_register(); // укључујемо аутоматско учитавање
  
  $obj = new Core\Admin\PageController; // мирно креирамо објекат
?>
Задание 1

У фајлу index.php укључите аутоматско учитавање класа. Следећи споразум о именовању фасцикли и фајлова направите класу Core\User, класу Core\Admin\Controller и класу Project\User\Data. У фајлу index.php креирајте објекте ових класа.