tp5.1 依赖注入的使用
参考:
概念: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 依赖注入的使用的更多相关文章
- 关于TP5中的依赖注入和容器和facade
看了不少的文章,也看了官方的介绍,还是根据自己的理解,写写看法,理清下思路 只是单纯的说依赖注入Dependency Injection和容器 别的不白扯 比如有A,B,C三个类 A类的1方法依赖B类 ...
- TP5.1:依赖注入、绑定一个类到容器里、绑定一个闭包到容器中
依赖注入 1.在application中创建一个文件夹,名字为commom,commom文件夹中创建被注入文件夹,在被注入文件夹中创建一个名为demo.php的文件 2.在demo.php中输入: 3 ...
- tp5依赖注入(自动实例化):解决了像类中的方法传对象的问题
app\index\Demo1.php namespace app\index\controller; /* 容器与依赖注入的原理 ----------------------------- 1.任何 ...
- 控制反转( IoC)和依赖注入(DI)
控制反转( IoC)和依赖注入(DI) tags: 容器 依赖注入 IOC DI 控制反转 引言:如果你看过一些框架的源码或者手册,像是laravel或者tp5之类的,应该会提到容器,依赖注入,控制反 ...
- ThinkPHP依赖注入
D:\wamp64\www\thinkphp5.1\tp5.1\application\index\controller\Demo1.php文件 <?php namespace app\inde ...
- webapi - 使用依赖注入
本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity:由于快过年这段时间打算 ...
- ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入
原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
随机推荐
- iOS 项目优化
前言 iOS性能优化系列篇之"优化总体原则" 不要提前过度优化 要找到性能瓶颈 要在不同性能指标间权衡 要理解优化任务的底层运行机制 要有技术保障体系 一.启动速度优化 1.1 学 ...
- 关于获取tableView中cell数据的处理
前言 最近在做一个项目的时候遇到了这么一个问题,就是tableview作为一个表单,每一行cell都需要填充一个数据填充完成后再返回到table页面,最后进行总的提交. 解决 ...
- 除了chrome、Firefox之外其他浏览器全都连不上网
在调试jsp时,总是会遇到eclipse打开jsp网页失败,没有网络,浏览器也除了chrome.Firefox之外其他浏览器全都连不上网,这里我也不清楚是什么问题,但是解决方法是: 打开Interne ...
- .NET Core项目部署到Linux(Centos7)(九)防火墙配置,允许外网或局域网访问.NET Core站点
目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...
- PowerShell入门简介
文章更新于:2020-03-03 一.PowerShell简介 说实话,我总感觉 PowerShell 是 cmd 的加强版,但是看官方介绍,功能甚是强大,用处有待我们发掘. 二.PowerShell ...
- ThinkPHP3.1.2 使用cli命令行模式运行
ThinkPHP3.1.2 使用cli命令行模式运行 标签(空格分隔): php 前言 thinkphp3.1.2 需要使用cli方法运行脚本 折腾了一天才搞定 3.1.2的版本真的很古老 解决 增加 ...
- .NET MVC中登录过滤器拦截的两种方法
今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...
- Jquery的$.get(),$.post(),$.ajax(),$.getJSON()用法详细解读
1.$.get $.get()方法使用GET方式来进行异步请求,它的语法结构为: $.get( url [, data] [, callback] ) 解释一下这个函数的各个参数: url:strin ...
- 萌新带你开车上p站(三)
本文作者:萌新 前情回顾: 萌新带你开车上p站(一) 萌新带你开车上p站(二) 0x08 题目给的提示是和运算符优先级有关 登录后直接看源码 mistake@pwnable:~$ ls flag mi ...
- 内存对齐 align
/* 地址对齐:指的是存放数据的首地址%N==0,而且整个结构体的大小%M(结构体的有效对齐值)==0 1 数据类型的自身对齐值:char:1 short:2 int,flolat,double:4 ...