## 入口文件 `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(); ~~~