Desenvolvimento de um roteador para seu próprio framework MVC

Agora você precisa desenvolver um roteador. Ele representa uma classe que irá pegar o array de rotas, pegar a URL solicitada, e determinar qual das rotas corresponde a essa URL. Após encontrar a rota correspondente, nossa classe deve obter as partes da URL que correspondem aos parâmetros da rota.

Como resultado, deixe nosso roteador retornar um objeto da classe Track, contendo o nome do controlador que deve ser chamado para essa solicitação, o nome da ação e os parâmetros da URL.

Deixe nossa classe Track ter as propriedades controller, action e params, acessíveis apenas para leitura:

/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;
    }
  }
?>

Exemplo

Por exemplo, suponha que na barra de endereços foi digitado /test/1/2/. Suponha que temos uma rota que corresponde a esse endereço:

/project/config/routes.php<?php
  new Route('/test/:var1/:var2/', 'test', 'index');
?>

Isso significa que o nome do controlador será test, o nome da ação - index, e o array de parâmetros será o seguinte:

php<?php
  ['var1' => 1, 'var2' => 2]
?>

O objetivo desta lição é escrever a classe Router, retornando um objeto da classe Track. O resto não nos preocupa por enquanto. Vamos começar a escrever essa classe.

Tarefas práticas

Задание 1

Copie o código da minha classe Track e coloque-o no arquivo /core/Track.php.