1.建構子:
控制器類別必須繼承了thinkController類,才能使用:
方法_initialize
程式碼:
<?php namespace 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屬性可以指定某個方法為其他方法的前置操作;
即執行之前執行;
程式碼:
<?php namespace 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資訊
<?php namespace 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_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變數是框架提供的用於自動識別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.綁定參數
參數綁定方式預設是依照變數名進行綁定;
<?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 統一採用 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中文網其他相關文章!