1. はじめに 私は職場でLaravelを使っています。Laravelのサービスコンテナは依存性の注入(DI)が手軽にできて便利ですよね。 今回、DIコンテナが依存解決する際、オブジェクトが特定のインタフェースや抽象クラスを実装している場合に追加の処理をおこなうようにしたいと思い、調べてみたものです。 2. 環境 PHP 7.2 Laravel 6.0 3. いきさつ 3.1. 通常の事例 通常、依存解決で生成されたオブジェクトに何らかの追加処理をおこなってから注入してほしい場合、公式ドキュメントによると、サービスプロバイダ内でDIコンテナのextend()メソッドを呼出すことで、これを実現できるとあります。 Extending Bindings The extend method allows the modification of resolved services. For exam
![[Laravel / PHP] DIコンテナの依存解決で、抽象クラスやインタフェースに対してフック的な追加処理を実行してもらう - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e5e35c8f27393889cc606a170e97e9988a39eb48/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGMTQ5MjE3JTJGcHJvZmlsZS1pbWFnZXMlMkYxNTQyNTE5Mzg2P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPTEyNGU5NmM3OTNkNGM5NjI0MjcxMjViYTc0N2I0NTE0%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D6ba7ebfc7e91c3893709591e4504712b%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCTGFyYXZlbCUyMCUyRiUyMFBIUCU1RCUyMERJJUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgzJTg2JUUzJTgzJThBJUUzJTgxJUFFJUU0JUJFJTlEJUU1JUFEJTk4JUU4JUE3JUEzJUU2JUIxJUJBJUUzJTgxJUE3JUUzJTgwJTgxJUU2JThBJUJEJUU4JUIxJUExJUUzJTgyJUFGJUUzJTgzJUE5JUUzJTgyJUI5JUUzJTgyJTg0JUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJUJGJUUzJTgzJTk1JUUzJTgyJUE3JUUzJTgzJUJDJUUzJTgyJUI5JUUzJTgxJUFCJUU1JUFGJUJFJUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgzJTk1JUUzJTgzJTgzJUUzJTgyJUFGJUU3JTlBJTg0JUUzJTgxJUFBJUU4JUJGJUJEJUU1JThBJUEwJUU1JTg3JUE2JUU3JTkwJTg2JUUzJTgyJTkyJUU1JUFFJTlGJUU4JUExJThDJUUyJTgwJUE2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9NDE4NGVhN2U0MzJhNGE1ODlhZWQ1NGZhY2ZkNTNlYjE%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB5b2tlbnphbiZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPWM5MDcxZDI1NDIyMzE1MjNiMmU1NjI1ZGNjNmE0MTlm%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3Dc5b3fae03567293b75de4dc7a2e2ce1a)