1 控制器及URL模式
1.1 創建控制器
1.1.1 控制器的存儲方式
- 存儲目錄:應用/模塊/Controller/(Application\Home\Controller)
- 存儲文件名稱:控制器名稱(首字母大寫)+Controller+.class.php
1.1.2 控制器代碼創建規則
- 設置命名空間
- 引入TP的控制器基類
- 創建自己的控制器的類
- 創建自己的方法
1.1.3 具體創建控制器實例
- 創建控制器的文件
保存目錄:Application\Home\Controller\TestController.class.php - 聲明命名空間
- 引入TP的控制器的基類
- 創建自定義的控制器的類
- 創建自定義的方法
//1.聲明命名空間
namespace Home\Controller;
//2.引入TP的控制器的基類
use Think\Controller;
//3.創建自定義的控制器,對於控制器的class名稱
//必須要求跟控制器名稱一致,需要繼承TP控制器的基類
//具體TP控制器的基類存儲地址:TPdemo\ThinkPHP\Library\Think\Controller.class.php
class TestController extends Controller{
//4.創建自定義的方法
public function test(){
echo 'in TestController in test action';
}
}
2 TP中的地址解析
2.1 TP中的全地址解析
- 當訪問某一個方法時需要在瀏覽器上輸入的完整地址
- TP默認方式訪問格式
- 域名/入口文件?m=模塊名稱&c=控制器名稱&a=方法名稱&參數名稱=參數值
- 對於上述地址格式按照MVC的原理,mca三個參數其實就是爲了定位到具體的控制器的位置,然後通過實例化對象在調用方法執行代碼
- 訪問測試
- 對於上述輸入的地址起作用的文件Application/Home/Controller目錄下的Test控制器,test方法
2.2 TP的默認訪問
- 因爲對於web項目目前設置的index.php是一個默認訪問的文件
- TP有默認的訪問的模塊、控制器、方法
3 TP的調試模式
- TP的調試模式其實就控制了TP關於配置信息以及函數的緩存功能
- 如果開啓調試模式,每次訪問項目,TP都會加載最新的配置以及函數信息。
- 如果關閉了調試模式,當第一次訪問TP會將配置以及函數信息保存到一個文件中(common~runtime.php),後續訪問時就會每次直接讀取該文件並不再去加載最新的配置信息
- 開發階段,建議開啓調試模式,開啓後能使用最新的配置信息,代碼出錯能看到具體錯誤位置
- 若項目上線,建議關閉,可以減少日誌文件的生成,代碼出錯只會提示有錯誤,並不提示具體錯誤位置
3.1 開啓調試模式
- 必須開啓在載入入口文件前
//1、定義應用的存儲地址
define('APP_PATH','./Application/');
//開啓TP的調試模式
define('APP_DEBUG',TRUE);
//2、載入TP框架入口文件
include './ThinkPHP/ThinkPHP.php';
4 TP的配置項
4.1 TP的配置文件位置
TP配置文件有3個地方
- TP默認的慣例配置文件:ThinkPHP\Conf\convention.php
- 公共模塊的配置文件:Application\Common\Conf\config.php
- 模塊配置文件:Application\Home\Conf\config.php
4.2 配置文件的優先級
- 當同一個配置項在上述的4個配置文件中出現之後,優先級爲:
- 模塊配置文件>公共模塊的配置文件>TP默認的慣例配置文件
注:關於C函數是TP的一個重要函數,可以獲取配置信息的值(傳遞一個參數),也可以臨時的設置某個配置項的值(傳遞2個參數)
再注:實際開發過程中不要直接修改TP默認的配置文件。可以通過使用覆蓋的方式修改(修改模塊或者公共模塊的配置項就可以)
5 TP中創建模塊
- 步驟:
- 在應用中創建後臺的目錄
- 在Admin目錄下創建對應的MVC目錄
- 在後臺模塊中創建控制器和方法
- 訪問後臺中的某個方法
6 TP中的4種URL模式
- 普通模式
默認情況下通過給入口文件m、c、a傳遞三個參數指定具體的模塊、控制器、方法來實現訪問某個方法 - pathinfo模式
該模式訪問地址格式像是訪問某個目錄文件。適合搜索引擎優化
格式:http://localhost/yzf/TPdemo/index.php/Admin/Index/testadmin/name/value
name是參數名,value是參數值 - 重寫模式
重寫模式在pathinfo的基礎上增加一個重寫規則。一般使用在隱藏項目的入口文件。
需要web服務器開啓重寫規則定義具體的重寫規則
拷貝具體重寫規則文件
此時就可以使用重寫模式:
- 兼容模式
爲了確保使用pathinfo模式,但web服務器不支持此模式。
對於兼容模式同樣通過入口文件傳遞參數。
默認情況下傳遞s的參數來指定具體的模塊、控制器、方法
格式:http://localhost/yzf/TPdemo/index.php?s=/Admin/Index/testadmin
URL地址生成
1 查看U函數的使用
- 默認使用U函數生成的連接地址,對應的pathinfo模式。對於指定的URL不全表示不全時。會自動的將當前具體進行補充
U($url,$var,$suffix,$domain)
參數 | 說明 |
---|---|
url | 指定的具體的URL表達式,指定具體的模塊、控制器、方法 |
vars | 具體生成連接地址的參數,支持數組和字符串 |
suffix | 僞靜態後綴 |
domain | 是否顯示域名,默認爲false |
2 使用U函數生成連接地址
public function testu(){
echo U('testu').'<hr>';
echo U('testu','id=2').'<hr>';
echo U('Index/testu','id=2').'<hr>';
echo U('Index/testu#top','id=2').'<hr>';
echo U('Index/testu#[email protected]','id=2').'<hr>';
}
7 頁面跳轉與重定向
7.1 頁面跳轉
- TP控制基類已經封裝好了2個方法(success與error)能夠實現具體的跳轉操作。
- success($message=’ ‘,$jumpUrl=’ ',$ajax=false)
- error($message=’ ‘,$jumpUrl=’ ',$ajax=false)
參數 | 說明 |
---|---|
message | 提示信息 |
jumpUrl | 頁面跳轉地址,建議用TP的U函數來生成具體地址 |
ajax | 默認爲false,是否爲Ajax方式,設置提示頁面的等待時間 |
public function testS(){
$this->success('OK',U('testU'),10);//成功默認1秒鐘跳轉
}
public function testE(){
$this->error('NO',U('testU'));//錯誤默認3秒鐘跳轉
}
7.2 頁面重定向
- redirect($url,$params=array(),\delay=0,$msg=’ ’ )
參數 | 說明 |
---|---|
url | 鏈接地址 |
params | 其他url參數 |
delay | 延時跳轉時間 |
msg | 跳轉提示信息 |
public function testR(){
$this->redirect('testU','id=6',10,'等待10秒鐘實現跳轉');
}
8 空操作與空控制器
8.1 空操作(空方法)
- 當用戶服務某一個控制器下的不存在的方法,TP會執行當前控制器下的_empty方法。此機制就是空操作
public function _empty(){
//處理當前控制器下不存在的方法。
echo 'in empty<br>';
echo ACTION_NAME;//當前用戶執行的方法
}
8.2 空控制器
- 當用戶服務某個不存在的控制器。TP執行空控制器下對應方法。
- 若訪問控制器不存在,則調用空控制器下的_empty方法
- 若訪問空控制器下的方法也不存在,則調用空控制器下的_empty方法
- 創建一個空控制器=
class EmptyController extends Controller{
public function _empty(){
echo 'in EmptyController empty action<br>';
echo CONTROLLER_NAME.'<br>';//當前用戶訪問控制器名稱
echo ACTION_NAME;//當前用戶訪問的方法
}
}