> ## 获得请求对象
```
// 方法一:实例化对象
1.use think\Request;
2.$request = Request::instance();
// 方法二: 助手函数
$request = request();
// 方法三:依赖注入
1.use think\Request;
2.在方法的形参表添加Request $request
```
>## 获取URL信息
```
$request = Request::instance();
// 获取当前域名
echo 'domain: ' . $request->domain() . '<br/>'; // http://tp5.com
// 获取当前入口文件
echo 'file: ' . $request->baseFile() . '<br/>'; // /index.php
// 获取当前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>'; // /index/index/hello.html?name=thinkphp
// 获取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>'; // http://tp5.com/index/index/hello.html?name=thinkphp
// 获取当前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>'; // /index/index/hello.html
// 获取URL访问的ROOT地址
echo 'root:' . $request->root() . '<br/>'; //
// 获取URL访问的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/>'; // http://tp5.com
// 获取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>'; // index/index/hello.html
// 获取URL地址中的PATH_INFO信息 不含后缀
echo 'pathinfo: ' . $request->path() . '<br/>'; // index/index/hello
// 获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/>'; // html
```
>## 获取或设置 模块/控制器/操作
```
// 获取
$request = Request::instance();
echo "当前模块名称是" . $request->module();
echo "当前控制器名称是" . $request->controller();
echo "当前操作名称是" . $request->action();
// 设置
Request::instance()->module('module_name')
```
>## 获取请求参数
```
$request = Request::instance();
echo '请求方法:' . $request->method() . '<br/>'; // GET
echo '资源类型:' . $request->type() . '<br/>'; // html
echo '访问ip地址:' . $request->ip() . '<br/>'; // 127.0.0.1
echo '是否AJax请求:' . var_export($request->isAjax(), true) . '<br/>'; // false
echo '请求参数:';
dump($request->param()); // array (size=2) 'test' => string 'ddd' (length=3) 'name' => string 'thinkphp' (length=8)
echo '请求参数:仅包含name';
dump($request->only(['name'])); // array (size=1) 'name' => string 'thinkphp' (length=8)
echo '请求参数:排除name';
dump($request->except(['name'])); // array (size=1) 'test' => string 'ddd' (length=3)
```
>## 获取路由和调度信息
```
$request = Request::instance();
dump($request->route()); // 路由信息
dump($request->dispatch()); // 调度信息
// 假设路由定义
return [
'hello/:name' =>['index/hello',[],['name'=>'\w+']],
];
// 假设访问的url为
http://serverName/hello/thinkphp
// 结果
路由信息:
array (size=4)
'rule' => string 'hello/:name' (length=11)
'route' => string 'index/hello' (length=11)
'pattern' =>
array (size=1)
'name' => string '\w+' (length=3)
'option' =>
array (size=0)
empty
调度信息:
array (size=2)
'type' => string 'module' (length=6)
'module' =>
array (size=3)
0 => null
1 => string 'index' (length=5)
2 => string 'hello' (length=5)
```
>## 设置请求信息
```
$request = Request::instance();
$request->root('index.php');
$request->pathinfo('index/index/hello');
```
- 运行环境需求
- tp5目录结构
- 命令行生成代码
- 路由
- 请求
- 获取请求信息
- 超全局变量获取
- 更改请求变量的值
- 判断是否为某种请求类型
- 伪装表单请求类型
- HTTP头部信息
- 伪静态
- 向请求对象中注入自定义的属性和方法
- 简单的传参可以使用参数绑定
- 依赖注入(将对象注入方法作为参数)
- 将请求的数据进行缓存
- 控制器
- 一个控制器代码示例
- 空控制器
- 资源控制器
- 模型
- 一个模型代码示例
- 模型的四种调用方法
- 控制器中调用模型添加数据
- 控制器中调用模型更新数据
- 控制器中调用模型删除数据
- 控制器中调用模型查询数据
- 模型中使用聚合函数
- 获取器
- 修改器
- 自动写入时间戳
- 只读字段
- 软删除
- 自动类型转换
- 数据自动完成
- 查询范围
- 数组方式访问和转换为数组
- json序列化
- 模型的事件
- 关联模型
- 一对一关联
- 一对多关联
- 远程一对多(跨表关联)
- 多对多关联
- 多态关联
- 关联预载入N+1次查询变2次
- 延迟预载入
- 关联统计
- 视图与模板
- 模板引擎配置
- 分配数据到模板
- 输出替换
- 模板中输出变量
- 模板中输出系统变量(配置常量超全局)
- 模板中输出请求信息
- 模板中使用php函数
- 输出到模板中的变量指定默认值
- 模板中进行运算
- 原样输出代码不解析
- 模版中注释
- 模板布局与继承
- 文件包含
- 内置标签
- 循环输出标签
- 比较标签
- 条件判断标签
- 引入资源文件(js-css)
- 使用原生php
- 在模板中定义变量和常量
- 助手函数
- 常用功能
- 表单验证
- 验证器的定义
- 自定义验证规则
- 速查表
- 系统默认根命名空间
- 系统路径常量
- 请求变量
- URL请求和信息方法