PHPのSlimフレームワークでオートワイヤリングする

はじめに

私が好きなPHPのWebフレームワークはSymfonyです。

特に、サービスコンテナが既定でオートワイヤリングを利用できるのが便利で良いです。ここで言うオートワイヤリングは、自明な依存関係については設定を書かずとも勝手に依存関係を解決してくれる、そして、コントローラクラスのアクションメソッドにパラメータの型名を書いておくと実行時にそれが渡されてくるという便利機能です。なお、オートワイヤリングの元祖はSymfonyではなく、JavaのSpring方面から来たものだと私は思っています。

一方で、Symfonyの欠点は「デプロイが面倒」などが上げられます。PHPは、本番環境にスクリプトをgit cloneすると動くという素晴らしい特徴を持つ処理系だと思われていましたが、Symfonyを利用する場合はその限りではありません。Symfonyのプロジェクトを本番環境にデプロイするためには、まずgit cloneした後にSymfony用語で言う所のビルド、すなわちyamlの設定ファイルをパースしてPHPコードを出力する必要があり、このため、前回デプロイ時にSymfonyが生成したPHPコードをクリアする必要があります。

ところで、Symfonyと比べてデプロイが容易なフレームワークとして、Slimが挙げられます。 私にとって、Symfonyの代わりにSlimフレームワークを利用する上で最初に課題になるのは、Slimフレームワークにはオートワイヤリングがないことです。 オートワイヤリングがあればSlimをもっと使えそうな気がします。

作ったもの

という訳で、オートワイヤリングするSlim拡張を作りました。

packagist.org

反響

周囲のPHPerからは以下のような意見を頂いています。

  • デフォルトのSlim、やや貧弱では
  • 便利そう

20年前に「すべてがFになる」を読了した時の偽らざる気持ち

「全てがFになる……(ドヤ」と言われてもちょっと困るんだよなあ。

続きを読む

600なファイルがあるとcircleci local executeでcheckoutが失敗する

600なファイルがあるとcircleci local executeでcheckoutが失敗することについて書きました

続きを読む