请求对象及依赖注入简单理解

原创 2018-11-27 10:06:18 410
摘要:一、请求对象的本质1. 简单理解,请求对象就是一个URL地址,也叫URL请求2. 请求对象中提供中大最的方法来获取和设置这些URL中的参数二、参数绑定参数指的是URL地址中的参数,特指是path_info方式获取1. 参数绑定的规则在app.php中设置// URL参数方式 0 按名称成对解析 1 按顺序解析'url_param_type'=>  0,2.按名称绑定

一、请求对象的本质

1. 简单理解,请求对象就是一个URL地址,也叫URL请求

2. 请求对象中提供中大最的方法来获取和设置这些URL中的参数



二、参数绑定

参数指的是URL地址中的参数,特指是path_info方式获取

1. 参数绑定的规则在app.php中设置

// URL参数方式 0 按名称成对解析 1 按顺序解析

'url_param_type'=>  0,


2.按名称绑定: 默认方式,必须写出变量名称,以名值对方式出现,与参数顺序无关

http://tp51.io/index.php/index/user/study/site/php中文网/course/thinkphp5.1

public function study($site,$course)

{

return '<h2>我在'.$site.'学习'.$course.'课程';

}


3.按顺序绑定: 不必给出参数名称,只需要给出参数值即可,虽然url地址更短,但参数顺序绝对不能颠倒

'url_param_type'=>  1,

http://tp51.io/index.php/index/user/study/php.cn/thinkphp5.1



三、依赖注入

对于一个URL请求来说,普通参数可以通过参数绑定的方式传到控制器的操作方法中?

如果是对象参数,难道也可以用参数绑定的方式吗?显然不行,因为url地址根本不可能传入对象

将一个对象参数传到操作方法,ThinkPHP5.1采用的是依赖注入技术,这个技术在5.0版本中已经使用了.


实例:

1.将参数绑定规则改回默认值: 'url_param_type'=>  0,

2.在当前控制器中创建一个新操作:

public function getParam(\think\Request $request)

{

dump($request->param());

}

/**
 * 如果在方法直接new一个类,会让当前类与被引用的类之间产生高度的依赖关系,即高耦合,如何解藕呢?
 * 最好的方法是,方法中引用对象,通过参数的方式传递到当前类中,这就是依赖注入
 * 简单解释就是:将当前类依赖的对象,以参数的方式注入到当前类中,简称依赖注入
 * 实现依赖注入的方式:
 * 1.构造方法中实现
 * 2.普通方式中实现
 */

//1. 构造方法实现依赖注入
class Boy
{

	private $girl = null;

	public function __construct(Girl $girl)
	{
		$this->girl = $girl;
	}
	public function getInfo()
	{
		#code...
	}

	
}

//将实例化外部对象的语句放在了类的外部
$girl = new Girl;
$boy = new Boy($girl);
echo $boy->getInfo();
echo '<hr>';

//2.用普通方式实现依赖注入
class Boy2
{
	public function buy(Girl $girl)
	{
		return '我的女朋友'.$girl->hobby();
	}
}

$girl = new Girl;
$boy2 = new Boy2();
echo $boy2->buy($girl);


批改老师:韦小宝批改时间:2018-11-27 11:24:49
老师总结:不错不错!这几篇作业写的都很棒哦!不要骄傲!继续加油吧!

发布手记

热门词条