⊗ppOpNsCA 107 of 107 menu

Eie funksie vir outolading van klasse in OOP in PHP

Dikwels kan die verstek outolaai-funksie jou nie pas om die een of ander rede nie. In sulke gevalle kan jy jou eie outolaai-funksie skryf.

Om dit te doen, moet jy jou geskrewe terugroep-funksie as die eerste parameter aan die funksie spl_autoload_register oorgee. Hierdie funksie sal geroep word wanneer PHP 'n verwysing na 'n ongelaaide klas opmerk. Die naam van die klas met naamspasie sal in die parameter van hierdie funksie aangegee word:

<?php spl_autoload_register(function($class) { // in die veranderlike $class sal die klassenaam met naamspasie wees }); ?>

En die plig van die funksie is om die klas te laai deur require, gebaseer op die klassenaam. Dat wil sê, binne hierdie funksie moet ons ons eie reël vir die laai van klasse spesifiseer, dit is ons eie naamkonvensie.

Kom ons skryf 'n voorbeeld van 'n eie outolaai-funksie. Laat ons byvoorbeeld sê dat die pad na die klaslêer vanaf die wortel van die webwerf dieselfde sal wees as die naamspasie, maar met die behoud van hoof- en kleinletters.

Dit wil sê, as ons 'n klas Core\Admin\PageController het, dan moet die pad daartoe Core/Admin/PageController.php wees.

Soos jy kan sien, om die klassenaam met sy naamspasie om te skakel, moet jy net die agterwaartse skuinsstrepe na vorentoe skuinsstrepe verander, en by die klassenaam .php voeg. Laat ons dit doen:

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

Ons sal egter 'n relatiewe pad na die lêer kry (relatief tot die webwerf se wortel). Dit is beter om 'n absolute pad te maak, soos volg:

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

Daar is nog 'n fyn punt. In verskillende bedryfstelsels kan die pad deur vouers met 'n vorentoe skuinsstreep of met 'n agterwaartse skuinsstreep wees. Laat ons ons kode onafhanklik maak van die bedryfstelsel. Om dit te doen, plaas ons die konstante DIRECTORY_SEPARATOR in die plek van die vorentoe skuinsstreep om paaie te skei. Dit bevat die korrekte skuinsstreep vir die bedryfstelsel waarin ons skrip tans uitgevoer word. Uiteindelik kry ons die volgende kode:

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

Toets die outolaai-funksie wat ek geskep het.

Bedenk jou eie outolaai-reël en implementeer dit.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp