在Cakephp 3 cookbook中提到,Cakephp 是慣例優先原則的忠實實踐者。Cakephp中,提供一套完整的約定程式設計體系。慣例優先原則是一個重要的設計模式,目的是統一項目過程中命名不一緻的問題,有效加快版本疊代更新速度。
Cakephp 3中 MVC三個子產品的命名規則有具體介紹。
1) 控制器命名(Controller Convention)
控制器類(Controller class)是複數、駱駝拼寫法(CamelCased),以Controller結尾。例如訂單(Order)控制器,寫為 OrdersController。
在控制器中,可以自定義多個公開的方法,如order中有個public function view(),url對應為/orders/view。
如果遇到多單詞組合的控制器類(如RedApplesController),其對應的url有四種等價形式
- /redApples
- /RedApples
- /Red_apples
- /red_apples
注:cakephp有一整套完善的routing改寫機制。可以把上述url改寫成dashedroute,例如 /red-apples/go-pick, 對應為RedApplesController::goPick()
2) 檔案和類名命名 (Model and Database Conventions)
對于控制器(Controller),如RedApplesController,對應檔案叫做RedApplesController.php
對于元件(Component),如MyHandyComponent,對應檔案叫做MyHandyComponent.php
對于資料表處理類(Table),如AppleTable.php, 對應檔案叫做AppleTable.php
3) 模式和資料庫命名規則
Table類是複數、駱駝拼寫法(CamelCased),如People,BigPeople,ReallyBigPeople等。相對應的,在資料庫中的命名為:複數,并帶有下劃線。如people, big_people, really_big_people.
在資料表中,外鍵的命名(Foreign key), 如面包師有很多蛋糕,則在蛋糕表中,有外鍵baker_id.從例子看出,外鍵命名為單數_id
4) 視圖命名(View Convention)
在控制器中可以建立function,如PeopleController::getReady(),在檔案夾中,會顯示為people/get_ready.ctp
用一個例子來總結Cakephp的命名規則:
資料庫表格:people - 複數,小寫
控制器:PeopleController - 複數,駱駝
視圖:PeopleController:: index()
關于Cakephp慣例優先原則看似繁瑣。但在實際運用中,Cakephp如同RoR,Laveral一樣提供了command工具,進行Fast development。 在下一個章節,我會具體談到,如何使用command工具。