CakePHP 3 のアクションに可変長引数リストを使う
はじめに
PHP では可変長引数リストが使えて、関数に可変数の値を渡すことができます。
- PHP: 関数の引数 - Manual
- https://www.php.net/manual/ja/functions.arguments.php
ふと思い立って、CakePHP 3 のアクションで試したところ、ここでも使えることがわかりました。今日は検証用に作ったプログラムのソースと併せて、使い方をご紹介します。
今回使用した CakePHP のバージョンは 3.8.5 です。
使い方
実装は簡単で、PHPの仕様通り、アクションの引数の前に「...」をつけるだけです。検証のために作ったコードは以下の通りです。
/src/Controller/SampleController.php
<?php
namespace App\Controller;
class SampleController extends AppController
{
public function detail(...$paths) {
debug($paths);
exit;
}
}
これで http://example.com/sample/detail/hoge1/hoge2/ のようにアクセスすると、下記のように表示されます。
\src\Controller\SampleController.php (line 7)
[
(int) 0 => 'hoge1',
(int) 1 => 'hoge2'
]
/detail/hoge1/hoge2/hoge3 でアクセスすれば、$paths の要素数は3つになります。
さて、今回は興味本位で試しただけで、まだ実用はしていません。
ぱっと思い浮かぶ使い道としては、ブログや CMS で URL 名を登録する場合に、スラッシュを使うことで、疑似的にディレクトリ構造を持たせるようにする、というような使い方ですかね。