PHPのMVCにおけるルートのパラメーター
前のレッスンでは、私たちのルートは固定された アドレスを持っていました。実際には、ルーティングのメカニズムはより 複雑で、URIの一部が名前付きパラメーターとして コントローラーで後から利用できるようにすることができます。
例えば、私たちのアドレスが次のように
見えるとしましょう:/test/param1/param2/、
ここでparam1とparam2は任意の
文字列です。この場合、この形式のアドレスが
一つのコントローラーアクションによって処理されるようにしたいです。
そのためには、パラメーター名を考え、
その前にコロンを置きます。このように:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
私たちのケースでは、すべての
/test/パラメーター1/パラメーター2/という形式のリクエストは
アクションactに渡されます。その際、
このアクションの最初のパラメーターには
パラメーターを含む連想配列が渡されます:
最初のパラメーターの位置にあるテキストは、
キー'var1'を持つ配列要素に入り、
2番目のパラメーターのテキストは'var2'に入ります。
例えば、アドレスバーに次のように入力されたとします:
/test/eee/bbb/。アクションの最初のパラメーターに
何が含まれるか見てみましょう:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
NumControllerコントローラーを作成し、
その中にアクションsumを作成してください。
このアクションが次の形式のアドレスを処理するようにします:
/nums/:n1/:n2/:n3/、ここでパラメーターは
何らかの数字です。渡された数字の合計が
画面に表示されるようにしてください。