⊗ppOpNsCA 107 of 107 menu

Egen funktion til automatisk indlæsning af klasser i OOP i PHP

Ofte kan standard automatisk indlæsning ikke passe dig af en eller anden grund. I sådanne tilfælde kan du skrive din egen automatiske indlæsning.

For at gøre dette skal du sende din skrevne callback-funktion som den første parameter til funktionen spl_autoload_register. Denne funktion vil blive kaldt, når PHP opdager adgang til en ikke-indlæst klasse. Navnet på klassen med navnerum vil blive sendt til parameteren af denne funktion:

<?php spl_autoload_register(function($class) { // variablen $class vil indeholde klassenavnet med navnerum }); ?>

Og funktionens ansvar er at indlæse klassen via require baseret på klassenavnet. Det betyder, at vi inde i denne funktion skal skrive vores egen regel for indlæsning af klasser, altså vores egen navnekonvention.

Lad os skrive et eksempel på vores egen automatiske indlæsning. Lad os for eksempel sige, at stien til klassefilen fra websitets rod skal være den samme som navnerummet, men med bevaret stor og lille skrift.

Det betyder, at hvis vi har klassen Core\Admin\PageController, så skal stien til den være Core/Admin/PageController.php.

Som du kan se, for at transformere klassenavnet med dets navnerum, skal du bare erstatte omvendte skråstreger med almindelige skråstreger, og tilføje .php til klassenavnet. Lad os gøre dette:

<?php spl_autoload_register(function($class) { $filename = str_replace('\\', '/', $class) . '.php'; require($filename); }); ?>

Vi vil dog ende med en relativ sti til filen (i forhold til websitets rod). Det er bedre at lave en absolut sti, sådan her:

<?php spl_autoload_register(function($class) { $root = $_SERVER['DOCUMENT_ROOT']; $filename = $root . '/' . str_replace('\\', '/', $class) . '.php'; require($filename); }); ?>

Der er en nuance mere. I forskellige operativsystemer kan stien gennem mapper være med almindelig skråstreg eller med omvendt skråstreg. Lad os gøre vores kode uafhængig af operativsystemet. For at gøre dette, i stedet for en almindelig skråstreg til at adskille stier, vil vi bruge konstanten DIRECTORY_SEPARATOR, som indeholder den korrekte skråstreg for det operativsystem, som vores script kører på i øjeblikket. Til sidst får vi følgende kode:

<?php spl_autoload_register(function($class) { $root = $_SERVER['DOCUMENT_ROOT']; $ds = DIRECTORY_SEPARATOR; $filename = $root . $ds . str_replace('\\', $ds, $class) . '.php'; require($filename); }); ?>

Test den automatiske indlæsningsfunktion, jeg har oprettet.

Find på din egen regel for automatisk indlæsning og implementer den.

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