## 入口文件
`ThinkPHP5.0`版本的默認自帶的入口文件位于`public/index.php`(實際部署的時候`public`目錄為你的應用對外訪問目錄),入口文件內容如下:
~~~
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引導文件
require __DIR__ . '/../thinkphp/start.php';
~~~
這段代碼的作用就是定義應用目錄`APP_PATH`和加載`ThinkPHP`框架的入口文件,這是所有基于`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 路由配置文件
~~~
`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你必須努力避免的一些問題