PHP ইঞ্জিনে সহজ রাউটিং

আমাদের ওয়েবসাইটের পূর্ববর্তী পাঠে শুধুমাত্র একটি URL গ্রুপ ছিল। অবশ্যই, সাধারণত একটি ওয়েবসাইটে বিভিন্ন ধরনের অ্যাড্রেস থাকে।

প্রতিটি অ্যাড্রেস গ্রুপ তার নিজস্ব রেগুলার এক্সপ্রেশন দ্বারা প্রক্রিয়া করা হবে, যাকে রাউট বলা হয়। সেই অনুযায়ী রাউট এবং তাদের প্রক্রিয়াকরণের জন্য কোড মেলানোর প্রক্রিয়াকে রাউটিং বলা হয়।

ধরা যাক, আমাদের দুই ধরনের অ্যাড্রেস আছে। আসুন প্রতিটি গ্রুপের জন্য তার নিজস্ব রাউট লিখি:

index.php<?php
  if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
    // একটি স্লাগ দ্বারা একটি পৃষ্ঠা
  }
  
  if (preg_match('#^/page/all$#', $url, $params)) {
    // সমস্ত পৃষ্ঠার তালিকা
  }
?>

সুবিধার জন্য, আসুন প্রতিটি রাউট প্রক্রিয়াকরণের কোড একটি পৃথক ফাইলে রাখি:

index.php<?php
  if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
    $page = include 'view/page/show.php';
  }
  
  if (preg_match('#^/page/all$#', $url, $params)) {
    $page = include 'view/page/all.php';
  }
?>

অন্তর্ভুক্ত ফাইলগুলি তাদের ফলাফল হিসাবে পৃষ্ঠার শিরোনাম এবং বিষয়বস্তু সহ একটি অ্যারে ফেরত দিতে হবে।

আসুন প্রথম ফাইলের কোড লিখি, যা তার স্লাগ দ্বারা একটি পৃষ্ঠা দেখায়:

view/page/show.php<?php
  $slug   = $params[1];
  $query  = "SELECT * FROM pages WHERE slug='$slug'";
  
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  $page   = mysqli_fetch_assoc($res);
  
  return $page;
?>

এবং এখন দ্বিতীয় ফাইলের কোড লিখি, যা সমস্ত পৃষ্ঠার লিঙ্কের তালিকা দেখায়:

view/page/all.php<?php
  $query = "SELECT slug, title FROM pages";
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  
  for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row);
  
  $content = '';
  foreach ($data as $page) {
    $content .= '
      <div>
        <a href="/page/'  . $page['slug'] . '">' . $page['title'] . '</a>
      </div>
    ';
  }
  
  $page = [
    'title' => 'সমস্ত পৃষ্ঠা',
    'content' => $content
  ];
  
  return $page;
?>

শর্তগুলির একটির কার্যকর হওয়ার পরে, ভেরিয়েবল $page-এ সর্বদা একটি কাঠামো থেকে একটি অ্যারে থাকবে। সাইটের টেমপ্লেটে শিরোনাম এবং বিষয়বস্তু সন্নিবেশ করতে এই অ্যারেটি ব্যবহার করা যাক:

index.php<?php
  $layout = file_get_contents('layout.php');
  $layout = str_replace('{{ title }}', $page['title'], $layout);
  $layout = str_replace('{{ content }}', $page['content'], $layout);
  
  echo $layout;
?>

এখন সব একসাথে সংগ্রহ করি এবং নিম্নলিখিত কোড পাই:

index.php<?php
  $url = $_SERVER['REQUEST_URI'];
  
  if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
    $page = include 'view/page/show.php';
  }
  
  if (preg_match('#^/page/all$#', $url, $params)) {
    $page = include 'view/page/all.php';
  }
  
  $layout = file_get_contents('layout.php');
  $layout = str_replace('{{ title }}', $page['title'], $layout);
  $layout = str_replace('{{ content }}', $page['content'], $layout);
  
  echo $layout;
?>
Задание 1

ধরুন আপনার কাছে ব্যবহারকারীদের সাথে একটি ওয়েবসাইট আছে। একটি ব্যবহারকারী দেখানোর জন্য একটি পৃষ্ঠা, সমস্ত ব্যবহারকারী দেখানোর জন্য একটি পৃষ্ঠা এবং একটি নতুন ব্যবহারকারী যোগ করার জন্য ফর্ম সহ একটি পৃষ্ঠা তৈরি করুন।