yii2 随笔(七)依赖注入——(2)php依赖注入的简单实现
2016-03-28 17:14
627 查看
原文地址:http://ivhong.com/?p=115(ivhong.com
是我的博客主址)
前面我们知道了问题所在,那么PHP是怎么解决这个办法的呢?因为是yii2,所以我们用yii2的方式简单介绍一下,我把yii2的核心代码整合了一下,来说php实现依赖注入的过程。
在使用过yii2开发的同学,对Yii::createObject不陌生,他就是依赖注入的一个“入口”,我把它提出来改一下:
当然,yii2的createObject远远不止这些,我写成这么简单只是为了说明php实现“依赖注入”的一种方式,当然它是非常简陋的(它不具备最基本的容错功能,而且不具备依赖注入的全部功能,比如参数管理、兼容闭包等,等我们真正看完yii2 DI实现的时候,这些都会浮现出来)。
是我的博客主址)
前面我们知道了问题所在,那么PHP是怎么解决这个办法的呢?因为是yii2,所以我们用yii2的方式简单介绍一下,我把yii2的核心代码整合了一下,来说php实现依赖注入的过程。
在使用过yii2开发的同学,对Yii::createObject不陌生,他就是依赖注入的一个“入口”,我把它提出来改一下:
//$p 可以想象的yii2的配置文件,如$p = ['class'=>'sdk/Test', 'file'=>'xxxx']; // 'class' 是将要实现的类,‘file’是将要实现的对象的属性 function createObject($p){ $class = $p['class']; unset($p['class']); $obj = new $class;//require 使用的是 autoload 实现的 foreach($p as $f => $v){ $class->$f = $v; } return $obj; }
当然,yii2的createObject远远不止这些,我写成这么简单只是为了说明php实现“依赖注入”的一种方式,当然它是非常简陋的(它不具备最基本的容错功能,而且不具备依赖注入的全部功能,比如参数管理、兼容闭包等,等我们真正看完yii2 DI实现的时候,这些都会浮现出来)。
相关文章推荐
- PullToRefresh之代理模式-LoadingLayoutProxy源码剖析
- 隐藏index.php - ThinkPHP完全开发手册 - 3.1
- 编译安装php Cannot find MySQL header files under /usr/include/mysql.
- yii2 随笔(七)依赖注入——(1)什么是依赖注入
- PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
- 54点提高PHP编程效率 引入缓存机制提升性能
- 3.1 Zend_Db_Adapter
- php学习日记2
- ubuntu升级php版本
- PHP常见报错解析
- php_mysql、php_mysqli 与 pdo_mysql 的区别与选择
- PHP 简易留言板制作小实例
- complie---php5.6源码编译
- PHP 编写简单的投票调查程序
- phpstorm配置
- php发送get、post请求的几种方法
- 编译安装php及编译安装mysql常见错误总结及解决办法 网上找的
- Yii中使用gii遇到“unable to write the file”
- 开发自己的PHP MVC框架(一)
- PHP代码优化