独自のMVCフレームワークにおけるルーターの開発

次に、ルーターを開発する必要があります。 これは、ルートの配列とリクエストされたURLを受け取り、 どのルートがそのURLに対応するかを判断するクラスです。 対応するルートを見つけた後、このクラスはルートのパラメータに対応する URLの部分を取得する必要があります。

このルーターは、結果として、そのリクエストに対して呼び出されるべき コントローラー名、アクション名、およびURLからのパラメータを含む クラスTrackのオブジェクトを返すことにします。

クラス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]
?>

このレッスンの目標は、クラスTrackのオブジェクトを返す クラスRouterを作成することです。 それ以外のことは、今のところ気にしません。 さあ、このクラスの作成に取り掛かりましょう。

実践的なタスク

Задание 1

私のクラスTrackのコードをコピーし、 ファイル/core/Track.phpに配置してください。