thinkphp5.0學習筆記(三)獲取信息,變量,綁定參數

1.構造函數:

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

方法_initialize安全

代碼:app

<?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';
    }
}

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

看輸出:dom

2.前置方法:

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

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

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

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

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

beforeActionList屬性能夠指定某個方法爲其餘方法的前置操做;code

即執行以前執行;對象

代碼:

<?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';
    }
    

    
}

看下輸出:

本該只輸出hello的,卻由於前置操做,輸出了three方法;

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

3.獲取URL信息

<?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_STRING
echo '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/>';  
}
}

4.操做變量

獲取PARAM變量

PARAM變量是框架提供的用於自動識別GETPOST或者PUT請求的一種變量獲取方式,是系統推薦的獲取請求參數的方法,用法以下:

能夠經過Request對象完成全局輸入變量的檢測、獲取和安全過濾~

// 獲取當前請求的name變量
Request::instance()->param('name');
// 獲取當前請求的全部變量(通過過濾)
Request::instance()->param();
// 獲取當前請求的全部變量(原始數據)
Request::instance()->param(false);
// 獲取當前請求的全部變量(包含上傳文件)
Request::instance()->param(true);
//獲取REQUEST變量
Request::instance()->request('id'); // 獲取某個request變量
Request::instance()->request(); // 獲取所有的request變量(通過過濾)
Request::instance()->request(false); // 獲取所有的request原始變量數據

5.綁定參數

參數綁定方式默認是按照變量名進行綁定;

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

輸入網址:

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

輸出:

按照變量名進行參數綁定的參數必須和URL中傳入的變量名稱一致,可是參數順序不須要一致

 

若是報出以上錯誤,報錯的緣由很簡單,由於在執行read操做方法的時候,id參數是必須傳入參數的,可是方法沒法從URL地址中獲取正確的id參數信息。因爲咱們不能相信用戶的任何輸入,所以建議你給read方法的id參數添加默認值

6.請求類型

ThinkPHP5.0 統一採用 think\Request類 處理請求類型。

獲取請求類型:

 

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 請求";
// 是否爲 cli
if (Request::instance()->isCli()) echo "當前爲 cli";
// 是否爲 cgi
if (Request::instance()->isCgi()) echo "當前爲 cgi";
    
}
相關文章
相關標籤/搜索