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;
?>
Фарз кунем, ки шмо сомонае бо корбарон доред. Саҳифаеро барои намоиши як корбар, саҳифаеро барои чопи ҳамаи корбарон ва саҳифае бо шакл барои илова кардани корбари нав созед.