আপনার নিজস্ব MVC ফ্রেমওয়ার্কে রাউটার ডেভেলপমেন্ট

এখন আপনার একটি রাউটার ডেভেলপ করতে হবে। এটি একটি ক্লাস যা রাউটগুলির একটি অ্যারে নেবে, অনুরোধকৃত URL নেবে, এবং নির্ধারণ করবে যে কোন রাউটি এই URL-এর সাথে মিলে যায়। সংশ্লিষ্ট রাউট খুঁজে পাওয়ার পর, আমাদের ক্লাসটিকে রাউটের প্যারামিটারের সাথে সংশ্লিষ্ট URL-এর অংশগুলি পেতে হবে।

আমাদের রাউটার যেন Track ক্লাসের একটি অবজেক্ট রিটার্ন করে যাতে রয়েছে সেই কন্ট্রোলারের নাম যেটিকে এই অনুরোধে কল করা উচিত, অ্যাকশনের নাম এবং URL থেকে প্রাপ্ত প্যারামিটারগুলি।

আমাদের Track ক্লাসটির যেন শুধুমাত্র পড়ার জন্য উপলব্ধ controller, action এবং params প্রোপার্টি থাকে:

/core/Track.php<?php
  namespace Core;
  
  class Track
  {
    private $controller;
    private $action;
    private $params;
    
    public function __construct($controller, $action, $params)
    {
      $this->controller = $controller;
      $this->action = $action;
      $this->params = $params;
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

উদাহরণ

উদাহরণস্বরূপ, ধরা যাক অ্যাড্রেস বারে /test/1/2/ টাইপ করা হয়েছে। ধরা যাক আমাদের কাছে এই অ্যাড্রেসের সাথে মিলে যাওয়া একটি রাউট রয়েছে:

/project/config/routes.php<?php
  new Route('/test/:var1/:var2/', 'test', 'index');
?>

এর মানে হল যে কন্ট্রোলারের নাম হবে test, অ্যাকশনের নাম - index, এবং প্যারামিটারের অ্যারে নিম্নরূপ হবে:

php<?php
  ['var1' => 1, 'var2' => 2]
?>

এই পাঠের লক্ষ্য হল Router ক্লাসটি লেখা, যা Track ক্লাসের একটি অবজেক্ট রিটার্ন করে। বাকি বিষয়গুলি এখন আমাদের সম্পর্কিত নয়। আসুন এই ক্লাসটি লেখা শুরু করি।

ব্যবহারিক কাজ

Задание 1

আমার Track ক্লাসের কোড কপি করুন এবং এটিকে ফাইলে রাখুন /core/Track.php।