PHP-তে MVC-তে রাউটে প্যারামিটার প্রয়োগ

আসুন বাস্তব জীবনের উদাহরণে বর্ণিত প্রয়োগটি দেখি। ধরুন আমাদের কন্ট্রোলার PageController-এ পৃষ্ঠাগুলির একটি অ্যারে রয়েছে (এই ডেটা মডেল দ্বারা প্রদান করা উচিত, কিন্তু আমরা এখনও মডেলগুলি নিয়ে আলোচনা করিনি, তাই এখন ডেটা শুধু কন্ট্রোলারে সংরক্ষিত থাকুক):

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    private $pages;
    
    public function __construct()
    {
      $this->pages = [
        1 => 'page 1',
        2 => 'page 2',
        3 => 'page 3',
      ];
    }
  }
?>

আসুন একটি অ্যাকশন show তৈরি করি, যা একটি নির্দিষ্ট নম্বর (id) সহ পৃষ্ঠাটি প্রদর্শন করবে:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    private $pages;
    
    public function __construct()
    {
      $this->pages = [
        1 => 'page 1',
        2 => 'page 2',
        3 => 'page 3',
      ];
    }
    
    public function show()
    {
      // এখানে একটি নির্দিষ্ট নম্বর সহ পৃষ্ঠাটি প্রদর্শন করব
    }
  }
?>

ধরুন /page/1/ ঠিকানায়アクセス করলে প্রথম পৃষ্ঠার পাঠ্য প্রদর্শিত হবে, /page/2/ ঠিকানায়アクセス করলে - দ্বিতীয় পৃষ্ঠার পাঠ্য এবং তাই। আসুন সংশ্লিষ্ট রাউট তৈরি করি:

/project/config/routes.php<?php
  use \Core\Route;
  
  return [
    new Route('/page/:id/', 'page', 'show'),
  ];
?>

আসুন বর্ণিত পদ্ধতি show বাস্তবায়ন করি:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    private $pages;
    
    public function __construct()
    {
      $this->pages = [
        1 => 'page 1',
        2 => 'page 2',
        3 => 'page 3',
      ];
    }
    
    public function show($params)
    {
      echo $this->pages[ $params['id'] ]; // নম্বর অনুসারে পৃষ্ঠা প্রদর্শন করি
    }
  }
?>
Задание 1

UserController কন্ট্রোলারটি বাস্তবায়ন করুন, যাতে নিম্নলিখিত অ্যারে রয়েছে:

php<?php
  $this->users = [
    1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
    2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
    3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
    4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
    5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
  ];
?>
Задание 2

UserController কন্ট্রোলারে, একটি অ্যাকশন show তৈরি করুন, যা একটি নির্দিষ্ট id অনুসারে ব্যবহারকারী প্রদর্শন করবে। এটি নিম্নলিখিত ধরনের ঠিকানায় উপলব্ধ হোক: /user/:id/।

Задание 3

UserController কন্ট্রোলারে, একটি অ্যাকশন info তৈরি করুন, যা একটি নির্দিষ্ট ব্যবহারকারীর নাম বা বয়স প্রদর্শন করবে। এই অ্যাকশনটি নিম্নলিখিত ধরনের ঠিকানায় উপলব্ধ হোক: /user/:id/:key/, যেখানে key এর মান হবে 'name', 'age' বা 'salary'।

Задание 4

UserController কন্ট্রোলারে, একটি অ্যাকশন all তৈরি করুন, যা সমস্ত ব্যবহারকারীর তালিকা স্ক্রিনে প্রদর্শন করবে। এই অ্যাকশনটি নিম্নলিখিত ধরনের ঠিকানায় উপলব্ধ হোক: /user/all/ (এখানে কোন প্যারামিটার থাকবে না)।

Задание 5

UserController কন্ট্রোলারে, একটি অ্যাকশন first তৈরি করুন, যা প্রথম N সংখ্যক ব্যবহারকারীর তালিকা স্ক্রিনে প্রদর্শন করবে। এই অ্যাকশনটি নিম্নলিখিত ধরনের ঠিকানায় উপলব্ধ হোক: /user/first/:n/, যেখানে প্যারামিটারে ব্যবহারকারীর সংখ্যা থাকবে, যাদের স্ক্রিনে প্রদর্শন করতে হবে।