⊗ppOpNsAu 105 of 107 menu

Osztályok automatikus betöltése az OOP-ban PHP-ben

Már tudod, hogy egy osztály használatához be kell töltenünk azt a require segítségével. Amikor egy projektben nagyon sok osztály van, akkor sok betöltési utasítás gyűlik össze, amiket nagyon kényelmetlen írni és nehéz ellenőrizni.

A probléma megoldására a PHP-ben hozzáadták az osztályok automatikus betöltését. Az automatikus betöltés lehetővé teszi a PHP számára, hogy automatikusan betöltse a fájlt az osztállyal, amikor az kódban az osztályhoz próbálnak hivatkozni. Azonban az osztályok egyszerűen maguktól nem töltődnek be - ezeket speciális módon kell elhelyezni a webhely mappáiban, valamilyen megállapodást követve a fájl- és mappanevekről az osztályok számára. Használhatjuk a PHP-be épített megállapodást, vagy kitalálhatunk egy sajátot és azt használhatjuk.

Kezdjük a standard PHP megállapodással. Ez a megállapodás abból áll, hogy ha van egy fájlunk egy osztállyal, akkor a webhely mappáin belüli út ehhez a fájlhoz egybe kell essen a fájl névterével, a fájl neve pedig egybe kell essen a benne tárolt osztály nevével. Eközben a mappák és a fájl nevének kisbetűseknek kell lenniük.

Nézzünk egy példát. Tegyük fel, hogy a következő osztályunk van:

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

A megállapodás szerint ennek az osztálynak a /core/admin/ mappában kell elhelyezkednie a pagecontroller.php fájlban.

Most használjuk a index.php fájlban az osztályunkat anélkül, hogy a require segítségével töltöttük volna be, hanem az automatikus betöltést használva. Ehhez a fájl elején, amelyben az osztályok meghívásra kerülnek, meg kell hívni a spl_autoload_register függvényt. Tegyük ezt meg:

<?php spl_autoload_register(); // bekapcsoljuk az automatikus betöltést $obj = new Core\Admin\PageController; // nyugodtan létrehozhatunk egy objektumot ?>

A index.php fájlban kapcsolja be az osztályok automatikus betöltését. A mappa- és fájlnevekre vonatkozó megállapodást követve készítse el a Core\User osztályt, a Core\Admin\Controller osztályt és a Project\User\Data osztályt. A index.php fájlban hozzon létre objektumokat ezekből az osztályokból.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás