天天看點

ThinkPHP一些預設規則

1. 每個應用子產品都有獨立的配置檔案(位于子產品目錄的Conf/config.php),定義格式預設采用PHP數組定義

2. 為所有子產品定義公共的配置檔案,可以在公共子產品中定義(通常位于 Common/Conf/config.php)

3. 每個控制器定義一個控制器類; 控制器名+Controller.class.php (子產品名采用駝峰法并且首字母大寫);類名和檔案名一緻

4. 标準的URL通路格式:http://serverName/index.php/子產品/控制器/操作

5. ThinkPHP中的視圖主要就是指模闆檔案和模闆引擎

6. 模闆檔案都在子產品的View目錄下面,并且是以子產品下面的控制器名為目錄,然後是每個控制器的具體操作 作為模闆檔案

7. 預設的找模版規則:View/控制器名/操作名.html;(操作和模版對應關系)

要輸出視圖,必須在控制器方法中進行模闆渲染輸出操作,模闆輸出最常用的是使用display方法,$this->display();表示系統會按照預設規則自動定位模闆檔案

• 如果目前沒有啟用模闆主題則定位到:目前子產品/預設視圖目錄/目前控制器/目前操作.html ;

• 如果有啟用模闆主題則定位到:目前子產品/預設視圖目錄/目前主題/目前控制器/目前操作.html;

• 如果有更改TMPL_FILE_DEPR設定(假設 'TMPL_FILE_DEPR'=>'_')的話,則上面的自動定位規則變成: 目前子產品/預設視圖目錄/目前控制器_目前操作.html 和 目前子產品/預設視圖目錄/目前主題/目前控制器_目前操作.html。

8. 如果我們需要讀取資料庫中的資料,就需要在子產品配置檔案中添加資料庫連接配接資訊。

9. 模型名+Model.class.php (模型名的定義采用駝峰法并且首字母大寫)

10. 按照系統的規範來命名模型類的話,大多數情況下是可以自動對應資料表

模型類名字 === 除去表字首的資料表名稱,采用駝峰法命名,并且首字母大寫,然後加上Model

11. ThinkPHP在沒有找到對應操作方法的情況下,會檢查是否存在對應的模闆檔案,由于我們有對應的add模闆檔案,是以控制器就直接渲染該模闆檔案輸出了。

12. 使用D函數執行個體化模型類,一般需要對應一個模型類

13. 模版表達式:子產品@主題/控制器/操作  預設都是在view檔案夾下

14. 在模闆檔案中輸出變量,内置模闆的話,就可以這樣輸出: {$name}

使用PHP本身作為模闆引擎的話 ,就可以直接在模闆檔案裡面輸出了: <?php echo $name.'['.$email.''.$phone.']'; ?>

15. 模版中使用函數:需要采用 {:U('參數1', '參數2'…)} 的方式

16. Common子產品和普通子產品一樣,可以添加控制器、模型和視圖,并且支援多層,但不能直接通路,隻能繼承,其中模型層可以作為公用模型,在D方法執行個體化中調用。D函數執行個體化的時候 才能自動判斷 目前子產品模型類不存在的時候 執行個體化公共子產品中的同名模型,自己執行個體化肯定做不到這點了。

回複 @thinkphp : 你的意思是common子產品裡的控制器、模型和視圖有兩個作用:1目前子產品裡的php檔案不存在的時候,自動去找公共子產品中的同名檔案 2.其他子產品裡的控制器、模型和視圖 繼承公共子產品裡的控制器、模型和視圖, 總結的對嗎?

如果其他子產品直接使用common子產品,需要加子產品名common嗎?

thinkphp 回複:

Common子產品是一個特殊的子產品,是應用的公共子產品,通路所有的子產品之前都會首先加載公共子產品下面的配置檔案(Conf/config.php)和公共函數檔案(Common/function.php)。但Common子產品本身不能通過URL直接通路,公共子產品的其他檔案則可以被其他子產品繼承或者調用