⊗ppOpNsAu 105 of 107 menu

Autoload af klasser i OOP i PHP

Du ved allerede, at for at bruge en hvilken som helst klasse, skal vi inkludere den via require. Når et projekt har meget mange klasser, resulterer det i mange inkluderinger, som er meget besværlige at skrive og svære at kontrollere.

For at løse dette problem blev autoload af klasser tilføjet i PHP. Autoload tillader PHP automatisk at indlæse filen med en klasse, når der forsøges adgang til denne klasse i koden. Dog vil klasser ikke blive indlæst af sig selv - de skal placeres i mapperne på sitet på en speciel måde, ved at følge en eller anden konvention om navngivning af filer og mapper for klasser. Man kan bruge den indbyggede konvention i PHP, eller finde på sin egen og bruge den.

Lad os starte med at se på PHP's standardkonvention. Denne konvention består i, at hvis vi har en fil med en klasse, så skal stien gennem sitets mapper til denne fil svare til filens namespace, og filnavnet skal svare til navnet på den klasse, der er gemt i den. Samtidig skal navnene på mapper og fil være med små bogstaver.

Lad os se på et eksempel. Antag, at vi har følgende klasse:

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

Ifølge konventionen skal denne klasse være placeret i mappen /core/admin/ i filen pagecontroller.php.

Lad os nu i filen index.php bruge vores klasse, uden at inkludere den via require, men ved at bruge autoload. For at gøre dette skal vi i starten af filen, hvor klasserne kaldes, kalde funktionen spl_autoload_register. Lad os gøre det:

<?php spl_autoload_register(); // aktiverer autoload $obj = new Core\Admin\PageController; // skaber roligt et objekt ?>

I filen index.php skal du aktivere automatisk indlæsning af klasser. Ved at følge konventionen om navngivning af mapper og filer, skal du oprette klassen Core\User, klassen Core\Admin\Controller og klassen Project\User\Data. I filen index.php skal du oprette objekter af disse klasser.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis