CakePHP的命名規範至關重要,遵循CakePHP框架的命名規範,能夠得到框架內置的各類功能。CakePHP2發佈以後,命名規範這塊與老的框架沒有任何區別,本文同時適用於CakePHP 2.x和CakePHP 1.x框架。php
總得來講,文件名使用下劃線,類名用駝峯命名法。好比,MyNiftyClass類對應的文件名就是my_nifty_class.php。下面是不一樣類型的類和其相對應的文件命名方式的一些例子,數據庫
控制器類KissesAndHugsController,能夠在kisses_and_hugs_controller.php文件中找到(注意文件名中的_controller)。瀏覽器
組件類MyHandyComponent,能夠在my_handy.php文件中找到。app
模型類OptionValue能夠在option_value.php文件中找到。框架
行爲類EspeciallyFunkableBehavior,能夠在especially_funkable.php文件中找到。ui
視圖類SuperSimpleView,能夠在super_simple.php文件中找到。url
助手類BestEverHelper,能夠在best_ever.php文件中找到。spa
上述的每一個文件都存放在相應的文件夾中。ci
總結:類名中,除了模型類,都須要在類命中標明該類的身份,好比Controller,Component,Behavior等。文件名中,只有控制器類須要標明身份,即在文件末尾加上_controller.字符串
模型類名使用單數駝峯命名法,Person,BigPerson以及ReallyBigPerson都是約定的模型命名。
表名使用複數和下劃線命名。與上述模型相對應的表名分別是people,big_people和really_big_people。
能夠使用「inflector」庫檢查單詞的單複數形式。
包含兩個或更多單詞的字段名,如下劃線命名,好比first_name。
在hasMany,belongsTo,hasOne關係中,外鍵默認由相關表加_id表示。舉例來講,一個Baker和Cake之間的關係是一對 多,那麼在cakes表中會存在一個baker_id外鍵來關聯bakers表(注意,這裏的關聯外鍵是單數)。對於多個單詞組成的表名,像 category_types,外鍵會事category_type_id。即表名雖然是複數,可是在其它表中存在的該表外鍵,要以單數形式命名。
多對多關係中通常會存在一個連接表,該連接表字段的一個命名方式是須要以單詞首字母字母順序排列,例如apples和zebras兩張表,在連接表中,他們應該是apples_zebras,而非zebras_apples。
全部CakePHP模型交互的表,都須要惟一的主鍵來標示每一行數據。CakePHP不支持組合主鍵,若是你想直接操做連接表數據,能夠直接使用SQL語句。
除了使用遞增字段做爲主鍵以外,還能夠使用char(36)做爲主鍵。在使用odel::save方法保存記錄時,CakePHP會自動識別該字段,並使用(String::uuid)生成一個36位的字符串做爲惟一主鍵。
控制器類名使用複數駝峯命名法,而且以Controller結尾。PeopleController以及LatestArticlesControlle都是合法的控制器命名方式。
控制器中的首個方法應該是index()方法,當請求只指定了控制器,沒有動做方法時,CakePHP默認執行該控制器的index()方法。
經過在控制器方法名以前加一個下劃線,能夠更改該控制器方法的可見範圍。若是控制器方法前有一個下劃線,這個方法就只能在內部使用,而沒法經過瀏覽器訪問。
單個單詞的控制器可以很是容易的被映射到小寫的URL地址上。例如,ApplesController能夠經過http://example.com/apples訪問。
多詞控制器的訪問地址,能夠是該控制器名的任何曲折形式。
都能指向到RedApples控制器的index方法。不過,命名約定規定,url地址應該是小寫單詞加下劃線組成。所以,/red_apples/go_pick是請求RedApplesController::go_pick方法的正確形式。
視圖模板文件經過調用他們的控制器方法命名,如下劃線分隔多詞。PeopleController類中得getReady()方法,會自動關聯/app/views/people/get_ready.ctp視圖模板。
命名方式就是/app/views/<controller name>/<underscored_function_name>.ctp。
數據庫表名:people
模型類:person,路徑app/models/person.php
控制器類:PeopleController,路徑app/contollers/people_controller.php
視圖類:app/views/people/index.ctp
使用這種命名約定,CakePHP可以將http://example.com/people/映射