PHP 依赖注入(DI)和控制反转(IoC)简单理解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP 依赖注入(DI)和控制反转(IoC)简单理解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2112字,纯文字阅读大概需要4分钟。
内容图文
![PHP 依赖注入(DI)和控制反转(IoC)简单理解](/upload/InfoBanner/zyjiaocheng/626/92653a511d5d423390c1e584ca95715d.jpg)
<?php
interface BehaviorInterface { //接口
public function behavior_func();
}
class SleepInterface implements BehaviorInterface {
public function behavior_func() {
echo "this is sleep_func"."<br>";
}
}
class EatInterface implements BehaviorInterface {
public function behavior_func() {
echo "this is eat_func"."<br>";
}
}
class BehaviorClass {
protected $module;
public function __construct(BehaviorInterface $module) {
$this->module = $module;
}
public function behavior_func() {
$this->module->behavior_func();
}
}
class Container { //容器
protected $binds;
public function bind($abstract,Closure $concrete) {
$this->binds[$abstract] = $concrete;
}
public function make($abstract, $parameters = []) {
array_unshift($parameters, $this);
return call_user_func_array($this->binds[$abstract], $parameters);
}
}
// 创建一个容器(后面称作超级工厂)
$container = new Container;
// 向该 超级工厂添加行为的生产脚本
$container->bind('BehaviorClass', function($container, $moduleName) {
return new BehaviorClass($container->make($moduleName));
});
// 向该 超级工厂添加模组的生产脚本
$container->bind('EatInterface', function($container) {
return new EatInterface;
});
// 同上
$container->bind('SleepInterface', function($container) {
return new SleepInterface;
});
// 开始启动生产
//最主要是call_user_func_array 要先理解 最主要是call_user_func_array
/** make方法 大概理解是 调用绑定好的BehaviorClass方法(bind) 然后把EatInterface传入调用call_user_func_array
(即调用return new BehaviorClass($container->make($moduleName))这个方法)
(这里的$moduleName为了形象一点也指EatInterface) 在传入的同时其实是先进了里面的$container->make($moduleName)方法
用call_user_func_array把EatInterface先给new了 接着才new外面的BehaviorClass(EatInterface)
最后返回一个有EatInterface模块的BehaviorClass类
同理 $b_2 $b_3也是这样 */
$b_1 = $container->make('BehaviorClass', ['EatInterface']);
$b_2 = $container->make('BehaviorClass', ['SleepInterface']);
$b_3 = $container->make('BehaviorClass', ['EatInterface']);
// 调用
echo "<br>";
$b_1->behavior_func();
$b_2->behavior_func();
内容总结
以上是互联网集市为您收集整理的PHP 依赖注入(DI)和控制反转(IoC)简单理解全部内容,希望文章能够帮你解决PHP 依赖注入(DI)和控制反转(IoC)简单理解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。