ფაილებზე მომუშავე ძრავა PHP-ში

ჩვენ განვახორციელებთ საიტის ძრავას, რომელიც მოგვცემს საშუალებას შევქმნათ თარგის ფაილი, რომელსაც URL-ის მიხედვით სხვადასხვა კონტენტი მიერთება.

დაე, ჩვენი გვერდის სტრუქტურა ასე გამოიყურებოდეს:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>სათაური</title>
  </head>
  <body>
    <header>
      header
    </header>
    <main>
      კონტენტი
    </main>
    <header>
      footer
    </header>
  </body>
</html>

მოდით, იმ ადგილას, სადაც კონტენტის ჩასმა უნდა მოხდეს, ჩავსვათ ჩვენ მიერ გამოგონილი რაიმე ბრძანება ჩასასმელად, მაგალითად ასეთი: {{ content }}. შევცვალოთ ჩვენი საიტის თარგი:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>სათაური</title>
  </head>
  <body>
    <header>
      header
    </header>
    <main>
      {{ content }}
    </main>
    <header>
      footer
    </header>
  </body>
</html>

ახლა შევქმნათ ფოლდერი view, რომელშიც კონტენტის ფაილებს ჩავსვამთ. უშუალოდ ამ ფოლდერში ან მის ქვეფოლდერებში.

პირველი ფაილი იქნება ასეთი:

view/page1.php<div>
  კონტენტი 1
</div>

მეორე ფაილი იქნება ასეთი:

view/dir/page2.php<div>
  კონტენტი 2
</div>

მესამე ფაილი იქნება ასეთი:

view/dir/sub/page3.php<div>
  კონტენტი 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

განახორციელეთ აღწერილი ფაილებზე მომუშავე ძრავა.