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. Spring Boot 跨域访问

    如何在 Spring Boot 中配置跨域访问呢? Spring Boot 提供了对 CORS 的支持,您可以实现WebMvcConfigurer 接口,重写addCorsMappings 方法来添加 ...

  2. Google Maps API3 之 Hello World

    <html xmlns="http://www.w3.org/1999/xhtml">     <head>         <meta http-e ...

  3. linux系统相关文件和操作

    查看内核: uname -r [root@server0 ~]# uname -r -.el7.x86_64 [root@server0 ~]# 查看版本: cat  /etc/redhat-rele ...

  4. FPGA数据舍入方式

    1,在Verilog代码中,常用的代码写法为直接截位: 2,在Vivado的IP核中常见的两种舍入方式为Truncation和Rounding, 3,在Matlab中常见的四种舍入函数为floor, ...

  5. AtCoder Beginner Contest 137 D题【贪心】

    [题意]一共有N个任务和M天,一个人一天只能做一个任务,做完任务之后可以在这一天之后的(Ai-1)天拿到Bi的工资,问M天内最多可以拿到多少工资. 链接:https://atcoder.jp/cont ...

  6. gzip/bzip/xz/tar

    说明 归档和压缩并不是一回事,压缩是按照压缩算法将文件进行压缩,一般是直接压缩文件,不同的压缩工具的压缩比率是不一样的,同时还支持在压缩工具中指定压缩比,gz < bz2 <xz 压缩增大 ...

  7. tensorflow实现siamese网络 (附代码)

    转载自:https://blog.csdn.net/qq1483661204/article/details/79039702 Learning a Similarity Metric Discrim ...

  8. MFC消息反射机制

    消息反射机制要解决什么问题呢? 消息反射机制主要是为了控件而实现的.每当控件需要某些资讯(比如,绘制自身背景的画刷,显示字体的颜色等等)时,都会频繁地向其父窗口发送通告消息(notification ...

  9. 宝塔apache设置泛目录的反向代理/莲花泛目录

    反向解析目标站-泛目录站一般用ip或者ip:端口来搭建,这样可以节省一个域名,当然也可以用域名,看个人爱好.主站和泛站可以同一个服务器和可以不同服务器,看个人实际情况.先来看宝塔的反向代理的步骤:点击 ...

  10. Linux常用目录及目录作用说明

    Linux目录结构 /:根目录 /boot:存放系统启动相关文件 /etc:存放系统配置文件 /dev:存放系统设备文件(如/dev/sda) /run:存放系统运行相关文件 /bin:存放系统命令 ...