1.構(gòu)造函數(shù):

控制器類必須繼承了\think\Controller類,才能使用:

方法_initialize

代碼:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

<?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培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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

看輸出:Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

2.前置方法:

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

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

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

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

*********************************分割線************************************

beforeActionList屬性可以指定某個(gè)方法為其他方法的前置操作;

即執(zhí)行之前執(zhí)行;

代碼:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

<?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培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

看下輸出:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

本該只輸出hello的,卻因?yàn)榍爸貌僮?,輸出了three方法;

注意:這種操作,方法名必須小寫;

3.獲取URL信息

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

<?php
namespace app\lian\controller;use think\Controller;use think\Db;use think\Request;class Index extends Controller
{public function index(){$request = Request::instance();// 獲取當(dāng)前域名echo 'domain: ' . $request->domain() . '<br/>';// 獲取當(dāng)前入口文件echo 'file: ' . $request->baseFile() . '<br/>';// 獲取當(dāng)前URL地址 不含域名echo 'url: ' . $request->url() . '<br/>';// 獲取包含域名的完整URL地址echo 'url with domain: ' . $request->url(true) . '<br/>';// 獲取當(dāng)前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培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

4.操作變量

獲取PARAM變量

PARAM變量是框架提供的用于自動識別GET、POST或者PUT請求的一種變量獲取方式,是系統(tǒng)推薦的獲取請求參數(shù)的方法,用法如下:

可以通過Request對象完成全局輸入變量的檢測、獲取和安全過濾~

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

// 獲取當(dāng)前請求的name變量Request::instance()->param('name');// 獲取當(dāng)前請求的所有變量(經(jīng)過過濾)Request::instance()->param();// 獲取當(dāng)前請求的所有變量(原始數(shù)據(jù))Request::instance()->param(false);// 獲取當(dāng)前請求的所有變量(包含上傳文件)Request::instance()->param(true);

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

//獲取REQUEST變量Request::instance()->request('id'); // 獲取某個(gè)request變量Request::instance()->request(); // 獲取全部的request變量(經(jīng)過過濾)Request::instance()->request(false); // 獲取全部的request原始變量數(shù)據(jù)

5.綁定參數(shù)

參數(shù)綁定方式默認(rèn)是按照變量名進(jìn)行綁定;

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

輸入網(wǎng)址:

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

輸出:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

按照變量名進(jìn)行參數(shù)綁定的參數(shù)必須和URL中傳入的變量名稱一致,但是參數(shù)順序不需要一致

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

 

如果報(bào)出以上錯(cuò)誤,報(bào)錯(cuò)的原因很簡單,因?yàn)樵趫?zhí)行read操作方法的時(shí)候,id參數(shù)是必須傳入?yún)?shù)的,但是方法無法從URL地址中獲取正確的id參數(shù)信息。由于我們不能相信用戶的任何輸入,因此建議你給read方法的id參數(shù)添加默認(rèn)值

6.請求類型

ThinkPHP5.0 統(tǒng)一采用 think\Request類 處理請求類型。

獲取請求類型:

 

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

public function hq()
{// 是否為 GET 請求if (Request::instance()->isGet()) echo "當(dāng)前為 GET 請求";// 是否為 POST 請求if (Request::instance()->isPost()) echo "當(dāng)前為 POST 請求";// 是否為 PUT 請求if (Request::instance()->isPut()) echo "當(dāng)前為 PUT 請求";// 是否為 DELETE 請求if (Request::instance()->isDelete()) echo "當(dāng)前為 DELETE 請求";// 是否為 Ajax 請求if (Request::instance()->isAjax()) echo "當(dāng)前為 Ajax 請求";// 是否為 Pjax 請求if (Request::instance()->isPjax()) echo "當(dāng)前為 Pjax 請求";// 是否為手機(jī)訪問if (Request::instance()->isMobile()) echo "當(dāng)前為手機(jī)訪問";// 是否為 HEAD 請求if (Request::instance()->isHead()) echo "當(dāng)前為 HEAD 請求";// 是否為 Patch 請求if (Request::instance()->isPatch()) echo "當(dāng)前為 PATCH 請求";// 是否為 OPTIONS 請求if (Request::instance()->isOptions()) echo "當(dāng)前為 OPTIONS 請求";// 是否為 cliif (Request::instance()->isCli()) echo "當(dāng)前為 cli";// 是否為 cgiif (Request::instance()->isCgi()) echo "當(dāng)前為 cgi";

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