⊗ppOpNsCA 107 of 107 menu

Kazi yako ya kujipakia otomatiki ya madarasa katika OOP katika PHP

Mara nyingi kujipakia otomatiki kwa chaguo-msingi huenda haukukidhi mahitaji yako kwa sababu fulani. Katika hali kama hiyo unaweza kuandika kujipakia otomatiki yako mwenyewe.

Ili kufanya hivyo, kwenye kazi spl_autoload_register unahitaji kupitisha kazi yako iliyoandikwa ya wito-wenyewe kama kigezo cha kwanza. Kazi hii itaitwa wakati PHP itagundua marejeo kwa darasa ambalo halijapakiwa. Jina la darasa lenye nafasi ya jina litaingia kwenye kigezo cha kazi hii:

<?php spl_autoload_register(function($class) { // katika kibadilishaji $class kutakuwa na jina la darasa lenye nafasi ya jina }); ?>

Na wajibu wa kazi huu ni kupakia darasa hilo kupitia require kulingana na jina la darasa. Yaani ndani ya kazi hii tunapaswa kuandika kanuni yetu wenyewe ya kupakia madarasa, yaani mkataba wetu wenyewe wa majina.

Wacha tuandike mfano wa kujipakia otomatiki yetu. Kwa mfano, wacha tuseme kwamba njia ya faili ya darasa kutoka kwenye mzizi wa tovuti itakuwa sawa na nafasi ya jina, lakini kwa kuhifadhi herufi kubwa na ndogo.

Yaani, ikiwa tuna darasa Core\Admin\PageController, basi njia yake inapaswa kuwa Core/Admin/PageController.php.

Kama unavyoona, ili kubadilisha jina la darasa na nafasi yake ya jina unahitaji tu kubadilisha alama ya nyuma (\) kuwa alama ya mbele (/), na kwa jina la darasa ongeza .php. Wacha tufanye hivi:

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

Hata hivyo, tutapata njia ya jamaa kwa faili (kutoka kwenye mzizi wa tovuti). Ni bora kutengeneza njia kamili, kama hii:

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

Kuna undani mwingine. Katika mifumo tofauti ya uendeshaji nia ya kwenye folda inaweza kuwa na alama ya mbele (/) au ya nyuma (\). Wacha tufanye msimbo wetu usitegemee mfumo wa uendeshaji. Ili kufanya hivyo, badala ya alama ya mbele (/) kwa kugawanya njia, tutatumia kiwakilishi DIRECTORY_SEPARATOR, kinachokuwa na alama sahihi ya mfumo ule wa uendeshaji ambao skripti yetu inaendeshwa. Mwishowe tutapata msimbo ufuatao:

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

Jaribu kazi yangu iliyoundwa ya kujipakia otomatiki.

Undua kanuni yako mwenyewe ya kujipakia otomatiki na uitumikishe.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa