⊗ppPmSDRt 444 of 447 menu

PHP даги двигада содда роутинг

Аввалги дарсда бизнинг сайтимизда факат битта URLлар гурухи бор эди. Албатта, оддата сайтида bир неча турдаги манзиллар бўлади.

Ҳар бир манзиллар гурухи ўз регуляр ифодаси билан ишлов берилади, улар рутлар деб аталади. Мос равишда рутлар ва уларни ишлов бериш учун кодни мослаш жараёни рутинг деб аталади.

Масалан, бизда икки турдаги манзиллар бор деб фараз қилайлик. Келинг, ҳар бир гуруҳ учун ўз рутини ёзайлик:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // слаг бўйича битта саҳифа } if (preg_match('#^/page/all$#', $url, $params)) { // барча саҳифалар рўйхати } ?>

Қулайлик учун ҳар бир рутни ишлов бериш кодини алаҳида файлга чиқарамиз:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

Улангувчи файллар ўз натижаси сифатида саҳифанинг sарлавҳаси ва контенти бўлган массивни қайтариши керак.

Келинг, унинг слаги бўйича битта саҳифани чиқарувчи биринчи файл кодини ёзайлик:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

Энди барча саҳифаларга ҳаволалар рўйхатини чиқарувчи иккинчи файл кодини ёзайлик:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'барча саҳифалар', 'content' => $content ]; return $page; ?>

Шартларнинг бири бажарилганидан кейин ўзгарувчида $page ҳар доим битта структурадан таркиб топган массив бўлади. Сайт шаблонига sарлавҳа ва контентни қўйиш учун бу массивдан фойдаланамиз:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Ҳаммасини бирлаштириб, куйидаги кодни оламиз:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

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

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш