Pimple 2.xではshare()メソッドが削除され、サービスがデフォルトで共有されるようになった。
SilexなどPimpleに依存しているプログラムは、アップデートの際に注意が必要。
ただし修正は(たぶん)簡単。
Pimple 1.xの場合
$services = new Pimple();
// デフォルトではキーにアクセスするたび違うインスタンスが返却される.
$services['default'] = function ($services) {
return new \stdClass();
};
var_dump($services['default'] === $services['default']); // false
// share()でサービス定義をラップすると、キーにアクセスするたび同じインスタンスが返却される.
$services['shared'] = $services->share(function ($services) {
return new \stdClass();
});
var_dump($services['shared'] === $services['shared']); // true
Pimple 2.xの場合
$services = new Pimple();
// デフォルトではキーにアクセスするたび同じインスタンスが返却される.
$services['default'] = function ($services) {
return new \stdClass();
};
var_dump($services['default'] === $services['default']); // true
// factory()でサービス定義をラップすると、キーにアクセスするたび違うインスタンスが返却される.
$services['monopolized'] = $services->factory(function ($services) {
return new \stdClass();
});
var_dump($services['monopolized'] === $services['monopolized']); // false