0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pimpleの仕組みメモ

Posted at

概要

以下のDIコンテナを利用してみようと思いましたが、
仕組みが分からなかったので調べた際のメモとなります。
https://github.com/silexphp/Pimple

公式で紹介されていた使い方

use Pimple\Container;
$container = new Container();

$container['session_storage'] = function ($c) {
    return new SessionStorage('SESSION_ID');
};

$container['session'] = function ($c) {
    return new Session($c['session_storage']);
};

$session = $container['session'];

分かっていなかったこと

$cにPimple\Containerオブジェクトが設定される仕組み

実装を確認して見て分かったこと

Containerクラスが実装しているArrayAccessの
offsetGet($id)内で$thisが渡されていたためでした。
使い方を確認しただけでは分かりませんでしたが、実装を見て納得できました。

offsetGet($id)メソッドの該当箇所抜粋
if (isset($this->factories[$this->values[$id]])) { |
    return $this->values[$id]($this); < この箇所
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?