Automatické načítanie tried v OOP v PHP
Už viete, že aby sme mohli použiť
nejakú triedu, musíme ju pripojiť
cez require. Keď je v projekte
veľmi veľa tried, výsledkom je veľa
pripojení, ktoré je veľmi nepohodlné písať
a ťažko kontrolovať.
Na vyriešenie tohto problému bola v PHP pridaná automatické načítanie tried. Automatické načítanie umožňuje PHP automaticky načítať súbor s triedou pri pokuse o prístup k tejto triede v kóde. Avšak, jednoducho tak triedy sa nenačítajú - je potrebné ich umiestniť do priečinkov stránky špeciálnym spôsobom, podľa nejakej dohody o názvoch súborov a priečinkov tried. Môžete používať dohodu zabudovanú v PHP, alebo si vymyslieť vlastnú a používať ju.
Poďme na začiatok rozobrať štandardnú dohodu PHP. Táto dohoda spočíva v tom, že ak máme nejaký súbor s triedou, tak cesta cez priečinky stránky k tomuto súboru musí zodpovedať mennému priestoru súboru, a názov súboru musí zodpovedať názvu triedy, ktorá sa v ňom nachádza. Pritom názvy priečinkov a súboru musia byť v malých písmenách.
Pozrime sa na príklade. Nech máme nasledujúcu triedu:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Podľa dohody by mala byť táto trieda umiestnená
v priečinku /core/admin/ v súbore
pagecontroller.php.
Poďme teraz v súbore index.php použiť
našu triedu, bez pripojenia cez require,
ale pomocou automatického načítania. Na to na začiatku
súboru, v ktorom sa volajú triedy, by sa mala
volať funkcia spl_autoload_register.
Urobme to:
<?php
spl_autoload_register(); // zapneme automatické načítanie
$obj = new Core\Admin\PageController; // pokojne vytvoríme objekt
?>
V súbore index.php zapnite automatické
načítanie tried. Podľa dohody o názvoch
priečinkov a súborov vytvorte triedu Core\User,
triedu Core\Admin\Controller a triedu
Project\User\Data. V súbore index.php
vytvorte objekty týchto tried.