PHP-তে ফাইল-ভিত্তিক ইঞ্জিন
আমরা একটি সাইট ইঞ্জিন বাস্তবায়ন করব যা আমাদেরকে একটি টেমপ্লেট ফাইল তৈরি করতে দেবে, যেখানে URL-এর উপর নির্ভর করে বিভিন্ন কনটেন্ট যুক্ত করা হবে।
ধরুন আমাদের পৃষ্ঠার গঠনটি নিম্নরূপ:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
আসুন সেই স্থানে, যেখানে কনটেন্ট সন্নিবেশিত হওয়া উচিত,
আমাদের দ্বারা উদ্ভাবিত কোনো সন্নিবেশ কমান্ড বসাই,
উদাহরণস্বরূপ এইরকম: {{ content }}। আমাদের সাইটের টেমপ্লেটটি পরিবর্তন করি:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
এখন একটি view ফোল্ডার তৈরি করি, যেখানে
আমরা কনটেন্ট ফাইলগুলি রাখব। সরাসরি এই ফোল্ডারে
বা সাবফোল্ডারে।
প্রথম ফাইলটি এইরকম হবে:
<div>
content 1
</div>
দ্বিতীয় ফাইলটি এইরকম হবে:
<div>
content 2
</div>
তৃতীয় ফাইলটি এইরকম হবে:
<div>
content 3
</div>
এখন আসুন এমন করি যাতে অ্যাড্রেস বারের URL
অনুসারে সংশ্লিষ্ট ফাইলটি লোড হয়। আমাদের ক্ষেত্রে, /page1
URL-এ প্রথম ফাইলটি হবে, /dir/page2
URL-এ - দ্বিতীয়টি, এবং /dir/sub/page3
URL-এ - তৃতীয়টি।
বাস্তবায়ন শুরু করি। প্রথমে .htaccess ফাইলে
এমন করি যাতে সকল অনুরোধকৃত
অ্যাড্রেস, রিসোর্স ফাইল ছাড়া, index.php পৃষ্ঠায়
রিডাইরেক্ট হয়:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
index.php পৃষ্ঠায় একটি ভেরিয়েবলে
অনুরোধকৃত URL পাব:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
এরপর টেমপ্লেট ফাইলের টেক্সট পাব:
<?php
$layout = file_get_contents('layout.php');
?>
এখন URL অনুসারে view ফোল্ডার থেকে
সংশ্লিষ্ট কনটেন্ট ফাইলটি পাব:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
টেমপ্লেটের টেক্সটে আমাদের উদ্ভাবিত কমান্ডটিকে ফাইল থেকে প্রাপ্ত কনটেন্ট দিয়ে প্রতিস্থাপন করি:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
ব্রাউজারে প্রতিস্থাপিত কনটেন্ট সহ টেমপ্লেট ফাইলটি আউটপুট করি:
<?php
echo $layout;
?>
সব একত্রিত করি এবং নিম্নলিখিত কোডটি পাই:
<?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;
?>
বর্ণিত ফাইল-ভিত্তিক ইঞ্জিনটি বাস্তবায়ন করুন।