⊗ppOpNsAu 105 of 107 menu

Automatické načítání tříd v OOP v PHP

Už víte, že abyste mohli použít nějakou třídu, musíme ji načíst pomocí require. Když je v projektu velmi mnoho tříd, vzniká mnoho načtení, které je velmi nepohodlné psát a obtížně je kontrolovat.

Pro vyřešení tohoto problému byla v PHP přidána automatické načítání tříd. Automatické načítání umožňuje PHP automaticky načíst soubor s třídou při pokusu o přístup k této třídě v kódu. Nicméně, třídy se samy od sebe nenačtou - je nutné je umístit do složek webu speciálním způsobem, podle nějakého dohody o názvech souborů a složek tříd. Můžete používat vestavěnou dohodu v PHP, nebo si vymyslet vlastní a používat ji.

Pojďme nejprve rozebrat standardní dohodu PHP. Tato dohoda spočívá v tom, že pokud máme nějaký soubor s třídou, tak cesta přes složky webu k tomuto souboru musí odpovídat jmennému prostoru souboru, a název souboru musí odpovídat názvu třídy, která v něm je uložena. Přitom názvy složek a souboru musí být malými písmeny.

Podívejme se na příklad. Předpokládejme, že máme následující třídu:

<?php namespace Core\Admin; class PageController { } ?>

Podle dohody by tato třída měla být umístěna v složce /core/admin/ v souboru pagecontroller.php.

Nyní v souboru index.php použijme naši třídu, bez načtení pomocí require, ale pomocí automatického načítání. K tomu na začátku souboru, ve kterém jsou volány třídy, je třeba zavolat funkci spl_autoload_register. Udělejme to:

<?php spl_autoload_register(); // zapneme automatické načítání $obj = new Core\Admin\PageController; // klidně vytvoříme objekt ?>

V souboru index.php zapněte automatické načítání tříd. Podle dohody o názvech složek a souborů vytvořte třídu Core\User, třídu Core\Admin\Controller a třídu Project\User\Data. V souboru index.php vytvořte objekty těchto tříd.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout