⊗ppPmSDRt 444 of 447 menu

PHP движогунун жөнөкөй роутинг

Мурунку сабакта биздин сайтта бир гана URL дарегинин тобу бар эле. Албетте, адатта сайтта бир нече түрдөгү даректер болот.

Даректердин ар бир тобу өзүнүн регулярдуу туюнтмасы менен ишке ашырылат, анын аталышы роут. Ошого жараша роуттарды жана аларды иштетүү үчүн кодду дал келтирүү процесси роутинг деп аталат.

Мисалы, бизде эки түрдөгү даректер бар деп коёлу. Ар бир топ үчүн өз роутун жазалы:

<?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'; } ?>

Киргизилүүчү файлдар өз натыйжасы катары барактын тайтлы жана контентин камтыган массивди кайтарышы керек.

Анын слагы боюнча бир баракты чыгара турган биринчи файлдын кодуна жазалы:

<?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 ар дайым бир структурадан турган массив болот. Бул массивди колдонуп, тайтлды жана контентти сайттын үлгүсүнө кыстаралы:

<?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çeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу