Klasu automātiskā ielāde OOP PHP

Jūs jau zināt, ka, lai izmantotu kādu klasi, mums tas jāpievieno caur require. Kad projektā ir ļoti daudz klases, tad rodas daudz pievienojumu, kurus ir ļoti neērti rakstīt un grūti kontrolēt.

Lai atrisinātu šādu problēmu, PHP tika pievienota klasu automātiskā ielāde. Automātiskā ielāde ļauj PHP automātiski ielādēt failu ar klasi, mēģinot piekļūt šai klasei kodā. Tomēr, vienkārši tā klases netiks ielādētas - tās ir jāizvieto pa vietnes mapēm īpašā veidā, ievērojot kādu vienošanos par failu un mapju nosaukumiem klasēm. Var izmantot iebūvēto PHP vienošanos, vai izdomāt savu un izmantot to.

Sākumā apskatīsim standarta PHP vienošanos. Šī vienošanās ir tāda, ka ja mums ir kāds fails ar klasi, tad ceļš pa vietnes mapēm uz šo failu ir jāsakrīt ar faila nosaukumu telpu, un faila nosaukumam ir jāsakrīt ar tajā glabājamās klases nosaukumu. Turklāt mapju un faila nosaukumiem jābūt mazajos burtos.

Apskatīsim piemērā. Pieņemsim, ka mums ir sekojoša klase:

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

Saskaņā ar vienošanos šai klasei jāatrodas mapē /core/admin/ failā pagecontroller.php.

Tagad failā index.php izmantosim mūsu klasi, nepievienojot to caur require, bet izmantojot automātisko ielādi. Lai to izdarītu, faila sākumā, kurā tiek izsauktas klases, ir jāizsauc funkcija spl_autoload_register. Izdarīsim to:

index.php<?php
  spl_autoload_register(); // ieslēdzam automātisko ielādi
  
  $obj = new Core\Admin\PageController; // mierīgi izveidojam objektu
?>
Задание 1

Failā index.php ieslēdziet automātisko klasu ielādi. Ievērojot vienošanos par nosaukumiem mapēm un failiem, izveidojiet klasi Core\User, klasi Core\Admin\Controller un klasi Project\User\Data. Failā index.php izveidojiet šo klašu objektus.