2010年2月17日 星期三

CakePHP教學 on OSX(七)Blog練習:(1)命名習慣

CakePHP沿襲RoR的觀念,使用“慣例優於組態(Convention over Configuration)”的“設計典範(Design Paradigm)”。因此不論是程式檔案與功能函式的名稱、放置程式檔案的目錄名稱與路徑、或是資料庫表格的名稱與欄位的設計,都有一定的命名慣例。

依循慣例設計程式的好處,一方面可以讓CakePHP這種程式框架可以自動地產生相關的程式樣板以加速程式的開發的速度;另一方面也方便開發者閱讀與理解程式與函式之間的關聯性,方便程式的管理與維護。唯一的缺點,就是要注意英文名詞的單複數問題,避免使用程式框架已經使用到的關鍵字詞,同時要不小心迷失在一堆複雜的檔案路徑之中。

“類大檔小”與“模單表複”慣例
CakePHP是採用物件導向的程式編寫範式,因此每個程式檔案就是一個“類別(class)”。程式語法中,類別的名稱用“駝峰式命名法”,每個詞的第一個字母大寫,多個詞之間不留空白;但是程式檔案名稱則是全部小寫,多個詞之間要用“_”符號分開。

因為英文名詞有單複數的分別,所以基本上CakePHP命名方式也有單複之分。除了“模型(model)”類別通常是以(一個詞或多個詞組合的)單數名詞命名之外,“控制器(controller)”、“視圖(view)”程式,以及儲存模型的“資料表(table)”等等,都是以“複數名詞”命名。除非是“單複數同形”的名詞,不要忘了開加上“s”、“es”或“ies”的地方要正確(這是考托福嗎!?),以免整個CakePHP程式框架因為命名問題運作出錯。

因此按照CakePHP的命名方式,一個“User”類別有關的所有程式的命名與路徑如下:
模型:程式根目錄/models/user.php
class User extends AppModel {
    var $name = 'User';
    ....
}

控制器:程式根目錄/controllers/users_controller.php
class UsersController extends AppController {
    var $name = 'Users';
    ....
    function index() {
        ....
    }
}

視圖:程式根目錄/views/users/動作函式名稱.ctp
視圖檔案可以針對控制器中個別的動作函數指定,例如控制器UsersController之中的index函數的視圖檔案,應該是:程式根目錄/views/users/index.ctp

還好,大部份的時候我們可以用CakePHP提供的bake程式把這些檔案範本製作出來,不用自己傷腦筋命名問題。不過熟記這些命名與路徑慣例,對於修改與維護程式功能就很有用。不過跟RoR架構不同,CakePHP要先把資料庫架構好,才能用bake指令自動地“烤”出應用程式。
上一篇下一篇:資料庫設計

1 則留言:

  1. 抱歉,想請問一下你的資料庫設計這篇是否還存在嘛?

    因為你的說明很詳細,目前我正在努力學習中。

    非常感謝你的指導教學。

    回覆刪除