参考:
概念:https://blog.csdn.net/qq_36172443/article/details/82667427
应用: http://www.cnblogs.com/finalanddistance/p/8960669.html

依赖注入的概念:

总结一点就是 底层类应该依赖于上层类,避免上层类依赖于底层类。

上代码:

首先先写几个需要用到的控制器;

demo3:

<?php
namespace app\index\controller; class Demo3
{
private $content = '我是demo3!!!'; public function text()
{
return $this -> content;
} public function setText($string)
{
$this -> content = $string;
} public function getName()
{
$name = '我是demo3的名字';
return $name;
}
}

demo2:

<?php
namespace app\index\controller; class Demo2
{
private $Demo3;
public function __construct(Demo3 $demo)
{
$this -> Demo3 = $demo;
} public function text()
{
return $this -> Demo3 -> text();
} public function getName()
{
return $this -> Demo3 -> getName();
}
}

demo1:

<?php
namespace app\index\controller; class Demo1
{
private $Demo2;
public function __construct(Demo2 $demo2)
{
$this -> Demo2 = $demo2;
} public function text()
{
return $this -> Demo2 -> text();
} public function getName()
{
return $this -> Demo2 -> getName();
}
}

然后是我们的使用方法:

一般的使用的方法是:

<?php
namespace app\index\controller; class Demo
{
public function index()
{
$demo3 = new \app\index\controller\Demo3();
$demo2 = new \app\index\controller\Demo2($demo3);
$demo1 = new \app\index\controller\Demo1($demo2);
dump($demo1 -> text());
dump($demo1 -> getName());
}
}

你看,是不是很麻烦,一个类依赖另外一个类,一个一个的实例化,麻烦的很,但是你用tp5.1里面的方法就不用理会这些了,tp框架自动帮你实例化!

tp5.1的使用方法:

<?php
namespace app\index\controller; class Demo
{
public function index()
{
\think\Container::set('demo1' , '\app\index\controller\Demo1');
$demo1 = \think\Container::get('demo1');
dump($demo1 -> text());
dump($demo1 -> getName()); }
}

这里的名称和使用区分大小写,请注意!!!

tp5.1 依赖注入的使用的更多相关文章

  1. 关于TP5中的依赖注入和容器和facade

    看了不少的文章,也看了官方的介绍,还是根据自己的理解,写写看法,理清下思路 只是单纯的说依赖注入Dependency Injection和容器 别的不白扯 比如有A,B,C三个类 A类的1方法依赖B类 ...

  2. TP5.1:依赖注入、绑定一个类到容器里、绑定一个闭包到容器中

    依赖注入 1.在application中创建一个文件夹,名字为commom,commom文件夹中创建被注入文件夹,在被注入文件夹中创建一个名为demo.php的文件 2.在demo.php中输入: 3 ...

  3. tp5依赖注入(自动实例化):解决了像类中的方法传对象的问题

    app\index\Demo1.php namespace app\index\controller; /* 容器与依赖注入的原理 ----------------------------- 1.任何 ...

  4. 控制反转( IoC)和依赖注入(DI)

    控制反转( IoC)和依赖注入(DI) tags: 容器 依赖注入 IOC DI 控制反转 引言:如果你看过一些框架的源码或者手册,像是laravel或者tp5之类的,应该会提到容器,依赖注入,控制反 ...

  5. ThinkPHP依赖注入

    D:\wamp64\www\thinkphp5.1\tp5.1\application\index\controller\Demo1.php文件 <?php namespace app\inde ...

  6. webapi - 使用依赖注入

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

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

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

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

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

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

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

随机推荐

  1. iOS 内置图片瘦身

    一.iOS 内置资源的集中方式 1.1 将图片存放在 bundle 这是一种很常见的方式,项目中各类文件分类放在各个 bundle 下,项目既整洁又能达到隔离资源的目的.采用 bundle 的加载方式 ...

  2. python之openpyxl模块(最全总结 足够初次使用)

    openpyxl模块 Python_Openpyxl 1. 安装 pip install openpyxl 2. 打开文件 ① 创建 from openpyxl import Workbook # 实 ...

  3. Codeforces #614 div.2 (A-E)

    A  ConneR and the A.R.C. Markland-N #include <bits/stdc++.h> using namespace std; #define ll l ...

  4. [noip模拟]散步<dp>

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=2097 这题A的时候,百感交集五味杂陈............ 就这么一道看起来简单的不 ...

  5. qt creator源码全方面分析(3-8)

    目录 项目文件工作流程 多层目录模式 依赖解析模式 包含,链接和输出 包含 链接 输出 构建目录架构 项目文件工作流程 我们在前面已经讨论了所有的项目文件, qtcreator.pro qtcreat ...

  6. 《Three.js 入门指南》2.3.1- 照相机 - 正交投影demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. APScheduler轻量级定时任务框架

    目录 一.APScheduler简介 支持的后端存储作业 集成的Python框架 二.APScheduler下载安装 三.APScheduler组件 各组件简介 调度器 作业存储器 执行器 触发器 四 ...

  8. C#如何正确的做深拷贝

    估计很多人在网上看到各种各样的DeepClone实现, 例如: 1. 通过BinaryFormatter进行二进制序列化 这玩意儿序列化出来的东西还带namespace类型, 尺寸非常大, 调试一下就 ...

  9. Dubbo 路由机制的实现

    Dubbo 路由机制是在服务间的调用时,通过将服务提供者按照设定的路由规则来决定调用哪一个具体的服务. 路由服务结构 Dubbo 实现路由都是通过实现 RouterFactory 接口.当前版本 du ...

  10. Loading纯JS

    function showLoading() { document.getElementById("over").style.display = "block" ...