模塊與操作是 ThinkPHP 中的核心部分,所有的核心邏輯都在這里實(shí)現(xiàn)!ThinkPHP 模塊進(jìn)入 Myapp\\Lib\\Action 目錄,里面有個(gè) IndexAction.class.php 文件。該文件為剛才我們運(yùn)行入口文件 index.php 時(shí)系統(tǒng)自動(dòng)生成的。打開該文件,其內(nèi)容大致如下(方法內(nèi)具體代碼省略): <?php // 本類由系統(tǒng)自動(dòng)生成,僅供測試用途 class IndexAction extends Action{ public function index(){ 具體代碼略…… } } ?> 該文件已經(jīng)演示了一個(gè)基于 ThinkPHP 的實(shí)際應(yīng)用。 ThinkPHP 控制器像上面這個(gè) IndexAction.class.php 這樣的特殊文件,稱為控制器。該類文件通常位于 LibAction 下面,命名方式必須以“模塊名+Action.class.php”樣式來命名,如 IndexAction.class.php ,詳細(xì)可參考《ThinkPHP 命名規(guī)范》一節(jié)。 ThinkPHP 模塊一個(gè)控制器對應(yīng)一個(gè)模塊。如 IndexAction.class.php 就對應(yīng) Index 模塊,相應(yīng)的類名為 IndexAction ,如上面的例子: class IndexAction extends Action ThinkPHP 操作一個(gè)模塊(類)里有多個(gè)方法,稱之為“操作”。如上面例子的 index 方法: public function index() 我們更改上面的 IndexAction.class.php 為: <?php class IndexAction extends Action{ public function index(){ header("Content-Type:text/html; charset=utf-8"); echo "第一個(gè)例子測試!"; } } ?> 再次訪問網(wǎng)站首頁(入口文件): http://localhost/index.php 瀏覽器顯示內(nèi)容為在 index 操作中輸出的: 第一個(gè)例子測試! 而不是原來的默認(rèn)歡迎界面。 增加操作要增加一個(gè)操作,只需在模塊里增加一個(gè)定義為 public 方法即可。在 IndexAction.class.php 里面新增加一個(gè) test 操作: public function test(){ header("Content-Type:text/html; charset=utf-8"); echo "這是 test 操作"; } 要訪問該操作,瀏覽器地址為: http://localhost/index.php/Index/test 瀏覽器輸出如下: 這是 test 操作 可見要訪問其他方法,需要在入口文件 URL 地址后面加上“模塊/操作”才可以。關(guān)于通過入口文件 URL 地址訪問模塊方法的具體信息,請參看《ThinkPHP URL 訪問模式》一節(jié)。 同模塊調(diào)用其他操作在同一個(gè)模塊中,一個(gè)操作常常要調(diào)用其他操作(一般都是私有方法,通常都是獨(dú)立的能被重復(fù)使用的功能模塊),由于是在一個(gè)模塊里(一個(gè)類里),因此使用 $this 可以很方便的調(diào)用其他操作: <?php class IndexAction extends Action{ public function index(){ header("Content-Type:text/html; charset=utf-8"); echo "第一個(gè)例子測試!"; $this->test(); } } ?> 上面是將前面的 index 操作加上調(diào)用 test 操作的例子,運(yùn)行 index 操作輸出如下: 第一個(gè)例子測試!這是 test 操作 可見不僅 index 里面的 echo 語句執(zhí)行了,test 操作里面的 echo 也執(zhí)行了。這部分是屬于 PHP 類與對象的知識,更多請參見PHP基礎(chǔ)教程之《PHP 類與對象》一節(jié)的內(nèi)容。 跨模塊調(diào)用操作的例子,請參見本節(jié)《ThinkPHP 跨模塊調(diào)用操作方法》一文的內(nèi)容。 小結(jié)
|
|