Perutean Sederhana di Mesin PHP
Dalam pelajaran sebelumnya, situs web kami hanya memiliki satu grup URL. Tentu saja, biasanya sebuah situs web memiliki beberapa jenis alamat.
Setiap grup alamat akan diproses dengan ekspresi regulernya sendiri, yang disebut rute. Oleh karena itu, proses pencocokan rute dan kode untuk memprosesnya disebut perutean.
Misalnya, kita memiliki dua jenis alamat. Mari kita tulis rute untuk setiap grup:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
// satu halaman berdasarkan slug
}
if (preg_match('#^/page/all$#', $url, $params)) {
// daftar semua halaman
}
?>
Untuk kemudahan, mari kita pindahkan kode pemrosesan setiap rute ke file terpisah:
<?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';
}
?>
File yang disertakan harus mengembalikan array dengan judul dan konten halaman sebagai hasilnya.
Mari kita tulis kode file pertama, yang menampilkan satu halaman berdasarkan slug-nya:
<?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;
?>
Dan sekarang mari kita tulis kode file kedua, yang menampilkan daftar tautan ke semua halaman:
<?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;
?>
Setelah salah satu kondisi dieksekusi, dalam variabel
$page akan selalu ada array dengan satu
struktur. Mari gunakan array ini untuk
memasukkan judul dan konten ke dalam template situs:
<?php
$layout = file_get_contents('layout.php');
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
echo $layout;
?>
Mari gabungkan semuanya dan dapatkan kode berikut:
<?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;
?>
Misalkan Anda memiliki situs web dengan pengguna. Buatlah halaman untuk menampilkan satu pengguna, halaman untuk menampilkan semua pengguna, dan halaman dengan formulir untuk menambahkan pengguna baru.