Use thinkphp5.0 to obtain information, variables, and binding parameters

PHP中文网
Release: 2023-03-11 06:08:02
Original
2511 people have browsed it

1. Constructor:

The controller class must inherit the thinkController class to use:

Method_initialize

Code:

<?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;;
    }
}
Copy after login

Look at the output: Use thinkphp5.0 to obtain information, variables, and binding parameters

2. Prefix method:

['except' => 'Method name, method name']:

means that these methods are not Use the prefix method,

['only' => 'Method name, method name']:

means that only these methods use the prefix method.

*********************************Dividing line********* ***************************

beforeActionList attribute can specify a method as a pre-operation for other methods;

That is, execute before execution;

Code:

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

    
}
Copy after login

Look at the output:

Use thinkphp5.0 to obtain information, variables, and binding parameters

It should only output hello, However, because of the pre-operation, three methods are output;

Note: For this operation, the method name must be lowercase;

3. Get URL information

<?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;;  
}
}
Copy after login

4. Manipulate variables

Get PARAM variable

PARAM variable is a variable acquisition method provided by the framework for automatically identifying GET, POST or PUT requests. It is the system recommended method for obtaining request parameters. The usage is as follows :

The detection, acquisition and security filtering of global input variables can be completed through the Request object~

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

5. Binding parameters

The default parameter binding method is according to the variable name Bind;

<?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;
}
Copy after login

Input URL:

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

Output:

Use thinkphp5.0 to obtain information, variables, and binding parameters

The parameters for parameter binding according to the variable name must be consistent with the variable name passed in the URL, but the order of the parameters does not need to be consistent

Use thinkphp5.0 to obtain information, variables, and binding parameters

If the above error is reported, the reason for the error is very simple, because when executing the read operation method, the id parameter must be passed in, but the method cannot obtain the correct id parameter information from the URL address. Since we cannot trust any user input, we recommend that you add a default value to the id parameter of the read method

6. Request type

ThinkPHP5.0 uniformly uses the thinkRequest class to handle request types.

Get request type:

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";
    
}
Copy after login

The above is the detailed content of Use thinkphp5.0 to obtain information, variables, and binding parameters. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template