Yaf多模組開發

Mr_Jing發表於2015-03-16

需知

因為Yaf的預設Module是Index,瀏覽器訪問http://127.0.0.1/passport/login,其實就是請求了Index模組下的Passport控制器下的loginAction方法

至於原因,如下:

預設情況下,我們的路由器是Yaf_Router, 而預設使用的路由協議是Yaf_Route_Static

預設的路由協議Yaf_Route_Static, 就是分析請求中的request_uri, 在去除掉base_uri以後, 獲取到真正的負載路由資訊的request_uri片段, 具體的策略是, 根據"/"對request_uri分段, 依次得到Module,Controller,Action, 在得到Module以後, 還需要根據Yaf_Application::$modules來判斷Module是否是合法的Module, 如果不是, 則認為Module並沒有體現在request_uri中, 而把原Module當做Controller, 原Controller當做Action。

在目錄application\controllers\下定義的控制器,都屬於Index模組下的。

安裝

Yaf的安裝

使用程式碼生成工具建立新Yaf專案

新建模組

在目錄application\下新建目錄modules。除了預設模組,其他模組都放在application\modules\下。

新建一個模組,模組名自定義。假設我的新模組叫Api吧。
建立目錄application\modules\Api

修改專案配置檔案conf\application.ini

ini; 多個模組,使用逗號分隔
application.modules = "Index,Api"

在新模組下建立控制器

在目錄application\modules\Api\下建立控制器目錄controllers,用於存放模組Api下的控制器檔案。

新建檔案application\modules\Api\controllers\Passport.php

php<?php

class PassportController extends Yaf_Controller_Abstract {


    public function loginAction() {
        echo '我是登入介面';
        return false;
    }

}

效果

瀏覽器訪問:http://127.0.0.1/api/passport/login

輸出:我是登入介面

相關文章