Injini ya Faili katika PHP

Tutatekeleza injini ya tovuti, ambayo itaturuhusu kuunda faili la kiolezo, ambalo kulingana na URL kitaunganishwa na maudhui mbalimbali.

Muundo wa ukurasa wetu uonekane kama ifuatavyo:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>kichwa</title>
  </head>
  <body>
    <header>
      kichwa
    </header>
    <main>
      maudhui
    </main>
    <header>
      kijachini
    </header>
  </body>
</html>

Wacha mahali ambapo maudhui yanapaswa kuingizwa tuingize amri yetu ya kuingiza, kwa mfano kama hii: {{ content }}. Tubadilishe kiolezo cha tovuti yetu:

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

Sasa tufanye folda view, ambayo tutaweka faili za maudhui. Hasa kwenye folda hii au kwenye folda ndogo.

Faili ya kwanza itakuwa hivi:

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

Faili ya pili itakuwa hivi:

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

Faili ya tatu itakuwa hivi:

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

Sasa tufanye ili kwa kutumia URL kutoka kwa mstari wa anua faili inayofanana itafutwe. Kwa upande wetu, kwa anua /page1 itakuwa faili ya kwanza, kwa anua /dir/page2 - ya pili, na kwa anua /dir/sub/page3 - ya tatu.

Tuanze utekelezaji. Kwanza kwenye faili .htaccess tufanye ili maombi yote ya anua, isipokuwa faili za rasilimali, zielekezwe kwenye ukurasa index.php:

.htaccessRewriteEngine On
RewriteBase /

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

Kwenye ukurasa index.php tutapata kwenye kigezo URL iliyoombwa:

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

Kisha tutapata maandishi ya faili la kiolezo:

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

Sasa kwa URL tutapata kutoka kwa folda view faili inayofanana ya maudhui:

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

Tubadilishe kwenye maandishi ya kiolezo amri yetu ya kuingiza kwa maudhui yaliyopatikana kutoka kwa faili:

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

Tutoze kwenye kivinjari faili la kiolezo na kiolezo kilichowekwa:

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

Tukusanye pamoja na tutapata msimbo ufuatao:

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

Tekeleza injini ya faili iliyoelezewa.