Pimple を考える
Pimple とはなんぞや?ということで、ソースコードやドキュメントから、どのようなものかを判断してみた。(つまり実際に動作は確認していないw)
Pimple とは、Silex のベースとなっている PHP5.3 上で動作する DI コンテナとのこと。
公式サイト:
http://pimple.sensiolabs.org/
この1ページにさらっと書いてあることを読むと、使い方としては、
- コンテナを生成する(=Pimple オブジェクト)
- コンテナにパラメータを書く(=設定のこと。文字列、オブジェクトなど)
- コンテナにサービスを書く(=無名関数のこと。)
- コンテナからサービスを呼び出す
という流れになってるみたい。
コンテナ内でパラメータとサービスが分離できるので、 DIコンテナと呼んでいるのだろう。ArrayAccess インターフェースを実装しているため、配列操作と同じ感覚で利用できるのが特徴。
付加的な機能として、以下の3つがある。
- Pimple::shared()
- Pimple::protect()
- Pimple::extend()
shared() は、一度生成した結果を使い回すことで、何度も同じ処理を実行することが避けられるもの。逆に、結果が毎回異なる場合は使えないだろう。
protect() は、DIの影響下から保護するための機能?いまいちピンとこない。
github をのぞいてみると、新しい機能として extend() なるものが追加されていた。既存のサービスをラップして機能拡張するためのもの?この機能は Phpmig の作者によるもののようだ。
Pimple の実装は1ファイルで完結しているため、このファイルをコピってくればすぐ使えるはず。もし興味があれば、ソースコードを読むこともお勧めしたい。