天天看點

Cakephp 3 (一) 慣例優先原則(convention over configuration)

在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工具。

繼續閱讀