slim 2.4からroutingでクラス形式のコントローラーを呼び出せるようになっていたらしい
slim 2.4からroutingでクラス形式のコントローラーを呼び出せるようになっていたらしい。
http://uzulla.hateblo.jp/entry/2014/01/11/040335
なるほどと思って、早速試したらできたので、おおーとなっていたのだけど、
上の例は特にパラメータを渡さない呼び出しだったので、パラメータを渡すときはどうするのかというと
- routing
<?php $app->get('/:greeting/:name', '\App\Controller\HelloController:index');
- controller
<?php namespace App\Controller; class HelloController { public function index($param1, $param2) { var_dump($param1, $param2); } }
みたいな感じで取れるらしい。
ところで、これくらいシンプルなコントローラーだったら別に構わないのだけど、コンテナとして使っている$app
はどうしてもコントローラで参照したいところなので、なんとか上手い渡し方ができないか調べた。結論としては良いやり方がないっぽい。
例えばこんな感じにできたらいいなーとなんとなく思った。
<?php namespace App\Controller; class HelloController { private $app; public function __construct($app) { $this->app = $app; } public function index($param1, $param2) { var_dump($param1, $param2); } }
調べていたら、おんなじようなことを考える人はいるもので、既にPR送っている人がいた。