即可退出。
版本的默认自带的入口文件位于
ThinkPHP5.0
public/index.php
(实际部署的时候
public
目录为
你的应用对外访问目录),入口文件内容如下:
ThinkPHP
//定义应用目录
define('APP\_PATH',DIR . '/../application/');
//加载框架引导文件
requireDIR . '/../thinkphp/start.php';
这段代码的作用就是定义应用目录
APP\_PATH
开发应用的第一步。
ThinkPHP
我们可以在浏览器中访问入口文件
和加载
框架的入口文件,这是所有基于
<http://localhost/tp5/public/>
运行后我们会看到欢迎页面:

官方提供的默认应用的实际目录结构和说明如下:
├─application
│
│
│
│
│
│
│
│
│
│
│
│
│
├─index
│
│
│
│
│
│
├─config.php
├─common.php
├─controller
├─model
└─view
├─command.php
├─common.php
├─config.php
├─tags.php
├─database.php
└─route.php
应用目录(可设置) 模块目录(可更改)模块配置文件
模块公共文件控制器目录 模型目录
视图目录
命令行工具配置文件应用公共文件
应用配置文件
应用行为扩展定义文件数据库配置文件
路由配置文件
.0 版本采用模块化的设计架构,默认的应用目录下面只有一个以使用控制台命令来生成。
index
切换到命令行模式下,进入到应用根目录并执行如下指令:
模块目录,如果我要添加新的模块可
php think build --module demo
就会生成一个默认的demo模块,包括如下目录结构:
├─demo
│
├─controller
控制器目录
│
├─model
模型目录
│
├─view
视图目录
│
├─config.php
模块配置文件
│
└─common.php
模块公共文件
同时也会生成一个默认的 控制器文件。
Index
注意:这只是一个初始默认的目录结构,在实际的开发过程中可能需要创建更多的目录和文件。
apache
在后面的示例中,为了方便访问,我们设置
vhost
访问,以
为例的话定义如下:
<VirtualHost \*:80>
DocumentRoot "/home/www/tp5/public" ServerName tp5.com
</VirtualHost>
把DocumentRoot修改为你本机
tp5/public
tp5.com指向本地 。
127\.0.0.1
所在目录,并注意修改本机的
文件把
如果你暂时不想设置
hosts
vhost
目录,并更改入口文件中的
APP\_PATH
index.php
或者还不是特别了解如何设置,可以先把入口文件移动到框架的
和框架入口文件的位置(这里顺便展示下如何更改相关目录名称),
ROOT\_PATH
文件内容如下:
//定义应用目录为apps
define('APP\_PATH',DIR . '/apps/');
//加载框架引导文件
requireDIR . '/think/start.php';
这样最终的应用目录结构如下:
tp5
├─index.php
├─apps
├─public
├─runtime
└─think
应用入口文件应用目录
资源文件目录运行时目录 框架目录
实际的访问URL变成了
<http://localhost/tp5/>
提示:
如非特别说明,我们后面的示例均以tp5.com进行访问,如果你使用了其它的方式请自行修改。
- 目 录
- 零、序言
- 概述
- 目前章节完成情况(
- 表示已经完成)
- 阅读须知
- ThinkPHP V5.0 官方权威QQ群
- 简介
- 官网下载
- Composer安装和更新
- Git下载和更新
- [ Github ]
- [ 码 云 ]
- [ Coding ]
- 目录结构
- 运行环境
- 入口文件
- 调试模式
- 控制器
- 视图
- 读取数据
- 总结
- 二、URL和路由
- URL访问
- 参数传入
- 隐藏index.php
- 定义路由
- 完整匹配
- 闭包定义
- 设置URL分隔符
- 路由参数
- 变量规则
- 路由分组
- 复杂路由
- 生成URL地址
- 总结
- 三、请求和响应
- 请求对象
- 传统方式调用
- 继承think\Controller
- 自动注入请求对象
- 动态绑定属性
- 使用助手函数
- 请求信息
- 获取请求变量
- 获取请求参数
- 获取URL信息
- 获取当前模块/控制器/操作信息
- 获取路由和调度信息
- 响应对象
- 自动输出
- 手动输出
- 页面跳转
- 页面重定向
- 总结
- 四、数据库
- 准备
- 数据库配置
- 原生查询
- 创建(create)
- 删除(delete)
- 切换数据库
- 参数绑定
- 查询构造器
- 链式操作
- 事务支持
- 五、查询语言
- 查询表达式
- 批量查询
- 快捷查询
- 视图查询
- 闭包查询
- 使用Query对象
- 获取数值
- 获取列数据
- 聚合查询
- 字符串查询
- 时间(日期)查询
- 分块查询
- 六、模型和关联
- (1)模型定义
- 模型定义
- 设置数据表
- 设置完整数据表:
- (2)基础操作
- 新增数据
- 批量新增
- 查询数据
- 数据列表
- 更新数据
- 删除数据
- (3)读取器和修改器
- 读取器
- 修改器
- (4)类型转换和自动完成
- 类型转换
- 自动时间戳
- 自动完成
- (5)查询范围
- 查询范围
- 全局查询范围
- (6)输入和验证
- 表单提交
- 表单验证
- 错误提示
- 自定义验证规则
- 控制器验证
- (7)关联
- 基本定义
- 一对一关联
- 关联定义
- 关联写入
- 关联查询
- 关联更新
- 关联删除
- 一对多关联
- 关联定义
- 关联新增
- 关联查询
- 关联更新
- 关联删除
- 多对多关联
- 关联定义
- 关联新增
- 关联删除
- 关联查询
- (8)模型输出
- 输出数组
- 隐藏属性
- 指定属性
- 追加属性
- 输出JSON
- 七、视图和模板
- 模板输出
- 分页输出
- 公共模板
- 模板定位
- 模板布局
- 标签定制
- 输出替换
- 渲染内容
- 助手函数
- 八、调试和日志
- 第一式:未雨绸缪——页面Trace
- 第二式:初见端倪——异常页面
- 第三式:拨云见日——断点调试
- 变量调试输出
- 变量调试并中断输出
- 控制台输出
- 第四式:欲穷千里——日志分析
- 第五式:运筹帷幄——远程调试
- 九、API开发
- API版本
- 异常处理
- RESTFul
- 请求测试
- Postman
- 请求伪装
- API调试
- 环境安装
- 浏览器设置
- 应用配置
- 远程调试
- 安全建议
- 十、命令行工具
- 查看指令
- 生成模块
- 生成文件
- 生成类库映射文件
- 生成路由缓存文件
- 生成数据表字段缓存文件
- 指令扩展示例
- 命令行调试
- 命令行颜色支持
- 调用命令
- 十一、扩展
- 函数扩展
- 类库扩展
- 驱动扩展
- Composer扩展
- 十二、杂项
- Session
- 初始化
- 读取
- 操作
- 助手函数
- 模板输出
- 驱动
- Session示例
- Cookie
- 初始化
- 读取Cookie
- 模板输出
- 操作
- 设置
- 清空
- 验证码
- 安装类库
- 验证码显示
- 验证码检测
- 验证码配置
- 改变字体大小和验证码长度
- 同时使用多个验证码
- 文件上传
- 控制器定义
- 上传文件验证
- 文件保存规则
- 多文件上传
- 后续文件操作
- 图像处理
- 安装扩展
- 示例代码
- 控制器定义
- 模板定义
- 示例演示
- 读取图片
- 图片裁剪
- 生成缩略图
- 图像翻转
- 图片旋转
- 添加水印
- 文字水印
- 图片保存
- 单元测试
- 安装扩展
- 运行测试
- 添加单元测试用例
- 定义单元测试
- 附录
- A、常见问题集
- 为什么5.0取消了很多常量?
- 为啥单字母函数去掉了?
- 数据库查询和模型怎么用?
- 关于配置参数的问题
- 怎么才能在控制器中正确的输出模板
- 没有创建模型类怎么查询?
- 原来3.2版本的模型的
- 方法应该如何使用?
- 5.0怎么没有编译缓存了?
- 为什么写入数据的时候不会自动去除数据库没有的字段?
- 为什么不能识别驼峰法命名的控制器
- 的类库定义可以带上后缀么?
- 怎么实现模板输出的特殊字符串替换?
- 5.0的fetch和display方法有什么区别?
- 为什么Session无法获取?
- 为什么无法接收表单数组类型数据?
- 为什么模型的查询返回的都是对象而不是数组
- 为什么 类没有了?
- 原来的模板标签怎么不能用了?
- 5.0模型的
- 方法如何过滤非数据表字段值?
- 为什么路由变量用 获取不到?
- 如何关闭未定义变量的错误提示?
- 如何获取当前的模块、控制器和操作名
- 如何让生成的URL地址带上index.php
- 模型类的
- 属性和
- 模型的save方法调用后怎么获取自增主键的值?
- B、3.2和5.0区别
- URL和路由
- 请求对象和响应对象
- 模块和控制器
- 数据库
- 3.2版本
- 5.0版本
- 模型
- 3.2版本
- 5.0版本
- 自动验证和自动完成
- 异常
- 调试和日志
- 常量
- 函数
- C、助手函数
- 加载和实例化
- 参数:
- 示例:
- 参数:
- 示例:
- 参数:
- 示例:
- 示例:
- 示例:
- 示例:
- 示例:
- 示例:
- 返回值:示例:
- 参数:
- 数据操作
- 参数:
- 示例:
- 示例:
- 示例:
- 示例:
- 示例:
- 示例:
- 参数:
- 示例:
- 示例:
- 示例:
- 示例:
- 参数:
- 参数:
- 参数:
- 参数:
- 参数:
- 示例:
- 示例:
- 示例:
- 示例:
- 示例:
