ThinkPHP框架完全解析四

第四步:Think類的實現之URL模式

要實現像thinkphp類似URL訪問模式。

比如訪問:http://127.0.0.1/index.php/Home/Index/index

通過使用:$_SERVER['PATH_INFO']便能得到:/Home/Index/index

在thinkphp中,Home表示模塊,Index表示控制器,index表示操作。

而實際上,控制器是某個類的名字,而操作,其實就是類中的操作。

比如我們訪問上面那個網址,那麼就可以得到,是Home目錄下的IndexController類中的index函數。

所以,我們可以這樣做:

$test = new IndexController;

$test->index();

在這裏,不需要將IndexControll.class.php這個文件給包含進來,因爲autoload這個函數會將我們的IndexController.class.php自動加載進來。

首先,在Library/think中創建一個名爲app.class.php的文件:

代碼如下:


然後未來測試,我們添加一個控制器文件:



運行:127.0.0.1/tp_an/便可瀏覽到如下效果:


而如果是:127.0.0.1/tp_an/index.php/Home/Index/test:


好了,現在我們已經基本實現了thinkphp的url模式了,最後再來看下:

比如輸入:127.0.0.1/tp_an/index.php/Home/Index/test.

那麼,實例化類應該是:

$Controller=newHome\Controller\IndexController;

$Controller->$ACT();

這裏,由於IndexContoller.class.php這個文件沒有被加載,因此無法實例化該類,所以autoload會被自動調用,然後將該文件給加載進來。

但是在IndexController.class.php中,可以看到我們的類名是IndexController,而不是Home\Controller\IndexController,那麼我們該怎麼讓系統實例化我們的類呢?

其實,我們可以看到IndexController.class.php文件的第一行是;

Namespace Home\Controller;

通過這個,我們不僅可以定位到我們的類文件的位置,而且還能正常地實例化我們的類。

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