Движок на датотеки во PHP

Ќе имплементираме движок на веб-сајт кој ќе ни овозможи да направиме датотека за шаблон, на која во зависност од URL-то ќе се поврзува различна содржина.

Нека структурата на нашата страница изгледа на следниот начин:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>title</title>
  </head>
  <body>
    <header>
      header
    </header>
    <main>
      content
    </main>
    <header>
      footer
    </header>
  </body>
</html>

Дадеме на тоа место, во кое треба да се случи вметнување на содржината, да вметнеме некоја намислена од нас команда за вметнување, на пример ваква: {{ content }}. Да го измениме шаблонот на нашиот сајт:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>title</title>
  </head>
  <body>
    <header>
      header
    </header>
    <main>
      {{ content }}
    </main>
    <header>
      footer
    </header>
  </body>
</html>

Сега да направиме папка view, во која ќе сместуваме датотеки со содржина. Директно во оваа папка или во подпапки.

Првата датотека ќе биде ваква:

view/page1.php<div>
  content 1
</div>

Втората датотека ќе биде ваква:

view/dir/page2.php<div>
  content 2
</div>

Третата датотека ќе биде ваква:

view/dir/sub/page3.php<div>
  content 3
</div>

Сега да направиме така што според URL-то од адресната лента да се вчита соодветната датотека. Во нашиот случај, на URL-то /page1 ќе биде првата датотека, на URL-то /dir/page2 - втората, и на URL-то /dir/sub/page3 - третата.

Да почнеме со имплементација. За почеток во датотеката .htaccess да направиме така што сите побарани адреси, освен датотеките со ресурси, да бидат редиректирани кон страницата index.php:

.htaccessRewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php

На страницата index.php ќе го добиеме во променлива побараното URL:

index.php<?php
  $url = $_SERVER['REQUEST_URI'];
?>

Потоа ќе го добиеме текстот од датотеката со шаблонот:

index.php<?php
  $layout = file_get_contents('layout.php');
?>

Сега според URL-то ќе добиеме од папката view соодветна датотека со содржина:

index.php<?php
  $content = file_get_contents('view' . $url . '.php');
?>

Во текстот на шаблонот ќе ја замениме намислената од нас команда со добиената од датотеката содржина:

index.php<?php
  $layout = str_replace('{{ content }}', $content, $layout);
?>

Ќе го испечатиме во прелистувачот датотеката со шаблонот со вметнатата содржина:

index.php<?php
  echo $layout;
?>

Ќе собереме сè заедно и ќе го добиеме следниот код:

index.php<?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;
?>
Задание 1

Имплементирајте го опишаниот движок на датотеки.