PHPда файллар асосидаги движок
Веб-саҳифа шаблони файлини яратадиган ва URLга қараб турли контент уланadigan веб-саҳифа движонини амалга оширамиз.
Бизнинг веб-саҳифанимиз тузилиши куйидагича бўлсин:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Контент киритилади жойга биз тўйдирган айрим
буюруқларни киритайлик, масалан: {{ content }}. Веб-саҳифа шаблонимизни ўзгартирамиз:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
Энди view папкасини яратамиз, унда
контент файлларни жойлаштирамиз. Тўғри шу
папкада ёки қисқича папкаларда.
Биринчи файл куйидагича бўлади:
<div>
content 1
</div>
Иккинчи файл куйидагича бўлади:
<div>
content 2
</div>
Учинчи файл куйидагича бўлади:
<div>
content 3
</div>
Энди манзил сатридаги URLга қараб мос
файл юклансин деб қилайлик. Бизнинг ҳолатимизда /page1
урли биринчи файл, /dir/page2
- иккинчи, ва /dir/sub/page3
- учинчи бўлади.
Амалга оширишни бошлаймиз. Авваламбош .htaccess файлида
ресурс файлларидан ташқари сўралган
манзилларнинг ҳаммаси index.php саҳифасига
редирект қилинадиган қилиб қўямиз:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
index.php саҳифасида сўралган URLни ўзгаргувчига
оламиз:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Сўнгра шаблон файли матнини оламиз:
<?php
$layout = file_get_contents('layout.php');
?>
Энди URLга қараб view папкасидан
мос келувчи контент файлини оламиз:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
Шаблон матнидаги биз тўйдирган буюруқни файлдан олинган контент билан алмаштирамиз:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
Браузерга алмаштирилган контент билан шаблон файлини чиқарамиз:
<?php
echo $layout;
?>
Ҳаммасини бирлаштириб, куйидаги кодни оламиз:
<?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;
?>
Тавсирланган файллар асосидаги движокни амалга оширинг.