## 入口文件
`ThinkPHP5.0`版本的默认自带的入口文件位于`public/index.php`(实际部署的时候`public`目录为你的应用对外访问目录),入口文件内容如下:
~~~
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
~~~
这段代码的作用就是定义应用目录`APP_PATH`和加载`ThinkPHP`框架的入口文件,这是所有基于`ThinkPHP`开发应用的第一步。
我们可以在浏览器中访问入口文件
~~~
http://localhost/tp5/public/
~~~
运行后我们会看到欢迎页面:
![](https://box.kancloud.cn/2016-03-11_56e274a2376df.png)
官方提供的默认应用的实际目录结构和说明如下:
~~~
├─application 应用目录(可设置)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块公共文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共文件
│ ├─config.php 应用配置文件
│ ├─tags.php 应用行为扩展定义文件
│ ├─database.php 数据库配置文件
│ └─route.php 路由配置文件
~~~
`5.0`版本采用模块化的设计架构,默认的应用目录下面只有一个`index`模块目录,如果我要添加新的模块可以使用控制台命令来生成。
切换到命令行模式下,进入到应用根目录并执行如下指令:
~~~
php think build --module demo
~~~
就会生成一个默认的demo模块,包括如下目录结构:
~~~
├─demo
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─view 视图目录
│ ├─config.php 模块配置文件
│ └─common.php 模块公共文件
~~~
同时也会生成一个默认的`Index`控制器文件。
> 注意:这只是一个初始默认的目录结构,在实际的开发过程中可能需要创建更多的目录和文件。
在后面的示例中,为了方便访问,我们设置`vhost`访问,以`apache`为例的话定义如下:
~~~
<VirtualHost *:80>
DocumentRoot "/home/www/tp5/public"
ServerName tp5.com
</VirtualHost>
~~~
>[info] 把`DocumentRoot`修改为你本机`tp5/public`所在目录,并注意修改本机的`hosts`文件把`tp5.com`指向本地`127.0.0.1`。
如果你暂时不想设置`vhost`或者还不是特别了解如何设置,可以先把入口文件移动到框架的`ROOT_PATH`目录,并更改入口文件中的`APP_PATH`和框架入口文件的位置(这里顺便展示下如何更改相关目录名称),`index.php`文件内容如下:
~~~
// 定义应用目录为apps
define('APP_PATH', __DIR__ . '/apps/');
// 加载框架引导文件
require __DIR__ . '/think/start.php';
~~~
这样最终的应用目录结构如下:
~~~
tp5
├─index.php 应用入口文件
├─apps 应用目录
├─public 资源文件目录
├─runtime 运行时目录
└─think 框架目录
~~~
实际的访问URL变成了
~~~
http://localhost/tp5/
~~~
>[success]### 提示:
> * * * * *
>如非特别说明,我们后面的示例均以`tp5.com`进行访问,如果你使用了其它的方式请自行修改。
>[danger]### 【 5.1 】使用须知
> * * * * *
> `5.1`版本的入口文件改变了`5.0`引入框架的`start.php`文件的方式,而是直接在入口文件中引入`base.php`文件。
如果要改变入口文件的位置,只需要把入口文件改为:
~~~
<?php
namespace think;
// 定义应用目录
define('APP_PATH', __DIR__ . '/app/');
// 加载框架基础引导文件
require __DIR__ . '/thinkphp/base.php';
// 执行应用并响应
Container::get('app')
->path(APP_PATH)
->run()
->send();
~~~
- 零、序言
- 一、基础
- (1)简介
- (2)安装
- (3)目录结构
- (4)运行环境
- (5)入口文件
- (6)资源访问
- (7)调试模式
- (8)控制器
- (9)视图
- (10)读取数据
- (11)总结
- 二、URL和路由
- (1)URL访问
- (2)参数传入
- (3)隐藏入口
- (4)定义路由
- (5)URL生成
- (6)总结
- 三、请求和响应
- (1)请求对象
- (2)请求信息
- (3)响应对象
- (4)总结
- 四、数据库
- (1)准备
- (2)数据库配置
- (3)原生查询
- (4)查询构造器
- (5)链式操作
- (6)事务支持
- 五、查询语言
- (1)查询表达式
- (2)批量查询
- (3)快捷查询
- (4)视图查询
- (5)闭包查询
- (6)获取值和列
- (7)聚合查询
- (8)时间查询
- (9)字符串查询
- (10)分块查询
- 六、模型和关联
- (1)模型定义
- (2)基础操作
- (3)读取器和修改器
- (4)类型转换和自动完成
- (5)查询范围
- (6)输入和验证
- (7)关联
- (8)模型输出
- 七、视图和模板
- (1)模板输出
- (2)分页输出
- (3)公共模板
- (4)模板定位
- (5)布局模板
- (6)标签定制
- (7)输出替换
- (8)渲染内容
- (9)助手函数
- 八、调试和日志
- (1)第一式:未雨绸缪——页面Trace
- (2)第二式:初见端倪——异常页面
- (3)第三式:拨云见日——断点调试
- (4)第四式:欲穷千里——日志分析
- (5)第五式:运筹帷幄——远程调试
- 九、API开发
- (1)API版本
- (2)异常处理
- (3)RESTFul
- (4)REST调试
- (5)API调试
- (6)安全建议
- 十、命令行工具
- (1)查看指令
- (2)模块生成
- (3)控制器生成
- (4)生成类库映射文件
- (5)生成路由缓存
- (6)生成字段缓存
- (7)指令扩展
- (8)命令行调试
- (9)命令行颜色支持
- (10)命令调用
- 十一、扩展
- (1)函数扩展
- (2)类库扩展
- (3)驱动扩展
- (4)Composer扩展
- 十二、杂项
- Session
- Cookie
- 验证码
- 文件上传
- 图像处理
- 单元测试
- 番外篇:学习ThinkPHP5的正确姿势
- 概念篇:ThinkPHP5名词解释
- 附录A、常见问题集
- 附录B、3.2和5.0区别
- 附录C、助手函数
- 附录D、5.1你必须努力避免的一些问题