PHPда файллар асосидаги движок

Веб-саҳифа шаблони файлини яратадиган ва URLга қараб турли контент уланadigan веб-саҳифа движонини амалга оширамиз.

Бизнинг веб-саҳифанимиз тузилиши куйидагича бўлсин:

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

Тавсирланган файллар асосидаги движокни амалга оширинг.