[[oktatas:web:composer|< Composer]] ====== Composer automatikus betöltés ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2021 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Az automatikus betöltésről ===== Ha nagyon sok külső könyvtárat használunk, sok include és require utasítást kell használnunk. Ezek fenntartása egy idő után nehézkessé válik. Az autoloader azért is hasznos, mert csak azokat modulokat tölti be, amelyeket éppen használunk, így kisebb memóriafelhasználást az eredmény. Ezektől függetlenül a PHP is tartalmaz egy automatikus betöltő függvényt: spl_autoload_register() A Composer automatikus fájlbetöltő mechanizmusai. * files - fájlok betöltése * classmap - betöltés könyvtárból * PSR-0 betöltés * PSR-4 betöltés ===== A files ===== { "autoload": { "files": ["lib/Valami.php", "lib/Masr.php"] } } Ahol szeretnénk automatikusan betölteni: ===== A classmap ===== A könyvtárak listáját adjunk, meg, a betöltő megkeresi az kívánt fájlokat. { "autoload": { "classmap": ["lib"] } } ===== PSR-0 ===== A PSR-0 a PHP-FIG csoport által ajánlott szabvány az automatikus betöltéshez. A szabvány szerint névtereket használunk a betöltéshez. A következő szerkezetet kell követni: \Vendornév\[Névtér\]*Osztálynév Az osztályokat olyan fájlokba és könyvtárszerkezetbe kell menteni, ami követi a névtereket. { "autoload": { "psr-0": { "Shape": "src" } } } ===== PSR-4 ===== A PSR-4 szabványban is névterket kell használnunk, mint a PSR-0-ban. A könyvtárszerkezetnek viszont nem kell megegyeznie a névtérrel. A composer.json fájlban a névtér \\ jelekre kell végződjön. { "autoload": { "psr-4": { "Shape\\": "src/Shape" } } } ===== Források ===== * https://getcomposer.org/doc/01-basic-usage.md#autoloading (2021) * https://www.php.net/manual/en/function.spl-autoload-register.php (2021) * https://code.tutsplus.com/tutorials/how-to-autoload-classes-with-composer-in-php--cms-35649 (2021)