Automatsko učitavanje klasa u OOP u PHP
Već znate da da biste koristili
neku klasu, moramo je uključiti
preko require. Kada u projektu
ima mnogo klasa, dobija se mnogo
povezivanja, koja je vrlo nezgodno pisati
i teško ih je kontrolisati.
Za rešavanje ovog problema u PHP je dodata automatska zagušnja klasa. Automatsko učitavanje dozvoljava PHP-u da automatski učita fajl sa klasom prilikom pokušaja pristupa toj klasi u kodu. Međutim, klase se neće same učitatiti - potrebno ih je smestiti po folderima sajta na poseban način, prateći neki dogovor o imenima fajlova i foldera klasa. Možete koristiti ugrađeni dogovor u PHP-u, ili smisliti svoj i koristiti ga.
Hajde da za početak analiziramo standardni dogovor PHP-a. Ovaj dogovor se sastoji u tome da ako imamo neki fajl sa klasom, onda putanja po folderima sajta do tog fajla mora da se poklapa sa imenskim prostorom fajla, a ime fajla mora da se poklapa sa imenom klase koja se u njemu nalazi. Pritim imena foldera i fajla moraju biti u malim slovima.
Pogledajmo na primeru. Pretpostavimo da imamo sledeću klasu:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Prema dogovoru ova klasa treba da se nalazi
u folderu /core/admin/ u fajlu
pagecontroller.php.
Hajde sada u fajlu index.php da koristimo
našu klasu, bez povezivanja preko require,
već koristeći automatsko učitavanje. Za ovo na početku
fajla, u kojem se pozivaju klase, treba
pozvati funkciju spl_autoload_register.
Uradimo to:
<?php
spl_autoload_register(); // uključujemo automatsko učitavanje
$obj = new Core\Admin\PageController; // mirno kreiramo objekat
?>
U fajlu index.php uključite automatsko
učitavanje klasa. Prateći dogovor o imenima
foldera i fajlova napravite klasu Core\User,
klasu Core\Admin\Controller i klasu
Project\User\Data. U fajlu index.php
kreirajte objekte ovih klasa.