对于依赖注入 我现在的理解是把一个方法当成一个变量放进另一个方法的形参里

  1. <?php
  2. class Factory {
  3. public static function getDb(){
  4. return new Db();
  5. }
  6. }
  7.  
  8. class Db {
  9. public static function query($sql){
  10. echo $sql;
  11. }
  12. public static function querys($sql){
  13. echo $sql."s";
  14. }
  15. }
  16.  
  17. class example {
  18. private $_db;
  19. function getList(){
  20. $this->_db->query("123");//这里具体sql语句就省略不写了
  21. }
  22. //从外部注入db连接
  23. function setDb($connection){
  24. $this->_db = $connection;
  25. }
  26. }
  27. //调用
  28. $example = new example();
  29. $example->setDb(Factory::getDb());//注入db连接
  30. $example->getList();

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

简单点

  1. <?php
  2. class email {
  3. public static function sendemail(){
  4. echo "发送邮件";
  5. }
  6. }
  7.  
  8. class sms {
  9. public static function sendsms(){
  10. echo "发送短信";
  11. }
  12. }
  13.  
  14. class example {
  15. private $_send;
  16. function setSend($send_function){
  17. $this->_send = $send_function;
  18. }
  19. }
  20.  
  21. $example = new example();
  22. $example->setSend(sms::sendsms());

example好比注册的类,注册成功后想发送短信就

  1. $example = new example();
  2. $example->setSend(sms::sendsms());

想发送邮件就

  1. $example = new example();
  2. $example->setSend(email::sendemail())

PHP依赖注入的更多相关文章

  1. webapi - 使用依赖注入

    本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity:由于快过年这段时间打算 ...

  2. ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入

    原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...

  3. 在WPF中使用依赖注入的方式创建视图

    在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...

  4. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

  5. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

    再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...

  6. ASP.NET Core中如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法

    在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面.在ASP.NET ...

  7. ASP.NET Core中如影随形的”依赖注入”[上]: 从两个不同的ServiceProvider说起

    我们一致在说 ASP.NET Core广泛地使用到了依赖注入,通过前面两个系列的介绍,相信读者朋友已经体会到了这一点.由于前面两章已经涵盖了依赖注入在管道构建过程中以及管道在处理请求过程的应用,但是内 ...

  8. 模拟AngularJS之依赖注入

    一.概述 AngularJS有一经典之处就是依赖注入,对于什么是依赖注入,熟悉spring的同学应该都非常了解了,但,对于前端而言,还是比较新颖的. 依赖注入,简而言之,就是解除硬编码,达到解偶的目的 ...

  9. angular2系列教程(八)In-memory web api、HTTP服务、依赖注入、Observable

    大家好,今天我们要讲是angular2的http功能模块,这个功能模块的代码不在angular2里面,需要我们另外引入: index.html <script src="lib/htt ...

  10. angularjs 依赖注入--自己学着实现

    在用angular依赖注入时,感觉很好用,他的出现是 为了"削减计算机程序的耦合问题" ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个 ...

随机推荐

  1. hdu 1203 dp(关于概率的```背包?)

    题意:一个人手里有一笔钱 n ,有 m 所大学,分别知道这些大学的投简历花费和被录取概率,因为钱数有限,只能投一部分学校,问被录取的概率最大有多大. 这题除去计算概率以外就是一个 0 1 背包问题,所 ...

  2. hdu1331&&hdu1579记忆化搜索(DP+DFS)

    这两题是一模一样的``` 题意:给了一系列递推关系,但是由于这些递推很复杂,所以递推起来要花费很长的时间,所以我要编程序在有限的时间内输出答案. w(a, b, c): 如果a,b,c中有一个值小于等 ...

  3. Mysql隔离级别 sql示例理解

    前言 事务要解决的是多线程并发修改数据库的问题.Mysql innodb 引擎支持事务.类似 Java 中的各种锁,例如乐观锁(CAS),读写锁,悲观锁.事务也有很多级别. 每个隔离级别要解决的问题都 ...

  4. Spring Data JPA Hibernate @QueryHints

    另一个实例: http://leobluewing.iteye.com/blog/2032396 : 本文内容来源:https://blog.csdn.net/gavinchen1985/articl ...

  5. JQuery实现高级检索功能

    https://blog.csdn.net/muziruoyi/article/details/44494465 < div id= "0" class ="row ...

  6. MySQL--自增列持久化问题

    ====================================================================== 自增列持久化问题 5.5/5.6/5.7三个版本中,MyS ...

  7. MySQL--DROP TABLE与MySQL版本

    ======================================================================== DROP TABLE与MySQL版本 MySQL在5. ...

  8. streamsets 集成 rabbitmq 以及benthos stream 处理框架

    benthos 是一个stream 处理框架,streamsets 也是,但是两者可以通过不同的工具进行集成起来 一般我们可以使用http 服务,消息中间件(kafka.rabbitmq ...) 使 ...

  9. bat根据星期启动程序

    原来公司里的由于每次开机时启动的程序比较多,所以打算使用批处理程序,这里只列举了部分.在每周一到周五的时候,开机则启动指定的应用程序,如果是周末的两天则不启动任何程序,所以做了这个脚本.你如果需要,根 ...

  10. storm之 Storm 工作原理

    Storm 工作原理 Storm简介 1.Storm是一套分布式的.可靠的,可容错的用于处理流式数据的系统. 2.Storm也是基于C/S架构来进行工作的,C负责将数据处理的方式的jar(Topolo ...