1.构造函数:

控制器类必须继承了\think\Controller类,才能使用:

方法_initialize

代码:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

<?php
namespace app\lian\controller;use think\Controller;use think\Db;use think\Request;class Index extends Controller
{   
public function _initialize()
    {        echo 'init|||';
    }    
    public function hello()
    {        return 'hello';
    }
}

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

地址:http://localhost/index.php/lian/index/hello

看输出:Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

2.前置方法:

['except' => '方法名,方法名']:

表示这些方法不使用前置方法,

['only' => '方法名,方法名']:

表示只有这些方法使用前置方法。

*********************************分割线************************************

beforeActionList属性可以指定某个方法为其他方法的前置操作;

即执行之前执行;

代码:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

<?php
namespace app\lian\controller;use think\Controller;use think\Db;use think\Request;class Index extends Controller
{protected $beforeActionList = [        'first',
        'second' =>  ['except'=>'hello'],
        'three'  =>  ['only'=>'hello'],
    ];    
    protected function first()
    {        echo 'first<br/>';
    }    
    protected function second()
    {        echo 'second<br/>';
    }    
    protected function three()
    {        echo 'three<br/>';
    }    public function hello()
    {        return 'hello';
    }
    

    
}

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

看下输出:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

本该只输出hello的,却因为前置操作,输出了three方法;

注意:这种操作,方法名必须小写;

3.获取URL信息

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

<?php
namespace app\lian\controller;use think\Controller;use think\Db;use think\Request;class Index extends Controller
{public function index(){$request = Request::instance();// 获取当前域名echo 'domain: ' . $request->domain() . '<br/>';// 获取当前入口文件echo 'file: ' . $request->baseFile() . '<br/>';// 获取当前URL地址 不含域名echo 'url: ' . $request->url() . '<br/>';// 获取包含域名的完整URL地址echo 'url with domain: ' . $request->url(true) . '<br/>';// 获取当前URL地址 不含QUERY_STRINGecho 'url without query: ' . $request->baseUrl() . '<br/>';// 获取URL访问的ROOT地址echo 'root:' . $request->root() . '<br/>';// 获取URL访问的ROOT地址echo 'root with domain: ' . $request->root(true) . '<br/>';// 获取URL地址中的PATH_INFO信息echo 'pathinfo: ' . $request->pathinfo() . '<br/>';// 获取URL地址中的PATH_INFO信息 不含后缀echo 'pathinfo: ' . $request->path() . '<br/>';// 获取URL地址中的后缀信息echo 'ext: ' . $request->ext() . '<br/>';  
}
}

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

4.操作变量

获取PARAM变量

PARAM变量是框架提供的用于自动识别GETPOST或者PUT请求的一种变量获取方式,是系统推荐的获取请求参数的方法,用法如下:

可以通过Request对象完成全局输入变量的检测、获取和安全过滤~

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

// 获取当前请求的name变量Request::instance()->param('name');// 获取当前请求的所有变量(经过过滤)Request::instance()->param();// 获取当前请求的所有变量(原始数据)Request::instance()->param(false);// 获取当前请求的所有变量(包含上传文件)Request::instance()->param(true);

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

//获取REQUEST变量Request::instance()->request('id'); // 获取某个request变量Request::instance()->request(); // 获取全部的request变量(经过过滤)Request::instance()->request(false); // 获取全部的request原始变量数据

5.绑定参数

参数绑定方式默认是按照变量名进行绑定;

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

<?phppublic function read($id)
{    return 'id ='.$id;
    
}public function archive($year = '2017',$month = '07')
{    return 'year ='.$year.'$month ='.$month;
}

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

输入网址:

http://localhost/index.php/lian/index/read/id/544

输出:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

 

如果报出以上错误,报错的原因很简单,因为在执行read操作方法的时候,id参数是必须传入参数的,但是方法无法从URL地址中获取正确的id参数信息。由于我们不能相信用户的任何输入,因此建议你给read方法的id参数添加默认值

6.请求类型

ThinkPHP5.0 统一采用 think\Request类 处理请求类型。

获取请求类型:

 

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

public function hq()
{// 是否为 GET 请求if (Request::instance()->isGet()) echo "当前为 GET 请求";// 是否为 POST 请求if (Request::instance()->isPost()) echo "当前为 POST 请求";// 是否为 PUT 请求if (Request::instance()->isPut()) echo "当前为 PUT 请求";// 是否为 DELETE 请求if (Request::instance()->isDelete()) echo "当前为 DELETE 请求";// 是否为 Ajax 请求if (Request::instance()->isAjax()) echo "当前为 Ajax 请求";// 是否为 Pjax 请求if (Request::instance()->isPjax()) echo "当前为 Pjax 请求";// 是否为手机访问if (Request::instance()->isMobile()) echo "当前为手机访问";// 是否为 HEAD 请求if (Request::instance()->isHead()) echo "当前为 HEAD 请求";// 是否为 Patch 请求if (Request::instance()->isPatch()) echo "当前为 PATCH 请求";// 是否为 OPTIONS 请求if (Request::instance()->isOptions()) echo "当前为 OPTIONS 请求";// 是否为 cliif (Request::instance()->isCli()) echo "当前为 cli";// 是否为 cgiif (Request::instance()->isCgi()) echo "当前为 cgi";

http://www.cnblogs.com/xuan584521/p/7049930.html