Mesin Berbasis File di PHP
Kami akan mengimplementasikan mesin situs yang memungkinkan kita membuat file template, ke mana konten yang berbeda akan dihubungkan tergantung pada URL.
Misalkan struktur halaman kita terlihat sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Mari kita di tempat di mana penyisipan konten harus terjadi
masukkan beberapa perintah yang kami buat untuk penyisipan,
misalnya seperti ini: {{ content }}. Mari kita ubah template situs kita:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
Sekarang mari kita buat folder view, di mana
kita akan menempatkan file konten. Langsung di
folder ini atau di subfolder.
File pertama akan seperti ini:
<div>
content 1
</div>
File kedua akan seperti ini:
<div>
content 2
</div>
File ketiga akan seperti ini:
<div>
content 3
</div>
Sekarang mari kita buat agar sesuai dengan URL
dari address bar, file yang sesuai akan
diambil. Dalam kasus kami, sesuai url /page1
akan menjadi file pertama, sesuai url /dir/page2
- yang kedua, dan sesuai url /dir/sub/page3
- yang ketiga.
Mari kita mulai implementasinya. Pertama, di file
.htaccess, mari kita buat agar semua alamat yang diminta,
kecuali file sumber daya, diarahkan ulang
ke halaman index.php:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
Pada halaman index.php, kita akan mendapatkan URL yang diminta
ke dalam variabel:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Kemudian kita dapatkan teks file template:
<?php
$layout = file_get_contents('layout.php');
?>
Sekarang berdasarkan URL, kita dapatkan dari folder view
file konten yang sesuai:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
Mari kita ganti perintah yang kita buat dalam teks template dengan konten yang diperoleh dari file:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
Tampilkan di browser file template dengan template yang disisipkan:
<?php
echo $layout;
?>
Mari kita kumpulkan semuanya dan dapatkan kode berikut:
<?php
$url = $_SERVER['REQUEST_URI'];
$layout = file_get_contents('layout.php');
$content = file_get_contents('view' . $url . '.php');
$layout = str_replace('{{ content }}', $content, $layout);
echo $layout;
?>
Implementasikan mesin berbasis file yang dijelaskan.