PHP'de MVC'de Rotalarda Parametre Kullanımı

Açıklananları daha gerçekçi bir örnek üzerinde görelim. Kontrolcümüz PageController bir sayfa dizisi içersin (bu veriler model tarafından sağlanmalıdır, ancak henüz modelleri incelemedik, bu yüzden veriler şimdilik kontrolcüde dursun):

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 adlı bir işlem yapalım, bu işlem belirli bir numaraya (id) sahip sayfayı ekrana yazdırsın:

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()
    {
      // burada belirli bir numaralı sayfayı yazdıracağız
    }
  }
?>

/page/1/ adresine erişildiğinde ilk sayfanın metni yazdırılsın, /page/2/ adresine erişildiğinde - ikinci sayfanın metni yazdırılsın ve böyle devam etsin. İlgili rotayı yapalım:

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

Açıklanan show metodunu uygulayalım:

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'] ]; // numaraya göre sayfayı yazdırıyoruz
    }
  }
?>
Задание 1

Aşağıdaki diziyi içeren UserController kontrolcüsünü uygulayın:

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 kontrolcüsünde, belirli bir id'ye göre kullanıcıyı yazdıracak bir show işlemi yapın. Bu işlemin aşağıdaki formattaki adreste mevcut olmasını sağlayın: /user/:id/.

Задание 3

UserController kontrolcüsünde, belirtilen kullanıcının adını veya yaşını yazdıracak bir info işlemi yapın. Bu işlemin aşağıdaki formattaki adreste mevcut olmasını sağlayın: /user/:id/:key/, burada key parametresi 'name', 'age' veya 'salary' değerine sahip olacak.

Задание 4

UserController kontrolcüsünde, tüm kullanıcıların listesini ekrana yazdıracak bir all işlemi yapın. Bu işlemin aşağıdaki formattaki adreste mevcut olmasını sağlayın: /user/all/ (burada hiçbir parametre olmayacak).

Задание 5

UserController kontrolcüsünde, ilk N kullanıcının listesini ekrana yazdıracak bir first işlemi yapın. Bu işlemin aşağıdaki formattaki adreste mevcut olmasını sağlayın: /user/first/:n/, burada parametre, ekrana yazdırılacak kullanıcı sayısını belirtecek.