您好,登錄后才能下訂單哦!
1.入口文件
ThinkPHP采用單一入口模式進行項目部署和訪問,無論完成什么功能,一個項目都有一個統一(但不一定是唯一)的入口。應該說,所有項目都是從入口文件開始的,并且所有的項目的入口文件是類似的,入口文件中主要包括:
2定義框架路徑、項目路徑和項目名稱(可選)
2定義調試模式和運行模式的相關常量(可選)
2載入框架入口文件(必須)
首先,在服務器或者本地的Web目錄下面創建一個App目錄,并且把下載的ThinkPHP框架的ThinkPHP目錄拷貝到App目錄下面,然后在App目錄下面創建一個index.php文件,該文件就是我們要創建項目的入口文件。
新版的入口文件更加簡化,默認情況下,只需要在該文件中添加一行代碼即可:
require './ThinkPHP/ThinkPHP.php';
然后,我們打開瀏覽器,輸入地址并運行:
http://localhost/App/
就會看到歡迎頁面:
表示ThinkPHP已經成功執行,這個時候,系統已經在App下面自動生成了項目相關目錄,并寫入了初始Action。(注意:如果是類Unix或者Linux環境下測試的話,需要對App目錄設置可寫權限,否則無法自動生成目錄結構)
入口文件中還可以添加系統或者應用的常量定義,如果我們的項目需要采用其他的模式運行(例如,采用命令行模式運行),那么可以定義MODE_NAME如下:
define('MODE_NAME','cli');
如果沒有在項目入口文件中設置MODE_NAME常量的話,就表示采用系統的標準模式運行。由于模式擴展可以改變底層的運行機制和行為定義,本手冊中的內容如無特別說明,功能描述均表示運行于標準模式下面。
入口文件并不一定都是指index.php 文件,因為我們可以為不同的項目創建不同的入口文件,例如,前臺項目的入口文件為index.php ,后臺項目的入口文件可能是admin.php。
如果你改變了項目目錄(例如把Application
更改為Apps
),只需要在入口文件更改APP_PATH常量定義即可:
define('APP_PATH','./Apps/'); require './ThinkPHP/ThinkPHP.php';
注意:3.2版本開始無需定義APP_NAME常量。
注意:APP_PATH的定義支持相對路徑和絕對路徑,但必須以“/”結束。
如果你調整了框架核心目錄的位置或者目錄名,只需要這樣修改:
define('APP_PATH','./Application/');require './Think/ThinkPHP.php';
也可以單獨定義一個THINK_PATH常量用于引入:
define('APP_PATH','./Application/'); define('THINK_PATH',realpath('../Think').'/'); require THINK_PATH.'ThinkPHP.php';
和APP_PATH一樣THINK_PATH路徑定義也必須以“/”結尾。
給THINK_PATH和APP_PATH定義絕對路徑會提高系統的加載效率。
2.入口文件的其他定義
一般不建議在入口文件中做過多的操作,但可以重新定義一些系統常量,入口文件中支持定義(建議)的一些系統常量包括:
常量 | 描述 |
THINK_PATH | 框架目錄 |
APP_PATH | 應用目錄 |
RUNTIME_PATH | 應用運行時目錄(可寫) |
APP_DEBUG | 應用調試模式(默認false) |
STORAGE_TYPE | 存儲類型(默認為FILE) |
APP_MODE | 應用模式(默認common) |
注意:所有路徑常量都必須以“/”結尾
3.自動生成目錄
接下來再看原來空的Application
目錄下面,已經自動生成了公共模塊Common
、默認的Home
模塊和Runtime
運行時目錄的目錄結構:
Application ├─Common 應用公共模塊 │ ├─Common 應用公共函數目錄 │ └─Conf 應用公共配置文件目錄 ├─Home 默認生成的Home模塊 │ ├─Conf 模塊配置文件目錄 │ ├─Common 模塊函數公共目錄 │ ├─Controller 模塊控制器目錄 │ ├─Model 模塊模型目錄 │ └─View 模塊視圖文件目錄 ├─Runtime 運行時目錄 │ ├─Cache 模版緩存目錄 │ ├─Data 數據目錄 │ ├─Logs 日志目錄 │ └─Temp 緩存目錄
如果你不是Windows環境下面的話,需要對應用目錄Application
設置可寫權限才能自動生成。
如果不是調試模式的話,會在Runtime目錄下面生成common~runtime.php
文件(應用編譯緩存文件)。
4.目錄安全文件
在自動生成目錄結構的同時,在各個目錄下面我們還看到了index.html文件,這是ThinkPHP自動生成的目錄安全文件。
為了避免某些服務器開啟了目錄瀏覽權限后可以直接在瀏覽器輸入URL地址查看目錄,系統默認開啟了目錄安全文件機制,會在自動生成目錄的時候生成空白的index.html
文件,當然安全文件的名稱可以設置,例如你想給安全文件定義為default.html
可以在入口文件中添加:
define('DIR_SECURE_FILENAME', 'default.html'); define('APP_PATH','./Application/'); require './ThinkPHP/ThinkPHP.php';
如果你的環境足夠安全,不希望生成目錄安全文件,可以在入口文件里面關閉目錄安全文件的生成,例如:
define('BUILD_DIR_SECURE', false);
5.控制器
我們可以在自動生成的Application/Home/Controller目錄下面找到一個IndexController.class.php
文件,這就是默認的Index控制器文件。
控制器類的命名方式是:控制器名(駝峰法,首字母大寫)+Controller
控制器文件的命名方式是:類名+class.php(類文件后綴)
默認的歡迎頁面其實就是訪問的Home模塊下面的Index控制器類的index操作方法我們修改默認的index操作方法如下:
namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index() { echo 'hello,world!'; } }
再次運行應用入口文件,瀏覽器會顯示:hello,world!
。
我們再來看下控制器類,IndexController控制器類的開頭是命名空間定義:
namespace Home\Controller;
這是系統的規范要求,表示當前類是Home模塊下的控制器類,命名空間和實際的控制器文件所在的路徑是一致的,也就是說:
Home\Controller\IndexController
類 對應的控制器文件位于應用目錄下面的
Home/Controller/IndexController.class.php
,如果你改變了當前的模塊名,那么這個控制器類的命名空間也需要隨之修改。
注意:命名空間定義必須寫在所有的PHP代碼之前聲明,否則會出錯
use Think\Controller;
表示引入 Think\Controller 命名空間便于直接使用。所以,
use Think\Controller;
class IndexController extends Controller
等同于使用:
class IndexController extends \Think\Controller
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。