thinkphp5.0學習筆記(三)獲取信息,變量,綁定參數
阿新 • • 發佈:2017-06-21
名稱 自動識別 參數順序 query images 報錯 oca nds arc
1.構造函數:
控制器類必須繼承了\think\Controller
類,才能使用:
方法_initialize
代碼:
<?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
看輸出:
2.前置方法:
[‘except‘ => ‘方法名,方法名‘]:
表示這些方法不使用前置方法,
[‘only‘ => ‘方法名,方法名‘]:
表示只有這些方法使用前置方法。
*********************************分割線************************************
beforeActionList
屬性可以指定某個方法為其他方法的前置操作;
即執行之前執行;
代碼:
<?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變量是框架提供的用於自動識別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 統一采用 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"; }
thinkphp5.0學習筆記(三)獲取信息,變量,綁定參數