多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > CakePHP > CakePHP 約定

CakePHP 約定

來源:程序員人生   發(fā)布時(shí)間:2014-09-23 08:00:01 閱讀次數(shù):5366次

我們是約定優(yōu)于配置的忠實(shí)信徒。花費(fèi)很少的時(shí)間來學(xué)習(xí) CakePHP 的約定,長(zhǎng)遠(yuǎn)來看,會(huì)節(jié)省你的時(shí)間:通過遵循約定,你能夠獲得免費(fèi)的功能,并且可以從維護(hù)和追蹤配置文件的夢(mèng)魘中解脫。約定還造成了系統(tǒng)開發(fā)的統(tǒng)一性,使其他程序員更易于加入和提供幫助。

CakePHP 約定提煉于多年的 web 開發(fā)經(jīng)驗(yàn)和最佳實(shí)踐。 我們建議你在用 CakePHP 編程時(shí)使用這些約定,但是我們也要說明這些原則很容易覆蓋 ―― 在與遺留的系統(tǒng)一同工作時(shí),有些東西非常有用。

控制器約定

控制器類名是復(fù)數(shù)的、駝峰格式,并且使用 Controller 結(jié)尾。 PeopleController 和 LatestArticlesController 都是約定類名的例子。

為控制器編寫的第一個(gè)方法很可能是 index() 方法。 當(dāng)只指定了控制器,但沒有指定動(dòng)作(action)時(shí),CakePHP 的默認(rèn)行為是執(zhí)行這個(gè)控制器的 index() 方法。 例如:  請(qǐng)求會(huì)調(diào)用ApplesController 的 index() 方法,而調(diào)用 ApplesController 的 view 方法。

在 CakePHP 中,你還可以通過在控制器方法的名稱前添加下劃線來改變其可見性。 如果一個(gè)控制器方法以一個(gè)下劃線開頭,這個(gè)方法將不能通過 web 訪問,但可以在內(nèi)部使用。例如:

1 class NewsController extends AppController { 2 3 public function latest() { 4 $this->_findNewArticles(); 5 } 6 7 protected function _findNewArticles() { 8 // Logic to find latest news articles 9 } 10 }

用戶可以象通常那樣訪問, 一些人嘗試訪問就會(huì)得到一個(gè)錯(cuò)誤, 因?yàn)檫@個(gè)方法是以下劃線開頭的。 你還可以使用 PHP 的可見性關(guān)鍵詞來指定一個(gè)方法是否能通過 url 訪問。非公有的方法將不能被訪問。

關(guān)于控制器命名的思考

正像你看到的那樣,單個(gè)單詞命名的控制器簡(jiǎn)單容易的用小寫的 URL 路徑訪問,ApplesController (在 ‘ApplesController.php’ 定義的)可以通過  訪問。

多個(gè)單詞組成的控制器  被下面的幾種功能相同的方法任意扭曲:

  • /redApples
  • /RedApples
  • /Red_apples
  • /red_apples

都將解析為 RedApples 控制器的 index 方法。但是這個(gè)約定是你的 url 是小寫加下劃線,因此 /red_apples/go_pick 可以正確的訪問 RedApplesController::go_pick 動(dòng)作。

關(guān)于 CakePHP URL 的更多信息和參數(shù)處理,參見 路由配置 。

文件名和類名約定

通常,文件名和類名是相匹配的,也遵守駝峰規(guī)則。因此在 Cake里,如果你的類名是 MyNiftyClass,對(duì)應(yīng)的文件名就是 MyNiftyClass.php。 下面的例子是關(guān)于如何為 CakePHP 應(yīng)用程序中不同類型的類所在的文件命名的經(jīng)典規(guī)則:

  • 控制器類 KissesAndHugsController 存儲(chǔ)在 KissesAndHugsController.php 文件中
  • 組件類 MyHandyComponent 存儲(chǔ)在 MyHandyComponent.php 文件中
  • 模型類 OptionValue 存儲(chǔ)在 OptionValue.php 文件中
  • 行為類 EspeciallyFunkableBehavior 存儲(chǔ)在 EspeciallyFunkableBehavior.php 文件中
  • 視圖類 SuperSimpleView 存儲(chǔ)在 SuperSimpleView.php 文件中
  • 助手類 BestEverHelper 存儲(chǔ)在 BestEverHelper.php 文件中

每個(gè)文件都存放在 app 文件夾的相應(yīng)子文件夾中。

模型和數(shù)據(jù)庫(kù)約定

模型類是單數(shù)、駝峰式的。Person、BigPerson 和 ReallyBigPerson 多寶平臺(tái)都是符合約定的模型命名實(shí)例。

表名與 CakePHP 的模型一致,是單數(shù)的,用下劃線間隔單詞的。表 people、 big_people 和 really_big_people 分別對(duì)應(yīng)上面提及的模型。

可以使用工具庫(kù) 彎曲 檢驗(yàn)單詞的單/復(fù)數(shù)形式。更多信息參見 彎曲 。

兩個(gè)以上單詞構(gòu)成的域名用下劃線間隔,如 first_name 。

hasMany、belongsTo 或者 hasOne 關(guān)系中的外鍵默認(rèn)是用關(guān)系表名帶 _id 來識(shí)別。 所以,如果 Baker hasMany Cake,cake 表將使用 baker_id 外鍵引用 baker 表。對(duì)于多個(gè)單詞構(gòu)成的表,例如 category_types,外鍵就是 category_type_id 。

在模型間使用 hasAndBelongsToMany (HABTM) 關(guān)系連接表,其命名將按照字母順序(apples_zebras 優(yōu)先于 zebras_apples)。

每個(gè) CakePHP 模型中的所有表(包括期望連接的表),僅包含單域主鍵用于唯一標(biāo)識(shí)一個(gè)行。 也許你希望模型表沒有單域主鍵,但 CakePHP 約定要求表加入一個(gè)單域主鍵。如果你想使用表模型,就必須加入一個(gè)單域主鍵。

CakePHP 不支持多域主鍵。如果你想要直接控制你的連接表數(shù)據(jù),使用 query 調(diào)用或者按照默認(rèn)模式加入一個(gè)單域主鍵。例如:

1 CREATE TABLE posts_tags ( 2 id INT(10) NOT NULL AUTO_INCREMENT, 3 post_id INT(10) NOT NULL, 4 tag_id INT(10) NOT NULL, 5 PRIMARY KEY(id));

相對(duì)于使用 auto-increment 鍵作為主鍵,你還可以使用 char(36) 類型。Cake 將在你使用 Model::save 方法保存一條記錄時(shí)使用唯一的 36 個(gè)字節(jié)的 uuid (String::uuid) 。

視圖約定

視圖模板文件是用控制器的函數(shù)命名的,用下劃線間隔多個(gè)單詞。PeopleController 類的 getReady() 函數(shù)的視圖模板是 /app/View/People/get_ready.ctp。

基本的模式是 /app/View/Controller/underscored_function_name.ctp。

如果使用 CakePHP 約定命名你的應(yīng)用程序片斷,你不需要維護(hù)配置就可以獲得需要的功能。多寶這是遵循約定的最終實(shí)例:

  • 數(shù)據(jù)庫(kù)表: “people”
  • 模型類: “Person”,在 /app/Model/Person.php 文件中
  • 控制器類: “PeopleController”,在 /app/Controller/PeopleController.php 文件中
  • 視圖模板,在 /app/View/People/index.ctp 文件中

使用這些約定,Cakephp 知道 請(qǐng)求是要調(diào)用 PeopleController 類的 index() 函數(shù),Person 模型自動(dòng)有效(并且自動(dòng)綁定到數(shù)據(jù)庫(kù)的‘people’表)并渲染一個(gè)文件。這些關(guān)系完全不需要配置,你只需要建立相應(yīng)的文件即可。

現(xiàn)在,你已經(jīng)了解了 CakePHP 的基本原理,多寶你可以試著通過運(yùn)行 博客課程 ,看看它們是怎樣一直工作的。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 最近中文字幕免费完整国语 | 日韩一级片免费看 | 香蕉超级碰碰碰97视频在线观看 | 国产视频一区在线观看 | 久久久久久久岛国免费观看 | 欧美一级日韩一级 | 性欧美17一18sex性高清播放 | 欧美一级日本一级韩国一级 | 亚洲色图另类小说 | 毛片大片 | 最近的中文字幕免费视频1 最近的中文字幕免费完整 最近的中文字幕视频大全高清 | 亚洲国产一区二区三区最新 | 丁香激情五月 | 欧美一区二区三区不卡视频 | 日本一级毛片在线看 | 精品视频一区二区三区在线观看 | 手机看片福利 | 波多野结衣视频在线免费观看 | 免费爱爱网站 | 91精品欧美一区二区综合在线 | 最新的国产成人精品2022 | 久久国产精品1区2区3区网页 | www在线观看免费视频 | 国产精品久久在线观看 | 欧美成人午夜视频在线观看 | 色啪视频 | 国产欧美日韩综合精品二区 | 欧美日韩精品一区二区三区不卡 | 琪琪jav | 一二三四在线观看免费中文在线观看 | 亚洲好视频 | 亚洲国产精品久久卡一 | 一区二区三区四区欧美 | 国产一区二区日韩欧美在线 | 欧美一级做a爰片免费 | 精品国产高清毛片 | 国产精品福利在线观看入口 | 色人阁在线视频 | tube 欧美巨大tvhd | 欧美综合视频在线观看 | 日本无卡码高清免费观看 |