ThinkPHP學習筆記(三)入口

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章