首頁  >  文章  >  後端開發  >  Yii框架官方係列指南系列11-基礎知識:模組

Yii框架官方係列指南系列11-基礎知識:模組

黄舟
黄舟原創
2017-02-11 09:44:381306瀏覽



注意: 版本 1.0.3 起支援模組。

模組是一個獨立的軟體單元,它包含 模型, 視圖, 控制器 和其他支援的組件。 在許多方面上,模組看起來像一個 應用。主要的差別就是模組不能單獨部署,它必須存在於一個應用程式裡。 使用者可以像他們存取普通應用的控制器一樣存取模組中的控制器。

模組在某些場景裡很有用。對於大型應用來說,我們可能需要把它分成幾個模組,每個模組可以單獨維護和部署。一些通用的功能,例如使用者管理, 評論管理,可以以模組的形式開發,這樣他們就可以輕鬆地在以後的專案中被重複使用。

1. 建立模組

模組組織在一個目錄中,目錄的名字即模組的唯一 ID 。 模組目錄的結構跟 應用基礎目錄 很相似。下面列出了一個fourm 的模組的典型的目錄結構:

forum/
   ForumModule.php            模块类文件
   components/                包含可复用的用户组件
      views/                  包含小物件的视图文件
   controllers/               包含控制器类文件
      DefaultController.php   默认的控制器类文件
   extensions/                包含第三方扩展
   models/                    包含模块类文件
   views/                     包含控制器视图和布局文件
      layouts/                包含布局文件
      default/                包含 DefaultController 的视图文件
         index.php            首页视图文件

模組必須有一個繼承自 CWebModule 的模組類別。類別的名字透過表達式 ucfirst($id).'Module' 確定, 其中的 $id代表模組的 ID (或者說模組的目錄名字)。 模組類別是儲存模組代碼間可共享資訊的中心位置。例如,我們可以使用CWebModule::params 儲存模組參數,使用 CWebModule::components 分享模組級的 應用元件 .

提示: 我們可以使用Gii中的模組建立器來建立新模組的基本骨架。

2. 使用模組

要使用模組,先將模組目錄放在 應用基礎目錄 的 modules 中。 然後在應用的 modules 屬性中聲明模組 ID 。例如,為了使用上面的 forum 模組, 我們可以使用以下 應用設定:



return array(
    ......
    'modules'=>array('forum',...),
    ......
);


模組也可以在設定時帶有初始屬性值。做法和配置 應用元件 很類似。 例如, forum 模組可以在其模組類別中有一個名為postPerPage 的屬性,它可以在 應用程式設定 中設定如下:



控制器的 module 屬性存取。在模組實例中,我們可以存取在模組級中共享的資訊。 例如,為存取上面的 

postPerPage

 訊息,我們可使用以下表達式:

return array(
    ......
    'modules'=>array(
        'forum'=>array(
            'postPerPage'=>20,
        ),
    ),
    ......
);


模組中的控制器可透過行動裝置存取。 例如,假設上面的 

forum

 模組有一個名為 
PostController

 的控制器,我們可以透過 路由 

forum/post/create 來存取此控制器中的 create 動作。 此路由對應的 URL 即 http://www.php.cn/.提示: 如果一個控制器位於 controllers 目錄的子目錄中,我們仍然可以使用上述 路由 格式。 例如,假設

PostController
 位於 

forum/controllers/admin 中,我們可以透過 forum/admin/post/create存取 create 動作。 3. 嵌套的模組模組可以無限級嵌套。這就是說,一個模組可以包含另一個模組,而這另一個模組又可以包含其他模組。我們稱前者為父模組 ,後者為 

子模組
. 子模組必須定義在其父模組的 modules 屬性中,就像我們前面在應用程式設定中定義模組一樣。

要存取子模組中的控制器動作,我們應使用路由 parentModuleID/childModuleID/controllerID/actionID。

以上就是Yii框架官方系列指南系列11——基礎知識:模組的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn