CAT | CakePHP
FireBug, 是一個 Firefox 上面非常方便的網頁除錯工具….
FirePHP, 是 FireBug 的一個擴充, 可以讓 FireBug 處理 FirePHPCore librar 輸出的錯誤訊息…
有什麼好處?..
當用 FirePHP 後.. PHP 運行時候產生的錯誤訊息就不會直接輸出到畫面上影響畫面…
而可以在 FireBug Console 裡面才看到錯誤訊息或是 Debug 訊息…
在 CakePHP 怎麼裝呢?…
可以參考這篇文章..
http://bakery.cakephp.org/articles/view/debugging-with-firephp
基本上流程如下:
首先下載 FirePHPCore Library http://www.firephp.org/HQ/Install.htm
下載解開後, 把 FirePHP.class.php 拷貝到 APP/vendors/FirePHP
接著把 http://bakery.cakephp.org/articles/view/debugging-with-firephp 裡面的 FirePHP.deubgger.php 下載存在 APP/vendors/FirePHP 裡.
最後調整 APP/config/bootstrap.php ..
增加一行
App::import(‘Vendor’, ‘FirePHPDebugger’, array(‘file’ => ‘FirePHP’ . DS . ‘FireP
HP.debugger.php’));
這樣就好了…
以後 CakePHP 運行時候產生的錯誤訊息就會經由 FirePHP 輸出, 而不會直接輸出在畫面上囉!!!..
另外, 可以在任何一個地方使用 fb(‘Debug Message’); 來輸出除錯訊息到 FirePHP …
CakePHP 支援可以很簡單輕易的寫出 shell/tasks 的 script ..
只要照著 The-CakePHP-Console 裡面的教學,很輕易的就可以照個跟 Controller 的寫法寫一個 Shell …
但是要怎麼把 Shell 在 crontab 裡面執行?…
基本上也很簡單..
下面是範例…
首先你要知道你的 Cake Core Lib 在哪…
像我是放在 /home/darkhero/library/ 下面的 cake 目錄下..
所以 cake 的執行檔的絕對路徑是 /home/darkhero/library/cake/console/cake
而我的 project 假設是放在 /home/darkhero/public_html/my_app 下面好了….
那我就要可以用 /home/darkhero/library/cake/console/cake -app /home/darkhero/publict_html/my_app
他就會自動去找出 /home/darkhero/public_html/my_app/vendors/shells/ 下面所有的 shell 並且列出來讓妳知道有哪些…
像是這樣…
APP/vendors/shells:
expire_check
update_thumbnail
daily_report
上面的這個輸出就表示我有寫了 3 個 shell 可以執行…
而執行的方式就.
/home/darkhero/library/cake/console/cake -app /home/darkhero/publict_html/my_app
就會執行囉…
而放入到 Crontab 則只要把上面的完整路徑丟進 crontab 就好囉..
…
ps 通常我會把 /home/darkhero/library/cake/console/cake 設定一個 alias..這樣就會比較方便了.. :p
甚至還有像是 alias cake_my_app=’/home/darkhero/library/cake/console/cake -app /home/darkhero/public_html/my_app’ 這樣的設置.. :p
這裡有個要注意的地方!
由於 Model Validate 的Message部份用是類似下面這樣的方式設定…
class MyModel extends AppModel{
var $validate = array(
'born' => array(
'rule' => 'date',
'message' => 'Enter a valid date',
)
);
}
但是這樣在使用 i18n 的時候會有個問題是,我們無法在 object 的 var 使用 __() 去呼叫 i18n 的 global function .
解決方式是在 view 的地方改用自定義的錯誤訊息輸出.
view.ctp
<?php echo $form->error('born',__('Enter a valid date for born.',true));?>
而原來用 $form->input() 的部份記得加上參數 array(‘error’=>false) 來要求 input 不要判斷輸出 error tag.
No tags
終於 CakePHP 也有了這個好用的 Model behavior .. 雖然 Rails 好像很久以前就有了.. :p .. 但是也來的不遲阿!!!
http://developingwithstyle.com/2008/11/20/namedscope-or-cakephp/
有了這個 Behavior 就可以簡單且清楚的定義常常會用到的 Conditions .
像是範例中,我們長長需要只找出有啟動過得使用者或是有在線上的使用者。
因此可以直接像是這樣設定
class User extends AppModel {
var $actsAs = array(
’NamedScope’ => array(
’active’ => array(
’conditions’ => array(
’User.is_active’ => true
)
),
’online’ => array(
’conditions’ => array(
’User.is_online’ => true
)
)
)
);
};
這樣以後在 Controller 中只要輕鬆的使用
$active_users = $this->User->active(‘all’, array(
’conditions’ => array(
’User.created’ => ’2008-01-01′ // 額外條件
),
’order’ => ‘User.name ASC’
));
$active_users = $this->User->active(‘all’);
No tags
應該是昨天晚上的事吧…
Release: Pure Cake Power in RC1
不少東西有調整跟修改,性能方面似乎有用 XDebug 作過不少測試,也是提昇了很多喔。
不過要注意的就是像是 findAll() 的時候傳入的 conditions,要明確指定欄位的 model 喔..像是 $conditions = array(‘Model.field >’ => $value);
No tags
當系統越來越大的時候…
資料庫的負擔也會越來越大..這時候通常都會靠讀寫分離來讓系統更穩定. 讓資料庫更有效率…
在 CakePHP 可以靠下面的設定輕鬆達到…
database.php 的設定中..
[code]<?php
class DATABASE_CONFIG {
public $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '192.160.1.110',
'port' => '',
'login' => 'root',
'password' => '1234',
'database' => 'cakephp',
'schema' => '',
'prefix' => '',
'encoding' => 'UTF8'
);
public $master = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '192.168.1.100',
'port' => '',
'login' => 'root',
'password' => '',
'database' => 'cakephp',
'schema' => '',
'prefix' => '',
'encoding' => 'UTF8'
);
}
?>[/code]
先在 database 加入主要負責寫入的 master 主機…而一般負責讀取的主機就放在 default .
然後在 app_model.php 加入下面的處理…
[code]<?php
class AppModel extends Model {
function beforeSave() {
$this->useDbConfig = 'master';
}
function afterSave() {
$this->useDbConfig = 'default';
}
function beforeDelete() {
$this->useDbConfig = 'master';
}
function afterDelete() {
$this->useDbConfig = 'default';
}
}
?>
[/code]
這樣在實際執行的時候就會在寫入資料的時候自動切換到 $master 去進行寫入的動作了..
No tags
新的一年到了,CakePHP也換上新的佈景,更發佈了 CakePHP 1.2 的 Beta 版了唷!
全文轉自 TWPUG
CakePHP 開發團隊祝福每個人新年快樂!在進入程式開發的第三年,回顧一下已經完成的事情;一年前, Cake 1.2 開發版本推出,開發團隊持續努力讓新功能穩定,也提供一個成長中的開發平台。開發團隊的目的是提供最簡單的程式架構,這個目的即將完成,開發團隊對於能夠 分享這個成果給所有人感到驕傲,儘管過程波折不斷。
今年開發團隊願與您分享 CakePHP 1.2 Beta,開發團隊認為這是目前最好的版本;新功能讓使用 Cake 成為一種樂趣,經過了一段時間的開發後,開發團隊認為這些功能已經趨於成熟,他們一直在實用性與擴充性之間找尋平衡點。當然,這跟 1.1 版有很多的差異,但是許多在 1.1 版開發的程式碼應該都能在 1.2 版運行,在必要的地方程式會提供警告,而必須捨棄的部份開發團隊也將它細分後提供優雅的解決方案,讓升級 1.2 版不需要太多重大的改變,大部分的改變只需要藉由錯誤訊息的提示進行搜尋與置換即可。
CakePHP 1.2.0.6311 & 1.1.19.6305 推出
No tags
寫文件是一個程式設計師最最痛苦的事情之一,尤其是寫了一堆程式後有人要你把 Function ,Class 等等等等,寫成一份文件。
這事情不管你是寫 c/c++ , perl , ruby , php 都不例外。
phpDocumentor 是我們的救星! 只要在寫程式的時候,乖乖的寫一點註解,寫一點範例,多一點說明,注意一下格式,等到程式完工後,只要一個指令,就可以立刻把全部程式的說明文件產生出來,而且還有多種樣式可以選擇,甚至可以作成 PDF , CHM 喔…
好了,屁話不多說,先來說說怎麼裝上這好用的東西吧…
phpDocumentor 本身已經是 pear 的成員之一,所以安裝的時候只要用 pear 來安裝即可(以下範例為在 Windows 下進行,以後再補上 LInux 下的)
–如果你已經有裝 php 跟 pear 請跳過–
首先假設我把我的的 php 安裝路徑在 d:\php\
也就是說我從 www.php.net 下載了最新的 php win32 安裝檔案,解開後放在 d:\php\
那麼這個目錄下面應該有 d:\php\PEAR這個目錄,但是當你進去看的時候,你會發現好像沒有 PEAR 相關程式庫阿…
沒錯,這個時候你還沒有安裝 PEAR 請先用 go-pear.php 安裝基本 pear 環境。
那麼在 d:\php 目錄下有一個檔案,叫做 go-pear.bat 請開一個 cmd 視窗去執行他,中間會有一些問題,基本上都照預設值去跑就可以了…
跑玩後,你的 pear 應該會被安裝在 d:\php\PEAR\pear 下面,而幫助你安裝其他 pear 套件的 pear.bat 則在 d:\php\PEAR下面
–安使安裝 phpDocumentor –
安裝 phpDocumentor 的過程也很簡單,只要利用 pear.bat 即可!
使用指令如下
d:\php\PEAR\pear.bat install -o PhpDocumentor
當中有多下一個 -o 的參數,意思是要 pear 把相依的套件也一起下載安裝。
安裝完成後 d:\php\PEAR 下面應該會多一個 phpdoc.bat 的批次檔,我們就可以用這個批次檔來產生我們的文件。
– 使用 phpdoc.bat 產生文件 –
產生文件的方式我通常只有用下面一行指令解決:
d:\php\PEAR\phpdoc.bat -o HTML:Smarty:PHP -d d:\myProject\php_source\ -t d:\myProject\docs
這樣子的意思是說,採用 HTML:Smarty:PHP 的樣板格式,然後原始碼目錄在 d:\myProject\php_source\ ,接著把產生的文件放在 d:\myProject\docs 底下。
當中若是你只要對一個檔案作文件的話,可以把 -d 改成 -f 然後後面接的著就是指定的檔名。
樣板的格式基本上有 HTML, XML, PDF, CHM 四大類別,通常我用的都是 HTML:Smarty:PHP 這個,因為他比較好看!
另外還有就是 CHM:default:default 這個.用來產生 chm 的,不過他產生出來的是 .hhp 檔案,也就是還沒有經過 HTML helper 編譯過的檔案,所以要另外安裝 HTML Helper 來編譯 hhp 檔案就可以產生你要的檔案。
– 最後來說一下怎麼寫註解 –
phpDocumentor 的註解有一定的規格,但是都跟我們原來寫註解的方式很像,只是要注意一下東西而已。
簡單的來看個範例好了
<?php
/**
* 這裡是這個物件的說明
* 可以多行喔!~
*
*/
class MyClass {
/**
* 這裡是變數的說明
*
* @var int
*/
var $a ;
/**
* 這裡是變數的說明.
*
* @var string 這裡也可以放說明
*/
var $b ;
/**
* 這是針對函式的說明
* 也是一樣可以多行
* 若是簡單的範例也可以放這裡
*
* @param int $a 可以放入傳入的型態
* @return array 可以說明回傳的型態
*/
function first ( $a ) {
return array();
}
}
?>
基本上都是在
/*
*
*/
中間寫註解,別忘了每行前面要有個 * 喔!
註解比較常用到參數的應該是
@author 程式作者名稱,聯絡方式
@const 常數
@deprecate 不建議使用的 API
@global 全域變數
@param 函數的參數
@return 回傳值
@see 可參考函數
@since 開始時間
@static 靜態變數
@var 物件成員變數
@todo 計畫中要進行的項目
更多更詳細的資料請到 http://www.phpdoc.org/ 看囉!~
No tags
昨天 CakePHP 釋出了最新的 Release …
其中比較受關注的是 1.2 已經進入 Pre-Beta 的階段.
有 1.1 的更新
Stable: 1.1.18.5850
也有 1.2 的 Pre-Beta
Pre-Beta: 1.2.0.5875 pre-beta
這次的 1.2 中有不少更新,有使用1.2的朋友可要多注意看看唷!~
詳情可以看這裡…New CakePHP Releases
Happy Bake!..
No tags
