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

app\index\Demo1.php


namespace app\index\controller;
/*
容器与依赖注入的原理
-----------------------------
1.任何的url访问,最终都是定位到控制器,由控制器中某换个具体方法去执行
2.一个控制器对应着一个类,如果这些类需要进行统一管理,怎么办?
容器(原生注册树)来进行类管理,还可以讲类的实例(对象)作为参数,传递给类方法,自动触发依赖注入
依赖注入:讲对象类型的数据,以参数的方式穿传到方法的参数列表中

url访问:通过GET方式将数据传到控制器指定的方法中,但是只能传字符串,数值。。。

*/
class Demo1{

    // 可以通过字符串,数值用GET方式来传值到类方法中
    public function getName($name = 'Peter')
    {
        return 'Hello'.$name;
    }

//   \app\common\Temp $temp:将会出发依赖注入

public function getMethod(\app\common\Temp $temp)
{
    //   \app\common\Temp $temp 等价于
    //   $temp = new \app\common\Temp;
         $temp-> setName('value');
         return $temp->getName();
}

}

app\common\Temp.php


namespace app\common;

class Temp
{
    private $name;
    public function __construct($name = 'Peter')
    {
        $this->name = $name;
    }
    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        // __METHO__返回类的方法名

      return '方法是:'.__METHO__.'属性是:'.$this->name;
    }
}

原文地址:https://www.cnblogs.com/lalalagq/p/10203157.html

时间: 2024-11-10 15:09:27

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

简单解析依赖注入(控制反转)在Spring中的应用

IoC——Inversion of Control  控制反转DI——Dependency Injection   依赖注入 大家都知道,依赖注入是Spring中非常重要的一种设计模式.可能很多初学者对这种看起来高深的东西有一种抗拒,这里就 简单介绍一下到底什么是依赖注入,Spring到底又到底是如何运用依赖注入的. 依赖关系:在A组件中要引用B组件的对象,则称A依赖于B依赖关系会造成各组件之间的硬编码,为解决依赖关系,一般的解决方法如下: 1.A组件先创建B组件,在调用B组件方法2.A组件先通

DDD实战8_2 利用Unity依赖注入,实现接口对应实现类的可配置

1.在Util类库下新建DIService类 /// <summary> /// 创建一个类,对应在配置文件中配置的DIServices里面的对象的 key /// </summary> public class DIService { public string InterfaceType { get; set; } public string ImplementationType { get; set; } } 2 在webapi的appsettings.json文件中配置 要

Python3基础 把类的实例化放到另外一个类中

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ @Author : 行初心 @Date : 18-9-23 @Blog : www.cnblogs.com/xingchuxin @GitHub : github.com/GratefulHeartCoder """ cl

Spring同一个类中的方法互相调用,注解失效问题的分析和解决

以Transaction注解为例: @Service public class TestService { @Autowired Dao dao; @Transactional public void methodOne(Object o) { dao.save(o); } public void methodTwo(Object o) { methodOne(o); } } 检查事务是否启动: 设置log leve为debug,可以查看是否有下面这个log,判断是否启动了Transaction

Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在祝方法调用,后者必须先实例化后用实例调用)

1 package lsg.ap.april4th2; 2 /* 3 知识点:1.Getter and Setter 的应用 4 2.局部变量与成员变量(也可叫做全局变量) 5 3.Static关键字的用法 6 a.成员变量被static修饰后的所有类的共享属性 7 b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化 8 4.This关键字的用法 9 this:是当前类的对象引用.简单的记,它就代表当前类的一个对象. 10 11 注意:谁

解决chrome和firefox中文件上传本地路径隐藏的问题

如果想上传一张图片,在页面中实现预览,可以获取文件的上传路径,然后在一个<img/>里面显示,文件的上传路径就是<input type="file"/>的value.在IE下是value是等于本地路径的,然而,在chrome和firefox中,出于安全考虑,路径却是匿名,比如,上传E盘中的readme.txt,得到的value却是C:/fakepath/readme.txt. 要在页面显示上传的图片,可以先上传到服务器,然后再下载下来回避这个问题,但这样会有多余

ThinkPHP依赖注入

D:\wamp64\www\thinkphp5.1\tp5.1\application\index\controller\Demo1.php文件 <?php namespace app\index\controller; /** *容器与依赖注入的原理 * 1.任何的URL访问,最终都是定位到控制器,由控制器中某个具体的方法去执行 * 2.一个控制器对应着一个类,如果这些类需要进行统一管理,怎么办? * 容器进行类管理,还可以将类的实例(对象)作为参数,传递给类方法,自动触发依赖注入 * 依赖注

浅谈spring框架的控制反转和依赖注入

spring是什么? spring是一个轻量级的控制反转和面向切面编程的开源容器框架. 轻量级是说spring框架本身的体积小. 控制反转(Ioc):它不是技术,而是一种思想,将创建对象的控制权力交给spring框架. 依赖注入(DI):将对象中的属性通过配置文件的方式进行赋值. 面向切面编程(AOP):零散存在于业务层中的功能代码(例如:日志,事务),称为横切面关注点.把一个个横切面关注点放到某个模块中,称为切面. AOP就是把多个方法前后的共同代码抽离出来,使用动态代理机制来控制.好处是降低

【ASP.Net MVC3 】使用Unity 实现依赖注入

什么是Unity? Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入.Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题.构建一个成功应用程序的关键是实现非常松散的耦合设计.松散耦合的应用程序更灵活,更易于维护.这样的程序也更容易在开发期间进行测试.你可以模拟对象,具有较强的具体依赖关系的垫片(轻量级模拟实现),如数据库连接,网络连接,ERP连接,和丰富的用户界面组件.例如,处理客户信息的对象可能依赖于其他对象访问的数据存储,验证信息,并检查该用户是