PHP-ում ֆայլային շարժիչ

Կիրականացնենք կայքի շարժիչ, որը կթույլ տա մեզ ստեղծել կաղապարի ֆայլ, որին կախված URL-ից կտարբեր կոնտենտ միանա։

Թող մեր էջի կառուցվածքը ունենա հետևյալ տեսքը՝

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 url-ով կլինի առաջին ֆայլը, /dir/page2 url-ով՝ երկրորդը, և /dir/sub/page3 url-ով՝ երրորդը։

Սկսենք իրականացնել։ Սկզբից .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

Իրականացրեք նկարագրված ֆայլային շարժիչը։