PHPのMVCにおけるルートのパラメーター

前のレッスンでは、私たちのルートは固定された アドレスを持っていました。実際には、ルーティングのメカニズムはより 複雑で、URIの一部が名前付きパラメーターとして コントローラーで後から利用できるようにすることができます。

例えば、私たちのアドレスが次のように 見えるとしましょう:/test/param1/param2/、 ここでparam1とparam2は任意の 文字列です。この場合、この形式のアドレスが 一つのコントローラーアクションによって処理されるようにしたいです。 そのためには、パラメーター名を考え、 その前にコロンを置きます。このように:

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

私たちのケースでは、すべての /test/パラメーター1/パラメーター2/という形式のリクエストは アクションactに渡されます。その際、 このアクションの最初のパラメーターには パラメーターを含む連想配列が渡されます: 最初のパラメーターの位置にあるテキストは、 キー'var1'を持つ配列要素に入り、 2番目のパラメーターのテキストは'var2'に入ります。

例えば、アドレスバーに次のように入力されたとします: /test/eee/bbb/。アクションの最初のパラメーターに 何が含まれるか見てみましょう:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    public function act($params)
    {
      var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
    }
  }
?>
Задание 1

NumControllerコントローラーを作成し、 その中にアクションsumを作成してください。 このアクションが次の形式のアドレスを処理するようにします: /nums/:n1/:n2/:n3/、ここでパラメーターは 何らかの数字です。渡された数字の合計が 画面に表示されるようにしてください。