pimple

(2016/08/14)
  • PHPのDIコンテナ
  • https://github.com/silexphp/Pimple
  • 非常にメジャーなもの
  • Symfonyとかコレ使ってる?
  • 以下API

  • $container['hoge'] = function ($c) { return new Hoge; };
  • hogeキーで返すインスタンスをクロージャで定義
  • おそらくシングルトン
  • By default, each time you get a service, Pimple returns the same instance
  • $container['hoge'] = $container->factory(function ($c) { return new Hoge; });
  • 呼び出される毎に新しいインスタンスを返す
  • Factoryパターンではないよな…
  • configみたいに使うのも可能
  • $container['session_key'] = 'moge';
  • 依存解決後に処理を加えたかったらextendを使う
  • 何か後付でsetter使うとかできそう
  • php
  • $container['hoge'] = function ($c) { return new Hoge; };
  • $container->extend('hoge', function ($hoge, $c) {
  • $hoge->setName('moge');
  • return $hoge;
  • });
  • Pimple\ServiceProviderInterface;を実装すれば複数コンテナあった時に引き継ぐことが可能
  • Pimpleでキーを指定すると定義されたクロージャを実行した結果を返す
  • クロージャ本体を取得したい場合はraw()メソッドを使用してアクセスする
  • $container->raw('hoge')
  • 参考リンク

  • Pimpleでシンプルに正しくDIを理解する
  • DIとサービスロケータの違い
  • PHP DI DIコンテナ

general(396)