PHPda fayllarga asoslangan dvijok

Bizga shablon faylini yaratishga imkon beradigan sayt dvijogini amalga oshiramiz, unga URLga qarab turli kontent ulanadi.

Bizning sahifamizning tuzilishi quyidagicha boʻlsin:

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

Kontent joylashishi kerak boʻlgan joyga oʻzimiz oʻylab topgan qandaydir buyruqni joylashtiramiz, masalan shunday: {{ content }}. Saytimiz shablonini oʻzgartiramiz:

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

Endi view papkasini yaratamiz, unga kontent fayllarini joylashtiramiz. Toʻgʻridan-toʻgʻri shu papkada yoki undagi pastki papkalarda.

Birinchi fayl shunday boʻladi:

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

Ikkinchi fayl shunday boʻladi:

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

Uchinchi fayl shunday boʻladi:

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

Endi manzol satridagi URLga mos keladigan fayl tortib olinsin. Bizning holatda /page1 URLi birinchi faylga, /dir/page2 - ikkinchisiga, va /dir/sub/page3 - uchinchisiga mos keladi.

Amalga oshirishni boshlaymiz. Avval .htaccess faylida barcha soʻralgan manzillar, resurs fayllaridan tashqari, index.php sahifasiga yoʻnaltirilsin:

.htaccessRewriteEngine On
RewriteBase /

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

index.php sahifasida soʻralgan URLni oʻzgaruvchiga olamiz:

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

Keyin shablon faylining matnini olamiz:

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

Endi URL boʻyicha view papkasidan mos keladigan kontent faylini olamiz:

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

Shablon matnidagi oʻylab topgan buyrugʻimizni fayldan olingan kontent bilan almashtiramiz:

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

Shablonga almashtirilgan shablon faylini brauzerga chiqaramiz:

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

Hammasini birlashtirib, quyidagi kodni olamiz:

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

Tasvirlangan fayllarga asoslangan dvijokni amalga oshiring.