⊗ppOpNsAu 105 of 107 menu

Samodejno nalaganje razredov v OOP v PHP

Že veste, da moramo za uporabo kakršnega koli razreda vključiti ga prek require. Ko je v projektu zelo veliko razredov, dobimo veliko priključkov, ki jih je zelo neprijetno pisati in težko nadzorovati.

Za rešitev te težave je bil v PHP dodan avtomatsko nalaganje razredov. Samodejno nalaganje omogoča PHP-ju, da samodejno naloži datoteko z razredom ob poskusu dostopa do tega razreda v kodi. Vendar pa se razredi ne bodo samodejno naložili - postavljeni morajo biti po mapah spletnega mesta na poseben način, po katerem koli dogovoru o imenih datotek in map razredov. Lahko uporabite privzeti dogovor v PHP-ju, ali pa si izmislite svojega in ga uporabite.

Za začetek si poglejmo standardni dogovor PHP. Ta dogovor je v tem, da če imamo neko datoteko z razredom, potem mora pot po mapah spletnega mesta do te datoteke ujemati se z imenskim prostorom datoteke, ime datoteke pa se mora ujemati z imenom razreda, ki se nahaja v njem. Pri tem morajo biti imena map in datoteke v malih črkah.

Poglejmo si na primeru. Recimo, da imamo naslednji razred:

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

Po dogovoru mora biti ta razred nameščen v mapi /core/admin/ v datoteki pagecontroller.php.

Zdaj pa v datoteki index.php uporabimo naš razred, ne da bi ga vključili prek require, ampak z uporabo samodejnega nalaganja. Za to na začetku datoteke, v kateri se kličejo razredi, je treba poklicati funkcijo spl_autoload_register. Naredimo to:

<?php spl_autoload_register(); // vklopimo samodejno nalaganje $obj = new Core\Admin\PageController; // mirno ustvarimo objekt ?>

V datoteki index.php vklopite samodejno nalaganje razredov. Po dogovoru o imenih map in datotek naredite razred Core\User, razred Core\Admin\Controller in razred Project\User\Data. V datoteki index.php ustvarite objekte teh razredov.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni