მარტივი როუტინგი 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;
?>
დავუშვათ, გაქვთ საიტი მომხმარებლებით. გახადეთ გვერდი ერთი მომხმარებლის საჩვენებლად, გვერდი ყველა მომხმარებლის საჩვენებლად და გვერდი ფორმით ახალი მომხმარებლის დასამატებლად.