PHP-de faýllar bilen işleýän döredijisini (dwižok) ýasaýarys

Bize URL-y baglylykda dürli mazmuny birikdirip biljek web sahypa döredijisini (dwižok) amala aşyralyň.

Görkezilişi ýaly, bizim sahypamyzyň gurluşy aşakdaky ýaly bolsun:

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

Indi, mazmunyň ýerleşdirilmeli ýerine, biz oýlap tapylan bir buýruk, meselem {{ content }} ýaly birini goýalyň. Sahypamyzyň şablonyny üýtgedeliň:

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

Indi view (görmek) direktoriýasyny dörediň, onda mazmun faýllaryny ýerleşdireris. Diýrek şu direktoriýada ýa-da onuň içindäki direktoriýalarda.

Birinji faýl şeýle bolar:

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

Ikinji faýl şeýle bolar:

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

Üçünji faýl şeýle bolar:

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

Indi, URL üsti bilen degişli faýlyň ýüklenmegini amala aşyralyň. Bizim ýagdaýymyzda, /page1 URL-i üçin birinji faýl, /dir/page2 üçin ikinji faýl we /dir/sub/page3 üçin üçünji faýl ýüklenmeli.

Amala aşyrmaga başlaýalyň. Ilki bilen, .htaccess faýlynda, resurs faýllaryndan başga ähli soraglary index.php sahypasyna gönükdirmek üçin aşakdaky ýaly edeliň:

.htaccessRewriteEngine On
RewriteBase /

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

index.php sahypasynda, soralýan URL-i üýtgeýjide alyň:

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

Soňra, şablon faýlynyň tekstiňi alyň:

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

Indi, URL bilen view direktoriýasyndan degişli mazmun faýlyny alyň:

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

Şablondaky tekstiň içinde biziň oýlap tapylan buýrugymyzy faýldan alynan mazmun bilen çalyşdyryň:

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

Goýlan şablon bilen şablon faýlyny brauzere çykaryň:

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

Hemmesini bir ýere jemläň we aşakdaky kody alyň:

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

Düşündirilen faýl döredijisini (dwižok) amala aşyryň.