CakePHP 總算最近有花時間好好玩一下, 來做個一連串的筆記吧~
首先要使用 CakePHP 前, 第一步先了解何謂 MVC(Model-view-controller):
- Model: 檢查資料型態/驗證, 與 DB 溝通(儲存/查詢) 等.
- Controller: 程式的流程, 商業邏輯等. 是 Model 與 View 的中間層
- View: 頁面瀏覽, 使用者看到的頁面就是這邊.
再來就是下載 CakePHP 來安裝看看囉~
註: 此篇為 CakePHP 1.1.x 版, 1.2.x 以上的, 可能要做些微調整.
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)放這邊.
- 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
上述步驟快速重點整理
- tar zxvf cake_1.1.18.5850.tar.gz
- mv cake* cakephp
- chmod 777 cake/tmp
- mv cakephp /var/www
Apache VirtualHost 設定
假設目錄是放在 /var/www/cakephp
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName student.localhostDocumentRoot /var/www/cakephp/app/webroot
<Directory /var/www/cakephp>
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
這樣子基本的環境設定, 和開發環境就大概完成了, 晚點再來寫下一步該怎麼做~
相關網頁
- 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 ] - 討論區
I've try Zend Framework, and it's very nice for MVC structure~
but any way, Cake is also nice too
Mmm... Zend 暫時還先不想用, 因為使用的人還不夠多, 文件也比較少.
特別是我剛要摸 Zend 的時後, 發現他沒有最重要的 Hello World 教學, 後來就沒有理他了, 不過我蠻期待 Zend 的, 畢竟是官方套件, 等等看囉 🙂
vim 設定文中說的 *.tcp 應該是 *.ctp ? 😉
嗯嗯, 寫錯了, 感謝指正 Orz..
您好,請問安裝在XP上該注意什麼?我安裝過程截圖:
http://picasaweb.google.com.tw/nickalbum12/20080111
XP 我想應該只要注意 app/tmp 要可以寫入, 這樣子應該就好了吧~ 🙂
我最近看到symfony: http://www.symfony-project.org/好像也是比较容易的framework php develop,这两个哪个更方便呢?
Mmm... symfony 非常的 java style, 要設蠻多 xml 的設定, 這個就看你喜歡寫什麼.
如果喜歡寫 java, 或許您可以考慮用用 symfony, 如果不是的話, 我想, 你應該會比較喜歡用 CakePHP. 🙂
app: Cake的核心函式庫
cake: 自己寫的程式放在這邊
用途寫反了
感謝提醒, 已修正.. Orz..
東西放到 apache 的目錄下就可以了嗎???
我放好後都是一堆錯誤訊息 >
嗯, 您可能得看一下 CakePHP 的版本, 若是 1.2 版的, 有些路徑不適用, 需要做些修改喔..
不好意思 大大, 那個:CakePHP 使用手冊+討論區(繁體中文版) 的連結好像變成怪怪的網站了...
感謝,我來把他拔掉~