Blogger Information
Blog 14
fans 1
comment 0
visits 25772
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
容器与依赖注入的原理
centcool的博客
Original
1330 people have browsed it

容器与依赖注入的原理
------------------------------------------------

1.任何的URL访问,最终都是定位到控制器,由控制器中某个具体方法去执行
2.一个控制器对应一个类,如果这些类需要进行统一管理怎么办?
解决办法:用容器进行类管理。
容器不仅可以管理类,还可以将类的实例(对象)做为参数,传递给类方法进行调用,就会自动触发依赖注入
3.依赖注入:将对象类型的数据,以参数的方式传到方法的参数列表中。(将一个类中的对象传递到另一个类的方法中的技术)
4.URL访问:localhost/index.php/index/index/getName/name/thinkphp51  
特点:通过GET方式将数据传到控制器指定的方法中,但是只能传字符串、数值等。如果要传一个对象到当前方法中怎么办?——通过依赖注入
5.依赖注入:解决了向类中的方法传递对象数据的问题

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

一、在application/index/controller中创建控制器 Demo1.php

二、在application目录下创建common目录,并创建Temp.php类

三、Demo1.php中的代码如下

<?php
namespace app\index\controller;
/*
	容器与依赖注入的原理
	------------------------
	1.任何的URL访问,最终都是定位到控制器,由控制器中某个具体方法去执行
	2.一个控制器对应一个类,如果这些类需要进行统一管理怎么办?
		解决办法:用容器进行类管理。
		容器不仅可以管理类,还可以将类的实例(对象)做为参数,传递给类方法进行调用,就会自动触发依赖注入
	3.依赖注入:将对象类型的数据,以参数的方式传到方法的参数列表中。(将一个类中的对象传递到另一个类的方法中的技术)
	4.URL访问:localhost/index.php/index/index/getName/name/thinkphp51   
		 特点:通过GET方式将数据传到控制器指定的方法中,但是只能传字符串、数值等。
      如果要传一个对象到当前方法中怎么办?——通过依赖注入
    5.依赖注入:解决了向类中的方法传递对象数据的问题
*/

class Demo1{
	// 通过字符串、数值用GET方式来传值到类方法中
	public function getName($name = 'king'){
		return 'hello'.$name;
	}

	/*
	 * 演示依赖注入
	 * \app\common\Temp $temp  这行代码将会触发依赖注入
	 */
	public function getMethod(\app\common\Temp $temp){
		// \app\common\Temp $temp  等价于 $temp = new \app\common\Temp;  即实例化对象
		//$temp = new \app\common\Temp; 
		$temp->setName('我在学习PHP');
		return $temp->getName();
	}
}

四、Temp.php类中的代码如下:

<?php
namespace app\common;

class Temp{

	private $name;	
	public function __construct($name = 'king'){
		$this->name = $name;
	}

	public function setName($name){
		$this->name = $name;
	}

	public function getName(){
		return '方法是:'.__METHOD__.'属性是:'.$this->name;
	}
}

五、输出结果:方法是:app\common\Temp::getName属性是:我在学习PHP

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post