《ThinkPHP 5.0快速入门》 请求和响应
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快速入门》 请求和响应的更多相关文章
- 《ThinkPHP 5.0快速入门》 数据库、查询语言
1.数据库配置 return [ 'type' => 'mysql',// 数据库类型 'hostname' => '127.0.0.1',// 服务器地址 'database' => ...
- 《ThinkPHP 5.0快速入门》 基础和路由
一.基础: 创建项目:conposer create-project topthink/think tp5 --prefer-dist 创建项目模块:php think build --module ...
- ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载
ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...
- ThinkPHP 5.0 控制器-》请求-》数据库
ThinkPHP 5.0 控制器->请求->数据库 控制器总结 无需继承其他的类(若继承了Think/Controller,可直接调用view函数渲染模板),位置处于application ...
- python3.5+django2.0快速入门(二)
昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...
- python3.5+django2.0快速入门(一)
因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...
- TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN
原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...
- Thinkphp5.0快速入门笔记(3)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 快速入门第三节 获取当前的请求 ...
- Thinkphp5.0快速入门笔记(2)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 示例建立新的模块和控制器 在a ...
随机推荐
- cookie与session的区别?
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于才服务器端保持状态的方 ...
- XGBoost的优点
1. Gradient boosting(GB) Gradient boosting的思想是迭代生多个(M个)弱的模型,然后将每个弱模型的预测结果相加,后面的模型Fm+1(x)基于前面学习模型的Fm( ...
- vue-element-admin平时使用归纳
message提示的使用 import { Message } from 'element-ui'; Message({ message: res.data.message || 'Error', t ...
- Django基础之JsonResponse对象
JsonResponse是HttpResponse的子类, 专门用来生成JSON编码的响应. from django.http import JsonResponse response = JsonR ...
- 【java设计模式】-05建造者模式
建造者模式 简述 建造者模式,是将一个复杂对象的创建和它的表示分离开来,这就使得同样的构建构成可以有不同的表示. 建造者模式是一步步构建一个复杂的对象,允许用户只需要指定复杂对象的类型和必要的内容就可 ...
- wgs84 转百度经纬度坐标
/** * wgs84 转百度地图坐标 * @param $lng * @param $lat * @return array */ function toBaiduLocation($lng,$la ...
- 安装完Pycharm,启动时碰到"failed to load jvm dll"的解决方案
今天安装完系统,配置pycharm的环境的时候,启动pycharm时,碰到"failed to load jvm dll"的错误, 下面给出其解决方案: 安装Microsoft V ...
- maven上传jar包(oracle jdbc驱动)
由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库.一.首先要得到Oracle J ...
- JAVA单元测试的用法和要点
2018年09月25日 10:11:18 琼歌 阅读数 5192 版权声明:禁止转载 https://blog.csdn.net/qq_36505948/article/details/827 ...
- ueditor 图片选区错位问题,图片无法正常缩放
当编辑框高度固定可内部滚动时,ueditor插入图片调节框显示bug 在使用百度euditor的编辑器时,我们常常需要让用户对插入的图片进行拉伸修改大小.当euditor的编辑框不随内容的增加而调节高 ...