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 ලිපින පටියෙන් අනුරූප අන්තර්ගත ගොනුව ලබා ගනී. අපගේ නඩුවේ, 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

විස්තර කරන ලද ගොනු මත පදනම් වූ එන්ජිම ක්‍රියාත්මක කරන්න.