Պարամետրերի կիրառումը ռուտերում 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/, որտեղ պարամետրում կլինի այն օգտատերերի քանակը, որոնք պետք է ցուցադրվեն էկրանին: