星期二, 十二月 11, 2007
CakePHP 入門、安裝 及 其它設定和準備工作
CakePHP 總算最近有花時間好好玩一下, 來做個一連串的筆記吧~
首先要使用 CakePHP 前, 第一步先了解何謂 MVC(Model-view-controller):
- Model: 檢查資料型態/驗證, 與 DB 溝通(儲存/查詢) 等.
- Controller: 程式的流程, 商業邏輯等. 是 Model 與 View 的中間層
- View: 頁面瀏覽, 使用者看到的頁面就是這邊.
再來就是下載 CakePHP 來安裝看看囉~
官方網站: CakePHP : The PHP Rapid Development Framework
下載後, 直接解壓縮可見如下(1.1.xx 版) 三個目錄:(tar zxvf cake_1.1.18.5850.tar.gz)
- app: 自己寫的程式放在這邊.
- cake: Cake的核心函式庫, 升級的話, 只需要將此目錄的程式覆蓋掉即可.(此目錄的東西都不應該去碰他)
- vendors: 放置其它外部函式庫的地方.
- docs: 就基本說明文件等.
再來主要看的就是 app 的目錄內容:(下述參考自: CakePHP 使用手冊+留言板(繁體中文版) - 基礎觀念)
- config: DB/ACL 等設定檔
- controllers: Controllers 控制頁面流程, 裡面檔名都會是 TABLEs_controller.php
- components: 完整的元件(Components)放這邊.
- components: 完整的元件(Components)放這邊.
- index.php: 此隻會可以把 app 當 DocumentRoot, 不然直接將 DocumentRoot 指到 app/webroot 去也可以.
- models: Models 與 DB 溝通的程式.
- plugins: Plugins
- tmp: 暫存資料
- vendors: 放置其它外部函式庫的地方
- views: Views
- elements: Element 比較小的 view 模組
- errors: 自訂的錯誤回報網頁
- helpers: Helpers
- layouts: 網頁頁面的預設 Layout(.thtml)(ex: default.thtml, 如果頁面沒有任何 template, 預設會 load default.thtml), cake 1.2 => default.ctp(檔名改用ctp)
- pages: 固定內容的View
- 註: 其它目錄: 如果有自己的 view modules, 就會在這邊另外建立, 預設目錄會是: TABLEs(TABLE NAME + 複數)
- webroot: 程式的 DocumentRoot
- css
- files
- img
- js
解壓縮完第一個要設的是 app/tmp 的目錄, 懶人設法是 chmod 777 app/tmp 即可, 如果此資料夾會有多人一起使用, 可以考慮把要一起寫的人加入 www-data Group(Debian) 中, 然後 chown -R www-data:www-data *
, 再到 cake 根目錄跑下面兩行:
sudo find . -type d -exec chmod 775 {} ";"
sudo find . -type f -exec chmod 664 {} ";"
這樣子基本上就可以了, 主要有幾點要記得的:
- Module: 檔案命名用 單數, ex: modules/post.php
- Controller: 檔案命名用 複數, 並要加 _controoler, ex: controllers/posts_controller.php
- Views 要建目錄, 且 目錄命名用 複數, 裡面的檔案都是 .thml 結尾, 目錄裡的檔案命名要跟 Module function 對應, ex: views/posts/index.thtml (modules/post.php 要有 function index())
預設在寫的時後, 會發現 template 都是固定有 CakeXXX 的, 然後又找不到要去哪邊改, 主要是因為 views/layouts/default.thtml 造成的, 此檔案不存在的話, 不知道會去哪抓預設值, 所以可以跑下面的指令, 先把 default.thtml 複制一份, 就可以改 default.thtml 來做自己的頁面囉~
cp ../cake/libs/view/templates/layouts/default.thtml views/layouts/default.thtml (在 app 目錄下這樣子做, 從 layouts cp default 的 template 過來)
因為 views 都是 *.thtml, 所以 vim 也設定一下, 讓 *.thtml 跟解析 php 一樣的顏色, 只要 vim ~/.vim/filetype.vim, 內容如下:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.thtml setfiletype php
au! BufRead,BufNewFile *.ctp setfiletype php
au! BufRead,BufNewFile *.inc setfiletype php
augroup END
這樣子基本的環境設定, 和開發環境就大概完成了, 晚點再來寫下一步該怎麼做~
相關網頁:
- CakePHP 使用手冊+討論區(繁體中文版)
- CakePHP : The PHP Rapid Development Framework :: Screencasts - CakePHP 官方 Video 教學
- Cakephp OCPHP.pdf - 詳細的 CakePHP 介紹/範例等, 極力推薦這篇一定要看.
- 進階php程式設計-介紹MVC與Cakephp - 清楚的 MVC 介紹和圖文解釋
- Things, You Must Know About CakePHP
- DBDesigner 4 Scaffold Tools for CakePHP 1.0.2 (Default) - DBDesigner for CakePHP
- decorate - advanced bake.php for 1.1 - 比 bake 好用的程式碼產生器, 產生的程式碼比較實用, 適合用來當管理介面功能.
- Setting up Eclipse to work with Cake
- CakeX 0.1 alpha Release - CakePHP + xajax
- ㄚ凱的PHP研究教室 - 討論區
- 台灣PHP聯盟[ Taiwan PHP User Group ] - 討論區
how about Zend Framework?
I've try Zend Framework, and it's very nice for MVC structure~
but any way, Cake is also nice too
回 fychao
Mmm... Zend 暫時還先不想用, 因為使用的人還不夠多, 文件也比較少.
特別是我剛要摸 Zend 的時後, 發現他沒有最重要的 Hello World 教學, 後來就沒有理他了, 不過我蠻期待 Zend 的, 畢竟是官方套件, 等等看囉 :)
請問安裝在XP上該注意什麼?
symfony
回 zxp
Mmm... symfony 非常的 java style, 要設蠻多 xml 的設定, 這個就看你喜歡寫什麼.
如果喜歡寫 java, 或許您可以考慮用用 symfony, 如果不是的話, 我想, 你應該會比較喜歡用 CakePHP. :)
用途寫反了
app: Cake的核心函式庫
cake: 自己寫的程式放在這邊
用途寫反了





