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:
<?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:
<?php
spl_autoload_register(); // ieslēdzam automātisko ielādi
$obj = new Core\Admin\PageController; // mierīgi izveidojam objektu
?>
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.