摘要:一、请求对象的本质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
老师总结:不错不错!这几篇作业写的都很棒哦!不要骄傲!继续加油吧!