Uelekezaji Rahisi katika Injini ya PHP
Katika somo lililopita kwenye tovuti yetu kulikuwa na kundi moja tu ya anwani. Bila shaka, kawaida kwenye tovuti kuna aina kadhaa za anwani.
Kila kundi la anwani litashughulikiwa na usemi wa kawaida wake, ambao huitwa njia. Ipasavyo mchakato wa kulinganisha njia na msimbo wa kuzishughulikia huitwa uelekezaji.
Wacha tuseme, kwa mfano, tuna aina mbili za anwani. Wacha kwa kila kundi tuandike njia yake:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
// ukurasa mmoja kwa slug
}
if (preg_match('#^/page/all$#', $url, $params)) {
// orodha ya kurasa zote
}
?>
Kwa urahisi, wacha tuondoe msimbo wa usindikaji wa kila njia kwenye faili tofauti:
<?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';
}
?>
Kwa matokeo yake, faili zinazojumuishwa zinapaswa kurejesha safu yenye kichwa na yaliyomo kwenye ukurasa.
Wacha tuandike msimbo wa faili la kwanza, linaloonyesha ukurasa mmoja kulingana na slug yake:
<?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;
?>
Sasa tuandike msimbo wa faili la pili, linaloonyesha orodha ya viungo kwa kurasa zote:
<?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' => 'kurasa zote',
'content' => $content
];
return $page;
?>
Baada ya kutekeleza moja ya masharti kwenye kutofautisha
$page kutakuwa na safu kutoka kwa muundo
mmoja daima. Tutumie safu hii ili
kuweka kichwa na yaliyomo kwenye kiolezo cha tovuti:
<?php
$layout = file_get_contents('layout.php');
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
echo $layout;
?>
Wacha tukusanye pamoja na tupate msimbo ufuatao:
<?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;
?>
Wacha tuseme una tovuti yenye watumiaji. Fanya ukurasa wa kuonyesha mtumiaji mmoja, ukurasa wa kuonyesha watumiaji wote na ukurasa wenye fomu ya kuongeza mtumiaji mpya.