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

來源:互聯網
上載者:User
1.建構函式:

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

方法_initialize

代碼:

<?phpnamespace appliancontroller;use thinkController;use thinkDb;use thinkRequest;class Index extends Controller{   public function _initialize()    {        echo 'init|||';    }        public function hello()    {        return 'hello';    }}

看輸出:

2.前置方法:

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

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

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

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

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

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

即執行之前執行;

代碼:

<?phpnamespace appliancontroller;use thinkController;use thinkDb;use thinkRequest;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資訊

<?phpnamespace appliancontroller;use thinkController;use thinkDb;use thinkRequest;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/>';  }}

4.操作變數

擷取PARAM變數

PARAM變數是架構提供的用於自動識別GET、POST或者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.綁定參數

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

<?phppublic 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 統一採用 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 請求";// 是否為 cliif (Request::instance()->isCli()) echo "當前為 cli";// 是否為 cgiif (Request::instance()->isCgi()) echo "當前為 cgi";    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.