首頁  >  文章  >  後端開發  >  使用thinkphp5.0取得資訊,變數,綁定參數

使用thinkphp5.0取得資訊,變數,綁定參數

PHP中文网
PHP中文网原創
2017-06-27 10:07:592452瀏覽

1.建構子:

控制器類別必須繼承了thinkController類,才能使用:

方法_initialize

程式碼:

<?php
namespace appliancontroller;use thinkController;use thinkDb;use thinkRequest;class Index extends Controller
{   
public function _initialize()
    {        echo &#39;init|||&#39;;
    }    
    public function hello()
    {        return &#39;hello&#39;;
    }
}

看輸出:使用thinkphp5.0取得資訊,變數,綁定參數

2.前置方法:

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

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

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

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

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

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

即執行之前執行;

程式碼:

<?php
namespace appliancontroller;use thinkController;use thinkDb;use thinkRequest;class Index extends Controller
{protected $beforeActionList = [        &#39;first&#39;,
        &#39;second&#39; =>  [&#39;except&#39;=>&#39;hello&#39;],
        &#39;three&#39;  =>  [&#39;only&#39;=>&#39;hello&#39;],
    ];    
    protected function first()
    {        echo &#39;first<br/>&#39;;
    }    
    protected function second()
    {        echo &#39;second<br/>&#39;;
    }    
    protected function three()
    {        echo &#39;three<br/>&#39;;
    }    public function hello()
    {        return &#39;hello&#39;;
    }
    

    
}

看下輸出:

使用thinkphp5.0取得資訊,變數,綁定參數

本來應該只輸出hello的,卻因為前置操作,輸出了three方法;

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

3.取得URL資訊

<?php
namespace appliancontroller;
use thinkController;
use thinkDb;
use thinkRequest;

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

4.操作變數

取得PARAM變數

PARAM變數是框架提供的用於自動識別GET、POST或PUT請求的一種變數取得方式,是系統建議的取得請求參數的方法,用法如下:

可以透過Request物件完成全域輸入變數的偵測、取得與安全性篩選~

// 获取当前请求的name变量
Request::instance()->param(&#39;name&#39;);
// 获取当前请求的所有变量(经过过滤)
Request::instance()->param();
// 获取当前请求的所有变量(原始数据)
Request::instance()->param(false);
// 获取当前请求的所有变量(包含上传文件)
Request::instance()->param(true);
//获取REQUEST变量
Request::instance()->request(&#39;id&#39;); // 获取某个request变量
Request::instance()->request(); // 获取全部的request变量(经过过滤)
Request::instance()->request(false); // 获取全部的request原始变量数据

5.綁定參數

參數綁定方式預設是依照變數名進行綁定;

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

輸入網址:

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

輸出:

使用thinkphp5.0取得資訊,變數,綁定參數

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

使用thinkphp5.0取得資訊,變數,綁定參數

如果報出以上錯誤,報錯的原因很簡單,因為在執行read操作方法的時候,id參數是必須傳入參數的,但是方法無法從URL位址中取得正確的id參數資訊。由於我們不能相信使用者的任何輸入,因此建議你為read方法的id參數添加預設值

6.請求類型

ThinkPHP5.0 統一採用 thinkRequest類別 處理請求類型。

取得請求類型:

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";
    
}

以上是使用thinkphp5.0取得資訊,變數,綁定參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn