php 简单ioc容器
来源:互联网 发布:无损歌曲播放软件 编辑:程序博客网 时间:2024/05/29 14:00
interface SuperModuleInterface{ /** * 超能力激活方法 * * 任何一个超能力都得有该方法,并拥有一个参数 *@param array $target 针对目标,可以是一个或多个,自己或他人 */ public function activate(array $target);}class XPower implements SuperModuleInterface{ public function activate(array $target) { echo 'xpower'; }}/** * 终极炸弹 (就这么俗) */class UltraBomb implements SuperModuleInterface{ public function activate(array $target) { echo 'ultrabomb'; }}class Superman{ public $module; public function __construct(SuperModuleInterface $module) { $this->module = $module; }}class Container{ protected $binds; protected $instances; public function bind($abstract, $concrete) { if ($concrete instanceof Closure) { $this->binds[$abstract] = $concrete; } else { $this->instances[$abstract] = $concrete; } } public function make($abstract, $parameters = []) { if (isset($this->instances[$abstract])) { return $this->instances[$abstract]; } array_unshift($parameters, $this); return call_user_func_array($this->binds[$abstract], $parameters); }}// 创建一个容器(后面称作超级工厂)$container = new Container;// 向该 超级工厂添加超人的生产脚本$container->bind('superman', function($container, $moduleName) {// $this->binds['superman'] = function($container, $moduleName){ return new Superman($container->make($moduleName))}; return new Superman($container->make($moduleName));}); //向该 超级工厂添加超能力模组的生产脚本$container->bind('xpower', function($container) { //$this->binds['xpower'] = function($container){return new XPower;}; return new XPower;});//// 同上$container->bind('ultrabomb', function($container) { //$this->binds['ultrabomb'] = function($container){return new UltraBomb}; return new UltraBomb;});// ****************** 华丽丽的分割线 **********************// 开始启动生产//相当于调用 $this->binds['superman']($container->make($moduleName))$superman_1 = $container->make('superman', array('xpower'));$superman_2 = $container->make('superman', ['ultrabomb']);print_r($superman_1);//print_r($superman_2);$superman_1->module->activate([]);
阅读全文
0 0
- php 简单ioc容器
- IOC容器,其实很简单
- spring ioc容器简单理解
- IOC容器的简单介绍
- 理解PHP 依赖注入|Laravel IoC容器
- 理解PHP 依赖注入|Laravel IoC容器
- IoC容器总结与简单模拟
- Unity IOC容器的简单应用
- spring IoC容器初始化简单分析
- IoC容器总结与简单模拟
- Spring 容器IOC解析及简单实现
- Spring的Ioc容器简单实现
- 深入理解Spring IOC,实现简单IOC容器
- 【最简单IOC容器实现】实现一个最简单的IOC容器
- IoC容器
- IOC容器
- IoC 容器
- Ioc容器
- Tablayout设置下划线宽度以及遇到空指针问题。
- Oracle BULK COLLECT INTO批量操作应用
- Java编程:删除 List 元素的三种正确方法
- MySQL存储过程和函数的区别
- 最小生成树算法
- php 简单ioc容器
- PythonStock(1):python 股票系统设计
- 575. Distribute Candies
- mysql中的主外键的理解
- JAVA http请求工具类http-request
- 商品图片放大镜效果
- JS-操作样式
- chrome中加载WebUploader、UEditor,点击上传文件选择框会延迟几秒才会显示,反应很慢
- update multi rows using only one sql; 一句 sql update 多行数据