Ruting i thjeshtë në motor në PHP
Në mësimin e mëparshëm në faqen tonë të internetit kishte vetëm një grup të vetëm URL-sh. Sigurisht, zakonisht në faqen e internetit ka disa lloje adresash.
Çdo grup adresash do të përpunohet nga shprehja e vet e rregullt, të cilat quhen rute. Prandaj procesi i përputhjes së ruteve dhe kodit për përpunimin e tyre quhet ruting.
Le të themi, për shembull, se kemi dy lloje adresash. Le të shkruajmë një rute të vetme për secilin grup:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
// një faqe sipas slug
}
if (preg_match('#^/page/all$#', $url, $params)) {
// lista e të gjitha faqeve
}
?>
Për lehtësi, le të nxjerrim kodin e përpunimit të çdo rute në një skedar të veçantë:
<?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';
}
?>
Skedarët e përfshirë duhet të kthejnë si rezultat Një grup me titullin dhe përmbajtjen e faqes.
Le të shkruajmë kodin e skedarit të parë, i cili shfaq një faqe të vetme sipas slug-it të saj:
<?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;
?>
Dhe tani le të shkruajmë kodin e skedarit të dytë, i cili shfaq listën e lidhjeve për të gjitha faqet:
<?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' => 'all pages',
'content' => $content
];
return $page;
?>
Pas ekzekutimit të njërit prej kushteve, në variablin
$page gjithmonë do të ketë një grup nga një
strukturë. Le të përdorim këtë grup për të
vendosur titullin dhe përmbajtjen në shabllonin e faqes:
<?php
$layout = file_get_contents('layout.php');
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
echo $layout;
?>
Le të mbledhim gjithçka së bashku dhe të marrim kodin e mëposhtëm:
<?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;
?>
Le të themi se keni një faqe interneti me përdorues. Krijoni një faqe për të shfaqur një përdorues të vetëm, një faqe për të shfaqur të gjithë përdoruesit dhe një faqe me një formular për shtimin e një përdoruesi të ri.