PHP-də fayl motoru
Bizə URL-dən asılı olaraq müxtəlif kontentin qoşulacağı şablon faylı yaratmağa imkan verəcək veb sayt motorunu həyata keçirək.
Tutaq ki, səhifəmizin quruluşu aşağıdakı kimi görünür:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Gəlin kontentin əlavə edilməli olduğu yerdə,
bizim tərəfimizdən uydurulmuş hər hansı bir
əmr əlavə edək, məsələn, belə: {{ content }}.
Veb saytımızın şablonunu dəyişək:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
İndi isə kontent fayllarını yerləşdirəcəyimiz
view qovluğunu yaradaq. Birbaşa bu
qovluqda və ya alt qovluqlarda.
İlk fayl belə olacaq:
<div>
content 1
</div>
İkinci fayl belə olacaq:
<div>
content 2
</div>
Üçüncü fayl belə olacaq:
<div>
content 3
</div>
Gəlin indi edək ki, ünvan sətirindən gələn URL-ə
uyğun fayl gətirilsin. Bizim vəziyyətimizdə
/page1 URL-inə birinci fayl,
/dir/page2 URL-inə ikinci fayl,
/dir/sub/page3 URL-inə isə üçüncü
fayl uyğun gəlsin.
Həyata keçirməyə başlayaq. Əvvəlcə .htaccess
faylında edək ki, resurs faylları istisna olmaqla,
bütün sorğu göndərilən ünvanlar index.php
səhifəsinə yönləndirilsin:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
index.php səhifəsində dəyişənə sorğu
göndərilən URL-i əldə edək:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Sonra şablon faylının mətnini əldə edək:
<?php
$layout = file_get_contents('layout.php');
?>
İndi isə URL-ə uyğun olaraq view
qovluğundan uyğun kontent faylını əldə edək:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
Şablon mətnində bizim tərəfimizdən uydurulmuş əmrı fayldan əldə edilmiş kontentlə əvəz edək:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
Brauzerə əlavə edilmiş kontentli şablon faylını çıxaraq:
<?php
echo $layout;
?>
Hamısını birlikdə yığaq və aşağıdakı kodu əldə edək:
<?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;
?>
Təsvir edilmiş fayl motorunu həyata keçirin.