პარამეტრების გამოყენება რაუტებში MVC-ში PHP-ში

მოდით შევხედოთ აღწერილის გამოყენებას უფრო რეალურ მაგალითზე. დავუშვათ, ჩვენი კონტროლერი 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/, სადაც პარამეტრში იქნება მომხმარებელთა რაოდენობა, რომლების გამოტანაც საჭიროა ეკრანზე.