yii框架-依赖注入
2016-03-06 20:36
489 查看
依赖注入
引子<?php class MovieLister { public function moviewsDirectedBy($directorName){ $finder = new MovieFinder(); //两个类有了强耦合关系 $allMovies = $finder->findAll(); $resultMovies = []; foreach ($allMovies as $movie){ if($movie->getDirector() == $directorName){ $resultMoviews[] = $movie; } } } } //程序=算法+数据结构 数据结构跟算法要剥离 优化: public function moviewsDirectedBy($directorName,$finder){ $finder = $finder->findAll(); .... .... }
Yii框架使用 - 容器(定义+解决依赖关系)
use yii\di\container Class ManDriver implements Driver{ public function drive(){ echo 'i am a driver'; } } interface Driver{ //用接口去除强关联 public function driver(); } class Car { private $driver = null; public function _construst(Driver $driver){ $this->driver = $driver; } public function run(){ $this->driver->drive(); } } //配置文件事先配置好,统一处理依赖关系 $container = new Container; $car = $container->set('app\models\Driver',"app\models\ManDriver"); //$driver = new ManDriver; //$car = Car($driver); $car = $container->get('app\models\Car'); $car->run();
Yii框架使用 - 服务定位器(配置服务参数)
use yii\di\ServiceLocation \Yii::$container->set('app\models\Driver',"app\models\ManDriver"); $s1 = new ServiceLocator; $s1->set('car'[ 'class' => 'app\models\Car', ]); $car = $s1->get('car') //可放在配置文件里统一配置,应用主体实际上就是一个服务定位器 compents => [ 'car' => [ 'class' => '\app\models\Car' ] ] \Yii::$container->set('app\models\Driver',"app\models\ManDriver"); \Yii::$app->car-run(); //加载时会在动解决依赖关系
相关文章推荐
- php中使用exec,system等函数调用系统命令
- easy php安装完成后启动出现丢失MSVCR110.dll错误
- Matplotlib Tutorial(译)
- yii框架-控制器/数据模型
- php checkbox复选框值的获取与checkbox默认值输出方法
- PHP预编译处理技术简介
- 对H264进行RTP封包原理
- RTP时间戳
- PHP一键比对更新MYSQL数据库的一些想法
- php正则表达式 获取开始字符串和结束字符串中的部分内容
- PHP+MYSQL+AJAX - 第四章 认识PHP基本语法
- PHP “Warning: session_start()...” 的解决方法
- 从底层剖析 php-fpm 和 mysql 之间的关系 ,涉及连接池pool
- PHP 的ini配置文件的读写操作函数
- PHP 通过fsockopen函数获取远程网页源码
- PHP 中文汉字转换成拼音函数
- PHP 中文汉字转换成拼音函数
- Windows服务器上使用bat定时执行php
- 解决下载文件过程中内存暴涨之---OutputStream
- 某系统响应时间慢TPS低性能瓶颈调优过程