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

বর্ণিত ফাইল-ভিত্তিক ইঞ্জিনটি বাস্তবায়ন করুন।