新聞中心
1.入口文件
ThinkPHP采用單一入口模式進行項目部署和訪問,無論完成什么功能,一個項目都有一個統(tǒng)一(但不一定是唯一)的入口。應該說,所有項目都是從入口文件開始的,并且所有的項目的入口文件是類似的,入口文件中主要包括:
2定義框架路徑、項目路徑和項目名稱(可選)
2定義調(diào)試模式和運行模式的相關(guān)常量(可選)
2載入框架入口文件(必須)
首先,在服務器或者本地的Web目錄下面創(chuàng)建一個App目錄,并且把下載的ThinkPHP框架的ThinkPHP目錄拷貝到App目錄下面,然后在App目錄下面創(chuàng)建一個index.php文件,該文件就是我們要創(chuàng)建項目的入口文件。
新版的入口文件更加簡化,默認情況下,只需要在該文件中添加一行代碼即可:
require './ThinkPHP/ThinkPHP.php';
然后,我們打開瀏覽器,輸入地址并運行:
http://localhost/App/
就會看到歡迎頁面:
表示ThinkPHP已經(jīng)成功執(zhí)行,這個時候,系統(tǒng)已經(jīng)在App下面自動生成了項目相關(guān)目錄,并寫入了初始Action。(注意:如果是類Unix或者Linux環(huán)境下測試的話,需要對App目錄設(shè)置可寫權(quán)限,否則無法自動生成目錄結(jié)構(gòu))
入口文件中還可以添加系統(tǒng)或者應用的常量定義,如果我們的項目需要采用其他的模式運行(例如,采用命令行模式運行),那么可以定義MODE_NAME如下:
define('MODE_NAME','cli');
如果沒有在項目入口文件中設(shè)置MODE_NAME常量的話,就表示采用系統(tǒng)的標準模式運行。由于模式擴展可以改變底層的運行機制和行為定義,本手冊中的內(nèi)容如無特別說明,功能描述均表示運行于標準模式下面。
入口文件并不一定都是指index.php 文件,因為我們可以為不同的項目創(chuàng)建不同的入口文件,例如,前臺項目的入口文件為index.php ,后臺項目的入口文件可能是admin.php。
如果你改變了項目目錄(例如把Application
更改為Apps
),只需要在入口文件更改APP_PATH常量定義即可:
define('APP_PATH','./Apps/'); require './ThinkPHP/ThinkPHP.php';
注意:3.2版本開始無需定義APP_NAME常量。
注意:APP_PATH的定義支持相對路徑和絕對路徑,但必須以“/”結(jié)束。
如果你調(diào)整了框架核心目錄的位置或者目錄名,只需要這樣修改:
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路徑定義也必須以“/”結(jié)尾。
給THINK_PATH和APP_PATH定義絕對路徑會提高系統(tǒng)的加載效率。
2.入口文件的其他定義
一般不建議在入口文件中做過多的操作,但可以重新定義一些系統(tǒng)常量,入口文件中支持定義(建議)的一些系統(tǒng)常量包括:
常量 | 描述 |
THINK_PATH | 框架目錄 |
APP_PATH | 應用目錄 |
RUNTIME_PATH | 應用運行時目錄(可寫) |
APP_DEBUG | 應用調(diào)試模式(默認false) |
STORAGE_TYPE | 存儲類型(默認為FILE) |
APP_MODE | 應用模式(默認common) |
注意:所有路徑常量都必須以“/”結(jié)尾
3.自動生成目錄
接下來再看原來空的Application
目錄下面,已經(jīng)自動生成了公共模塊Common
、默認的Home
模塊和Runtime
運行時目錄的目錄結(jié)構(gòu):
Application ├─Common 應用公共模塊 │ ├─Common 應用公共函數(shù)目錄 │ └─Conf 應用公共配置文件目錄 ├─Home 默認生成的Home模塊 │ ├─Conf 模塊配置文件目錄 │ ├─Common 模塊函數(shù)公共目錄 │ ├─Controller 模塊控制器目錄 │ ├─Model 模塊模型目錄 │ └─View 模塊視圖文件目錄 ├─Runtime 運行時目錄 │ ├─Cache 模版緩存目錄 │ ├─Data 數(shù)據(jù)目錄 │ ├─Logs 日志目錄 │ └─Temp 緩存目錄
如果你不是Windows環(huán)境下面的話,需要對應用目錄Application
設(shè)置可寫權(quán)限才能自動生成。
如果不是調(diào)試模式的話,會在Runtime目錄下面生成common~runtime.php
文件(應用編譯緩存文件)。
4.目錄安全文件
在自動生成目錄結(jié)構(gòu)的同時,在各個目錄下面我們還看到了index.html文件,這是ThinkPHP自動生成的目錄安全文件。
為了避免某些服務器開啟了目錄瀏覽權(quán)限后可以直接在瀏覽器輸入URL地址查看目錄,系統(tǒng)默認開啟了目錄安全文件機制,會在自動生成目錄的時候生成空白的index.html
文件,當然安全文件的名稱可以設(shè)置,例如你想給安全文件定義為default.html
可以在入口文件中添加:
define('DIR_SECURE_FILENAME', 'default.html'); define('APP_PATH','./Application/'); require './ThinkPHP/ThinkPHP.php';
如果你的環(huán)境足夠安全,不希望生成目錄安全文件,可以在入口文件里面關(guān)閉目錄安全文件的生成,例如:
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;
這是系統(tǒng)的規(guī)范要求,表示當前類是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
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)站欄目:ThinkPHP學習筆記(三)入口-創(chuàng)新互聯(lián)
當前URL:http://www.dlmjj.cn/article/gshig.html