⊗ppOpNsCA 107 of 107 menu

Pašu veidota funkcija klases automātiskai ielādei OOP PHP

Bieži vien noklusējuma automātiskā ielāde var jūs neapmierināt kādu iemeslu dēļ. Šādā gadījumā var uzrakstīt savu automātisko ielādi.

Lai to izdarītu, funkcijai spl_autoload_register kā pirmo parametru jānodod jūsu sarakstītā atgriezeniskā saite (callback) funkcija. Šī funkcija tiks izsaukta, kad PHP atklās piekļuvi neielādētai klasei. Šīs funkcijas parametrā tiks iegūts klases nosaukums ar nosaukumu telpu:

<?php spl_autoload_register(function($class) { // mainīgajā $class būs klases nosaukums ar nosaukumu telpu }); ?>

Un funkcijas pienākums būs pēc klases nosaukuma veikt šīs klases ielādi caur require. Tas ir, šīs funkcijas iekšienē mums jādefinē savs noteikums klases ielādei, tas ir, savu nosaukšanas konvenciju.

Uzrakstīsim kādu piemēru savas automātiskās ielādes. Pieņemsim, piemēram, ka mēs nosakām, ka ceļš uz klases failu no vietnes saknes būs tāds pats kā nosaukumu telpa, bet saglabājot simbolu reģistru.

Tas ir, ja mums ir klase Core\Admin\PageController, tad ceļš uz to vajadzētu būt Core/Admin/PageController.php.

Kā jūs redzat, lai pārveidotu klases nosaukumu ar tā nosaukumu telpu vajag vienkārši nomainīt reversos slīpsvītras uz tiešajām, bet klases nosaukumam pievienot .php. Darīsim to:

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

Tomēr mēs iegūsim relatīvo ceļu uz failu (attiecībā pret vietnes sakni). Labāk izveidot absolūto ceļu, šādi:

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

Ir vēl nianse. Dažādās operētājsistēmās ceļš pa mapēm var būt ar tiešo slīpsvītru vai ar reverso. Padarīsim mūsu kodu neatkarīgu no operētājsistēmas. Lai to izdarītu, tā vietā, lai tiešo slīpsvītru ceļu atdalīšanai, izmantosim konstantu DIRECTORY_SEPARATOR, kas satur pareizo slīpsvītru tās operētājsistēmas, kādā šobrīd tiek palaists mūsu skripts. Rezultātā iegūstam šādu kodu:

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

Pārbaudiet manis izveidoto automātiskās ielādes funkciju.

Izdomājiet savu automātiskās ielādes noteikumu un realizējiet to.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt