CakePHP 2.x CookBook 中文版 第三章 入門 之 CakePHP 的結構

CakePHP 的結構

CakePHP 包括控制器、模型和視圖類,還包括一些能使 MVC 編程更快更容易的附加的類和對象。組件、行爲和助手就是這樣的類,它們提供擴展和利用,以使你能在基於 MVC 類的應用程序中快速添加功能。 如今咱們將保持在一個較高水平上,找一找如何使用這些工做的詳細信息。 php

應用程序擴展

每一個控制器、助手和模型都有一個父類,你能夠用它來定義應用程序內的變化。AppController (位置在/app/Controller/AppController.php)、 AppHelper (位置在 /app/View/Helper/AppHelper.php)和 AppModel (位置在 /app/Model/AppModel.php)是放置你要在全部控制器、助手和模型中共享的方法的好地方。 數據庫

儘管它們不是類或者文件,路由仍然在 CakePHP 請求中充當重要角色。路由定義告訴 CakePHP 如何將 URL 映射到控制器動做。默認的行爲假定 URL /controller/action/var1/var2 映射到 Controller::action($var1, $var2),你可使用路由自定義 URL 以及它們在你的應用程序裏如何詮釋。 編程

一些應用程序的特性值得總體打包。插件是完成某些特定目的的模型、控制器和視圖包,它們能跨越多個應用程序。用戶管理系統或者簡單的博客比較適用於 CakePHP 插件。 app

控制器擴展 (「組件」)

組 件是在控制器邏輯中提供幫助的類。若是你有一些邏輯想要在多個控制器(或者應用程序)間共享,組件一般是比較合適的。做爲例子,內核的 EmailComponent 類建造了一個建立和發送郵件的元件。 相對於在單個控制器內編寫一個方法實現這個邏輯,你能打包這個邏輯並使其能夠共享。 佈局

控制器也適合回調,這些回調對你也頗有用,某些狀況下你須要在 CakePHP 的核心操做間插入一些邏輯。有效的回調包括: spa

  • beforeFilter(),在所有控制器動做邏輯前執行
  • beforeRender(),在控制器邏輯以後、視圖渲染以前執行
  • afterFilter(),在全部控制器邏輯(包括視圖渲染)以後執行。 afterRender() 和 afterFilter() 有所不一樣,直到你在控制器動做中手動調用 render(),並在調用後已經包含了一些邏輯。

模型擴展 (「行爲」)

簡單地說,行爲在模型間添加公用的功能。例如,你在樹形結構中存儲用戶數據,你能夠指定你的 User 模型的行爲像一個樹,而且在你的樹結構中提供刪除、添加和移動節點的功能。 插件

模 型老是支持從其它類調用數據源。數據源是一個抽象的概念,它能使模型以一致的方式操控不一樣類型的數據。CakePHP 應用程序的主要數據來源經常是數據庫,你可能會寫一個容許你的模型提供 RSS feeds、CSV 文件、LDAP 分支或者 iCal 事件的附加的數據源。數據源容許你在不一樣的來源中整合數據:相對於 SQL 鏈接的限制,數據源容許你讓你的 LDAP 模型整合許多 iCal 事件。 對象

和控制器同樣,模型也包含回調: 事件

  • beforeFind()
  • afterFind()
  • beforeValidate()
  • beforeSave()
  • afterSave()
  • beforeDelete()
  • afterDelete()

這些方法的名字足以讓你知道它們是作什麼的。你能在 模型 一章找到更詳細的信息。 路由

視圖擴展 (「助手」)

助手是在視圖邏輯中提供幫助的類。與組件之於控制器相似,助手容許視覺邏輯被訪問並在多個視圖間共享。核心助手中之一,JsHelper,使得在視圖中使用 Ajax 請求更容易,而且提供 jQuery(默認)、Prototype 和 Mootools 支持。

更多的應用程序使用視圖代碼的片段提供複用。CakePHP 使佈局和元素中的視圖代碼更易於複用。默認的,每一個視圖由控制器放置在一個佈局中渲染。當很小的內容碎塊要在多個視圖內自用時使用元素。

相關文章
相關標籤/搜索