CakePHP 概述
歡迎來到 CakePHP Cookbook,這是一本使用 CakePHP web 應用程序框架開發一塊蛋糕的的手冊!
本手冊假定你瞭解 PHP,並且有面向對象編程(OOP)方面的基礎知識。 框架中的不同功能使用了不同的技術 —— 類似於 SQL、JavaScript 和 XML ——本手冊不準備講解這些技術,僅僅說明其在相關上下文中如何使用。
- 什麼是 CakePHP?它如何使用?
- 理解 模型 - 視圖 - 控制器
- 從哪兒獲取幫助
什麼是 CakePHP?它如何使用?
CakePHP 是一個 免費的, 開源的, 快速發展的 PHP 框架 。 它是創建 web 應用的基本程序結構。我們的主要目標是讓你能夠在一個結構上快速開始工作 —— 不需要太複雜。
CakePHP 從單調的 web 開發中解脫出來。我們爲你提供開始編碼的全套工作,包括你的應用程序的具體邏輯。 代替每次重複發明輪子的是坐下來開始一個新項目,檢出 CakePHP 的代碼副本然後鼓起勇氣開始編程。
CakePHP 擁有活躍的CakePHP has an active 開發團隊 和社區,給項目帶來巨大的價值。除了讓你擺脫重複發明輪子,使用 CakePHP 還意味着你的應用程序的核心是易於測試並不斷提高的。
以下是一些當你使用 CakePHP 時能享受到的特性的快速列表:
- 活躍、友好的 社區
- 富有彈性的 許可
- 兼容 PHP 5.2.8 及更高版本。
- 整合的數據庫 CRUD 操作。
- 應用程序 腳手架.
- 代碼生成。
- MVC 設計風格。
- 清晰的請求頒發、自定義的 URL 和路由。
- 內置的 校驗.
- 快速靈活的 模板 (PHP 語法,帶有助手)。
- Ajax、JavaScript、HTML 表單等等方面的視圖助手。
- Email、Cookie、安全、Session和請求處理等的組件。
- 靈活的 ACL.
- 數據清除。
- 靈活的 緩存.
- 本地化。
- 幾乎不需要對 Apache 進行配置就可以在任意站點目錄內工作。
理解 模型 - 視圖 - 控制器
CakePHP 遵循 MVC 軟件設計模式。 使用 MVC 編程將應用程序分隔爲三部分:
模型層
模型層是在你的應用程序中實現商業邏輯的那一部分。 它負責檢索數據並將其轉換成對你的應用程序有意義的概念。包括加工、校驗、連接或者與數據處理相關的其他任務。
乍一看,模型對象可以被當成與你的應用程序所使用的數據交互的第一層。 但總體來說,它們是貫穿了你的應用程序實現的主體概念。
在社會網絡中,模型層關注的任務包括保存用戶數據、保存朋友關係、存儲和檢索用戶照片、爲尋找新的朋友提供建議等。此時,模型對象可以被當成 “Friend”、”User”、”Comment” 或者 “Photo”.
視圖層
視圖渲染可視化數據。它被從模型中分離出來,負責使用它可用的信息,產生應用程序中需要的可視化接口。
例如:當模型層返回一個數據集,視圖就用它渲染一個包含這些數據集的 HTML 頁面。或者爲其他需要提供一個 XML 格式的結果。
視圖層不僅是數據的 HTML 或者文本表示,它還能用於傳送你需要的各種格式,比如視頻、音樂、文檔或者你能想到的其他所有格式。
控制器層
控制器層處理來自用戶的請求。它藉助模型和視圖層渲染一個迴應。
控制器可以被看作一個照看完成一個任務的全部所需資源並委託給正確人員的管理員。它等待客戶端的請求,根據認證或授權規則檢驗其有效性,將數據委託給模型進行讀取或處理,選擇客戶端所期望的數據的正確表現形式,並最終將此次渲染委託給視圖層。
CakePHP 請求生命週期
插圖: 1: CakePHP中的標準 MVC 請求
標準的 CakePHP 請求生命週期起始於一個用戶請求應用程序中的一個頁或者資源。分發器先計算這個請求,並選擇一個正確的控制器對象處理它。
一旦請求到達控制器,它將請求傳遞給模型層計算所有的數據,根據需要進行讀取或保存操作。 在此次傳遞結束後,控制器將來自模型的數據繼續委託給正確的視圖對象,生成輸出結果。
最後,輸出一生成,它就將其渲染給用戶。
應用程序中的每個請求幾乎都遵循這個基本模式。隨後我們將向 CakePHP 加入一些具體的詳細內容,在我們繼續進行時,記住這一點。
好處
爲什麼要使用 MVC?因爲它是一種經過實踐證明的有效的軟件設計模式,可以使應用程序變成爲可維護的、模塊化的、快速的開發包。 將應用程序任務分解爲分隔模型、視圖、控制器任務,使得創建應用程序更容易。 新特性更易於添加,修改舊特性也很容易。模塊化和分離設計還允許程序員和設計師同時工作,能夠快速開發原型。 分離還允許程序員在改變程序的一個部分時不影響其他部分。
如果你從沒有用這種方法創建過應用程序,需要你花費一些時間學習,但是我們相信一旦你使用 CakePHP 建立了第一個應用程序,你就不會再想使用其他方式了。
要開始你的第一個 CakePHP 應用程序, 現在就試着建立一個博客 吧。
從哪兒獲取幫助
Cookbook
本手冊將是你獲取答案的首選。和許多開源項目一樣,我們經常會有新的朋友。試着自己先回答自己的問題。答案可能會有點慢,但是會保存很久 —— 你還能幫我們減輕負擔。手冊和 API 都有在線版本。
麪包店
CakePHP 麪包店是 CakePHP 所有事物的集結地。可以從中找到教程、案例和代碼示例。一旦你熟悉了 CakePHP,登錄論壇並分享你的知識,就可以名利雙收:)
測試用例
如果你覺得 API 提供的信息仍然不夠,可以瀏覽隨 CakePHP 一直提供的測試用例。它們爲每個類的功能和數據成員的用法提供了實際的例子。
lib/Cake/Test/Case
IRC 頻道
IRC Channels 在 irc.freenode.net:
- #cakephp – 一般性討論
- #cakephp-docs – 文檔
- #cakephp-bakery – 麪包店
如果你遇到了障礙,在 CakePHP IRC 頻道向我們發牢騷。 來自開發團隊的成員常常會在那,尤其是北美或南美的用戶常常會在那泡一整天。 我們喜歡聽到你的聲音,如果你需要幫助,想要在你所在的區域尋找用戶,或者想捐贈你那輛全新的運動型轎車。
Google 小組
http://groups.google.com/group/cake-php
CakePHP 還有一個非常活躍的 Google 小組。 它是找到歸檔答案、常見問題和當前問題的回覆的上佳資源。