博客列表 >522-ThinkPHP5.1之控制器和请求对象兼依赖注入案例

522-ThinkPHP5.1之控制器和请求对象兼依赖注入案例

小威的博客
小威的博客原创
2018年05月23日 11:43:361980浏览
  • ThinkPHP5.1之控制器

控制器其实就是一个类,用来接受用户的请求并将处理结果返回给调用者(客户端),控制器是一个核心,框架的所有请求操作都由控制器控制,就像一部电脑的CPU


控制器中渲染输出问题,全部采用return 返回,return 默认仅返回字符串类型的数据

// 默认输出类型       可选json
'default_return_type'    => 'html',
  • 控制器默认命名空间与修改方法

1. 命名空间: app\模块名\controller;

2. app: 系统中默认的针对应用的根命名空间,可以在.env中进行设置

3. APP_NAMESPACE = application

4. .env文件必须放在应用根目录下(与应用目录同级)

5. controller: 并不是控制器目录名称,本质上是:可访问控制器

实例:将系统可访问控制器设置为api
(1)修改config/app.php:
// 默认的访问控制器层
    'url_controller_layer'   => 'api',
(2)在index模块中创建api目录,创建Index控制器类和index()方法
<?php 
namespace app\index\api;
class Index
{
public function index()
{
return '<h3>我是api访问控制器中的Index控制器中的test()';
}
}
(3)访问: tp51.io/index.php/index/index/index,将会自动访问我们自定义的控制器层

除了默认控制器层可重定义外,默认控制器与默认方法与可以重定义

实例:(1)修改app.php中的配置项
// 默认控制器名
    'default_controller'     => 'User',
    // 默认操作名
    'default_action'         => 'list',
(2)在api/创建User.php
<?php 
namespace app\index\api;
class User
{
public function list()
{
return '<h2>我是api控制器层中的User控制器中的list()操作';
}
}


  • ThinkPHP5.1之请求对象


请求对象就是一个URL地址,也叫URL请求,就是用户通过输入来获取和设置这些URL中的参数

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

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

// URL参数方式 0 按名称成对解析 1 按顺序解析
'url_param_type'=>  0,

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

//按名称成对解析
'url_param_type'=>  0, 

 

public function study($site,$course)
{
return '<h2>我在'.$site.'学习'.$course.'课程';
}

显示效果: 我在php中文网学习thinkphp5.1课程

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

按顺序解析
'url_param_type'=>  1,
 

public function study($site,$course)
{
return '<h2>我在'.$site.'学习'.$course.'课程';
}

显示效果: 我在www.php.cn学习PHP课程
  • 依赖注入:将当前类依赖的对象,以参数的方式注入到当前类中,简称依赖注入

<?php
class Mi
{
public function size()
{
return '5.99寸全面屏';
}
public function feature()
{
return '屏下指纹解锁';
}
}


1. 构造方法实现依赖注入

class Mi7
{
private $Mi = null;
public function __construct(Mi $mi)
{
$this->mi = $mi;
}
public function getInfo()
{
return '小米8:'.$this->mi->size();
}
}
//将实例化外部对象的语句放在了类的外部
$mi = new Mi;
$Mi7 = new Mi7($mi);
echo $Mi7->getInfo();
echo '<hr>';

2.用普通方式实现依赖注入

class Mi8
{
public function buy(Mi $mi)
{
return '小米8:'.'特色功能:'.$mi->feature();
}
}
$mi = new Mi;
$mi8 = new Mi8();
echo $mi8->buy($mi);

QQ截图20180523130749.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议