⊗ppOpNsCA 107 of 107 menu

Дар ООП дар PHP барои худкор бор кардани синфҳо функсияи худсоз

Аксар вақт боркунии худкор бо супориш шумо метавонад барои шумо барои ягон сабаб мувофиқ набошад. Дар чунин ҳолат, шумо метавонед боркунии худкори худро нависед.

Барои ин, ба функсияи spl_autoload_register ба ҳамчун параметри аввал функсияи callback-и навиштаи шумо бояд гузаронида шавад. Ин функсия фарохонда мешавад, вақте ки PHP муроҷият ба синфи бор нашударо мушоҳида мекунад. Ба параметри ин функсия номи синф бо фазои номҳо меафтад:

<?php spl_autoload_register(function($class) { // дар тағирёбандаи $class номи синф бо фазои номҳо хоҳад буд }); ?>

Ва вазифаи функсия ин хоҳад буд, ки ба воситаи номи синф бор кардани он синфро тавассути require иҷро кунад. Яъне дар дохили ин функсия мо бояд қоидаи худро барои бор кардани синфҳо, яъне эътилофи номгузории худро нависем.

Биёед мисоле аз як боркунии худкори худро нависем. Бигзор, масалан, мо мегӯем, ки роҳ ба файли синф аз решаи сомона чунин хоҳад буд, ки монанди фазои номҳо, аммо бо нигоҳ доштани регистри аломатҳо.

Яъне, агар мо синфи Core\Admin\PageController дошта бошем, пас роҳ ба он бояд Core/Admin/PageController.php бошад.

Чунон ки шумо мебинед, барои табдил додани номи синф бо фазои номи он танҳо бояд символҳои каҷро ба рост иваз кард, ва ба номи синф .php илова кард. Биёед инро анҷом диҳем:

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

Бо вуҷуди ин, ба мо роҳи нисбӣ ба файл хоҳад омад (нисбат ба решаи сомона). Беҳтар аст роҳи мутлақ созед, ин тавр:

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

Як нюанси дигар ҳаст. Дар системаҳои амалиётии гуногун роҳ ба воситаи ҷилдҳо метавонад бо симоли каҷи рост ё бо каҷ бошад. Биёед коди худро аз системаи амалиётӣ мустақил созем. Барои ин ба ҷои симоли каҷи рост барои ҷудо кардани роҳҳо константаи DIRECTORY_SEPARATOR-ро гузорем, ки симоли каҷи дурусти он системаи амалиётиро дар бар мегирад, ки дар он ҳозир скрипти мо оғоз мешавад. Дар охир коди зеринро мегирем:

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

Функсияи боркунии худкори эҷодкардаи манро санҷед.

Қоидаи худро барои боркунии худкор дарёбед ва онро амалӣ кунед.

Тоҷикӣ
AfrikaansAzə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
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан