Движок на датотеки во PHP
Ќе имплементираме движок на веб-сајт кој ќе ни овозможи да направиме датотека за шаблон, на која во зависност од URL-то ќе се поврзува различна содржина.
Нека структурата на нашата страница изгледа на следниот начин:
<!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-то
од адресната лента да се вчита соодветната
датотека. Во нашиот случај, на URL-то /page1
ќе биде првата датотека, на URL-то /dir/page2
- втората, и на URL-то /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;
?>
Имплементирајте го опишаниот движок на датотеки.