1、请求对象

//传统调用
$request = Request::instance();//实例化对象
$request->url();//获取当前的域名
//继承think\Controller
class Index extends Controller(){
public function hello(){
return $this->request->url();//获取当前域名
}
}
//自动注入请求对象
class Index(){
public function hello(Request $request){
return $request->url();
}
}
//hello方法的request参数是系统自动注入的,而不需要通过URL请求传入。个人感觉此方法最直观、最实用
//动态绑定属性
class Base extends Controller(){
public function _initialize(){//优先执行的函数
$user = User::get(Session::get('user_id'));//User = 用户模型
Request::instance()->bind('user',$suer);//绑定用户信息到request
}
} //在其他控制器获取
class Index extends Base(){
public function(Request $request){
$request->user->id;
$request->user->name;
}
}
//使用助手函数:不需要继承Controller类、也无需引入Request
class Index{
public function hello(){
return request()->url();//获取url
}

2、请求信息

//获取请求参数
class Index(){
public function hello(Request $request){
     ...
$params = $request->param();//请求参数
}
} 路径:http://tp5.com/index/index/hello.html?test=ddd&name=thinkphp 参数:
array (size=2)
'test' => string 'ddd' (length=3)
'name' => string 'thinkphp' (length=8)
name:thinkphp
//input助手函数
...
public function hello(){
$name = input('name');
$test = input('test');
}
//设置默认值和变量过滤
...
public function hello(Request $request){
$request->param('name','World','strtolower');
//$request->param('变量','默认值','过滤条件');
}
//Request对象也可以用于获取其它的输入参数
$request->file('image');
// '上传文件信息:image';
$request->cookie('name');
// 'cookie参数:name';
input('file.image');
// '上传文件信息:image';
input('cookie.name');
// 'cookie参数:name';
//获取请求参数   http://tp5.com/index/index/hello/test/ddd.html?name=thinkphp
echo '请求方法:' . $request->method(); //GET
echo '资源类型:' . $request->type(); //HTML
echo '访问IP:' . $request->ip(); //127.0.0.1
echo '是否AJax请求:' . var_export($request->isAjax(), true); //false
dump($request->param());
echo '请求参数:仅包含name';
dump($request->only(['name']));
echo '请求参数:排除name';
dump($request->except(['name']));

3、响应对象

//默认输出
return ['name' => 'thinkphp', 'status' => '1']; 'default_return_type' => 'json',// 默认输出类型
输出:{"name":"thinkphp","status":"1"} 'default_return_type' => 'xml',// 默认输出类型
输出:<think><name>thinkphp</name><status>1</status></think>
use \traits\controller\Jump;//包含许多返回的方法
class Index{
public function index($name=''){
if ('thinkphp' == $name) {
$this->success('欢迎使用ThinkPHP
5.0','hello');
} else {
$this->error('错误的name','guest');
}
} public function hello(){
$this->redirect('http://www.baidu.com');//跳转页面
} }

《ThinkPHP 5.0快速入门》 请求和响应的更多相关文章

  1. 《ThinkPHP 5.0快速入门》 数据库、查询语言

    1.数据库配置 return [ 'type' => 'mysql',// 数据库类型 'hostname' => '127.0.0.1',// 服务器地址 'database' => ...

  2. 《ThinkPHP 5.0快速入门》 基础和路由

    一.基础: 创建项目:conposer create-project topthink/think tp5 --prefer-dist 创建项目模块:php think build --module ...

  3. ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载

    ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...

  4. ThinkPHP 5.0 控制器-》请求-》数据库

    ThinkPHP 5.0 控制器->请求->数据库 控制器总结 无需继承其他的类(若继承了Think/Controller,可直接调用view函数渲染模板),位置处于application ...

  5. python3.5+django2.0快速入门(二)

    昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...

  6. python3.5+django2.0快速入门(一)

    因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...

  7. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  8. Thinkphp5.0快速入门笔记(3)

    学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 快速入门第三节 获取当前的请求 ...

  9. Thinkphp5.0快速入门笔记(2)

    学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 示例建立新的模块和控制器 在a ...

随机推荐

  1. 状压dp做题笔记

    CodeChef Factorial to Square (分块决策) Description 给定一个n,要求在[1,n]中删除一些数,并使剩下的数的乘积是一个完全平方数,同时要求乘积最大,求删除方 ...

  2. [Docker] Run a command inside Docker container

    For example you are working in a backend project, you have setup Dockerfile: FROM node:10.16.0-stret ...

  3. 【Android-SwipeRefreshLayout控件】下拉刷新

    Android自带API ,V4包下面的下拉刷新控件 android.support.v4.widget.SwipeRefreshLayout SwipeRefreshLayout只能包含一个控件 布 ...

  4. maven工程指定jdk版本,maven全局配置jdk的版本

  5. PC打开AS400 folder

    1.首先确保在iSeriers能打开该folder  Wrklink 'QDLS'  如果出现如下错误,则需要增加user profile到Directory Entries list CPF9006 ...

  6. antd-mobile的DatePicker分钟精度半小时

    项目要求,在时间选择上需要精确到分钟,且分钟只能半小时,既0分钟或者是30分钟. 前期引用的时间控件是antd-mobile的DatePicker组件,具体用法可参考:https://mobile.a ...

  7. 预处理、const、static与sizeof-为什么要引入内联函数

    1:引入内联函数的主要目的是,用它替代C语言中表达形式的宏定义来解决程序中函数调用的效率问题.在C语言里可以使用如下的宏定义: #define ExpressionName(Var1,Var2) (V ...

  8. javascript实现集合Set、字典Dictionary、HashTable

    集合是由一组无序且唯一(即不能重复)的项组成的.这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中. function Set() { this.items = {}; } S ...

  9. 【软件工程】Beta冲刺(4/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增数据分析展示等功能API 服务器后端部署,API接口的beta版实现 展示 ...

  10. mac 配置apache

    Apache配置 对httpd.conf文件的配置.首先打开 /etc/apache2/httpd.conf文件,也就是Apache2.4的相关配置文件. 连接php 首先我们将相应的PHP版本配置进 ...