日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > CakePHP > CakePHP 2.x CookBook 中文版 第三章 入門 之 約定

CakePHP 2.x CookBook 中文版 第三章 入門 之 約定

來源:程序員人生   發布時間:2014-09-19 10:48:15 閱讀次數:4547次

CakePHP 約定

我們是約定優于配置的忠實信徒。花費很少的時間來學習 CakePHP 的約定,長遠來看,會節省你的時間:通過遵循約定,你能夠獲得免費的功能,并且可以從維護和追蹤配置文件的夢魘中解脫。約定還造成了系統開發的統一性,使其他程序員更易于加入和提供幫助。

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

控制器約定

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

為控制器編寫的第一個方法很可能是 index() 方法。 當只指定了控制器,但沒有指定動作(action)時,CakePHP 的默認行為是執行這個控制器的 index() 方法。 例如: http://www.example.com/apples/ 請求會調用ApplesController 的 index() 方法,而 http://www.example.com/apples/view/ 會調用 ApplesController 的 view 方法。

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

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 }

用戶可以象通常那樣訪問 http://www.example.com/news/latest/ , 一些人嘗試訪問http://www.example.com/news/_findNewArticles/ 就會得到一個錯誤, 因為這個方法是以下劃線開頭的。 你還可以使用 PHP 的可見性關鍵詞來指定一個方法是否能通過 url 訪問。非公有的方法將不能被訪問。

關于控制器命名的思考

正像你看到的那樣,單個單詞命名的控制器簡單容易的用小寫的 URL 路徑訪問,ApplesController (在 ‘ApplesController.php’ 定義的)可以通過 http://example.com/apples 訪問。

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

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

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

關于 CakePHP URL 的更多信息和參數處理,參見 路由配置 。

文件名和類名約定

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

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

每個文件都存放在 app 文件夾的相應子文件夾中。

模型和數據庫約定

模型類是單數、駝峰式的。Person、BigPerson 和 ReallyBigPerson 都是符合約定的模型命名實例。

表名與 CakePHP 的模型一致,是單數的,用下劃線間隔單詞的。表 people、 big_people 和 really_big_people 分別對應上面提及的模型。

可以使用工具庫 彎曲 檢驗單詞的單/復數形式。更多信息參見 彎曲 。

兩個以上單詞構成的域名用下劃線間隔,如 first_name 。

hasMany、belongsTo 或者 hasOne 關系中的外鍵默認是用關系表名帶 _id 來識別。 所以,如果 Baker hasMany Cake,cake 表將使用 baker_id 外鍵引用 baker 表。對于多個單詞構成的表,例如 category_types,外鍵就是 category_type_id 。

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

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

CakePHP 不支持多域主鍵。如果你想要直接控制你的連接表數據,使用 query 調用或者按照默認模式加入一個單域主鍵。例如:

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));

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

視圖約定

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

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

如果使用 CakePHP 約定命名你的應用程序片斷,你不需要維護配置就可以獲得需要的功能。這是遵循約定的最終實例:

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

使用這些約定,Cakephp 知道 http://example.com/people/ 請求是要調用 PeopleController 類的 index() 函數,Person 模型自動有效(并且自動綁定到數據庫的‘people’表)并渲染一個文件。這些關系完全不需要配置,你只需要建立相應的文件即可。

現在,你已經了解了 CakePHP 的基本原理,你可以試著通過運行 博客課程 ,看看它們是怎樣一直工作的。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 人人澡人人爽 | 日韩欧美一区二区三区 | 国产成人在线一区二区 | 久久久com | 欧美在线视频免费 | 国产一级片在线播放 | 欧美日韩一区二区三区视频 | 亚洲免费电影一区 | 日本精品久久久 | 成人免费福利视频 | 精品成人国产 | 亚洲一级毛片 | 国产高清视频 | 日韩午夜精品 | 亚洲精品综合精品自拍 | 国产在线视频网 | 久久99精品久久 | 国产国语av| 国产九九热 | 精品综合久久 | 日产一二三四五六区传媒 | 欧美aaaaaa午夜精品 | 综合五月| 久久久精品网 | 精品久久久久一区二区国产 | 久久亚洲综合国产精品99麻豆精品福利 | 国产一区二区三区影视 | 久久6视频 | 草久久久 | 丁香婷婷综合激情五月色 | 国产日韩欧美在线观看 | 成人av在线电影 | 中文字幕一区在线观看视频 | 欧日韩一区二区三区 | 日韩欧美www | 久久精品无码一区二区三区 | 国产高清不卡av | 久久久久伊人 | 亚洲视频在线观看网址 | 欧美一级在线视频 | 亚洲午夜精品视频 |