それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

slim でオブジェクトメソッドをrouteに登録する

php のslimでrouteに登録する関数をオブジェクトメソッドにしたい。

$app->get("show","some_function");

これだと、関数を大量生成しなくちゃいけないので、関数の管理が不便になって、PREFIXつけたりして前時代的で全然嬉しくない。

だからといって、Staticなクラスメソッドを連発するのはもっと嬉しくない。

そこで、コントローラクラスを導入して、そこにポイントする。

<?php
class Sample
 {
     public function info(){
          phpinfo();
     }
}

このSampleクラスのinfo()関数をオブジェクトから取り出すようにする。

<?php
$app = new \Slim\Slim();
$ctrl = new Sample();
$app->get("/test",  array($ctrl, "info") );
//または直接
$app->get("/test2",  array((new Sample), "info") );

これで、slimがphp最強フレームワークになりますね。

ポイントはコールバックの仕様

phpのコールバックの章を読めばだいたいのことは分かるよ

参考資料

http://www.php.net/manual/ja/language.types.callable.php