PHP ဖိုင်များပေါ်အခြေခံသော Engine

ဝက်ဘ်ဆိုက်တစ်ခု၏ engine ကို အကောင်အထည်ဖော်ပါမည်။ ထို engine သည် 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>

ယခု address bar မှ 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);
?>

ထည့်သွင်းပြီးသား တမ်းပလိတ်ပါသည့် တမ်းပလိတ်ဖိုင်ကို browser သို့ ထုတ်ပြပါမည်။

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

ဖော်ပြထားသော ဖိုင်များပေါ်အခြေခံသည့် engine ကို အကောင်အထည်ဖော်ပါ။