Рухавік на файлах у 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 з адраснага радка падцягваўся адпаведны файл. У нашым выпадку па ўрлу /page1 будзе першы файл, па ўрлу /dir/page2 - другі, і па ўрлу /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

Рэалізуйце апісаны рухавік на файлах.