<?php class SimpleContainer { /** * @var \Closure[] 依存解決手続き格納用メンバ */ private $resolveMethodList; /** * SimpleContainer コンストラクタ */ public function __construct() { // 初期化 $this->resolveMethodList = []; } /** * 抽象に対し具象の解決手続きを登録する * * @param string $abstract 抽象 * @param Closure $resolveMethod 対応する解決手続き * @return $this */ public function register(string $abstract, \Closure $resolveMethod) { $this->reso
![PHPで作って覚えるDI コンテナ - その2 - DI コンテナとServiceLocator - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/12363d5cb91083caf3fc4c8b7b50938b92811c7f/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-1150d8b18a7c15795b701a55ae908f94.png%3Fixlib%3Drb-1.2.2%26w%3D1200%26mark%3Dhttps%253A%252F%252Fqiita-user-contents.imgix.net%252F~text%253Fixlib%253Drb-1.2.2%2526w%253D840%2526h%253D380%2526txt%253DPHP%2525E3%252581%2525A7%2525E4%2525BD%25259C%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E8%2525A6%25259A%2525E3%252581%252588%2525E3%252582%25258BDI%252520%2525E3%252582%2525B3%2525E3%252583%2525B3%2525E3%252583%252586%2525E3%252583%25258A%252520-%252520%2525E3%252581%25259D%2525E3%252581%2525AE2%252520-%252520DI%252520%2525E3%252582%2525B3%2525E3%252583%2525B3%2525E3%252583%252586%2525E3%252583%25258A%2525E3%252581%2525A8ServiceLocator%2526txt-color%253D%252523333%2526txt-font%253DAvenir-Black%2526txt-size%253D54%2526txt-clip%253Dellipsis%2526txt-align%253Dcenter%25252Cmiddle%2526s%253D6d08ebbcef8bd61dc34b6cfa85d30e53%26mark-align%3Dcenter%252Cmiddle%26blend%3Dhttps%253A%252F%252Fqiita-user-contents.imgix.net%252F~text%253Fixlib%253Drb-1.2.2%2526w%253D840%2526h%253D500%2526txt%253D%252540zeriyoshi%2526txt-color%253D%252523333%2526txt-font%253DAvenir-Black%2526txt-size%253D45%2526txt-align%253Dright%25252Cbottom%2526s%253Dd95b5d6befe14508632add68a5e6373b%26blend-align%3Dcenter%252Cmiddle%26blend-mode%3Dnormal%26s%3D515db5698ee45fd431d1b94cf43405fa)