2010年1月1日 星期五

MVC與肯X基

MVC與肯X基

晚上睡不著覺,妹妹在肯X基上班,跟他聊上班的事情,聊著聊著感覺很熟悉
MVC架構為什麼跟肯X基的的工作流程這麼像,所以就記錄下來,希望對想了解
架構的人能有所幫助。

註:mvc是Xeroe PARC在20世紀80年代為程式語言Smalltalk-80所發明的一種開發模式


演出人員:

櫃檯V小姐(通常都要有點好看,所以view很重要)
總配C阿姨(通常就是看客人多少負責發落漢堡手、麵包手做事的人)
漢堡手M1、麵包手M2、飲料手M3(就是壓麵包然後做漢堡出來跟把炸雞的人)
最後當然還有客人(就是所謂的Client、EndUser)


動作是這樣的
1.等了好久客人終於進門了
2.櫃檯V小姐展示一下產品並問客人說請問你要點什麼
3.客人:我要一份X號餐(一份漢堡、一杯可樂、一份薯條)
4.櫃檯V小姐把他key在收銀機上
5.總配C阿姨從後面的螢幕上看到了客人訂餐的資料
6.依照客人的需要總配C阿姨發落漢堡手M1、麵堡手M2及飲料手M3製作各自的東西
7.漢堡手去找漢堡皮、肉片、萵苣絲,薯條手開始鏟薯條,飲料手開始做飲料
8.總配檢查了一下做好的東西,看看是內用還是點餐車道,把它呈上透明的保溫箱裡或外帶的車道窗口
9.櫃檯小姐把產品拿給客人


如果換成網頁程式的MVC架構是這樣解釋的
1.也是在等使用者上這個網站
2.使用者GET網頁,展示網頁畫面至使用者的瀏覽器(VIEW)
3.使用者點擊某一頁,告訴Server我要這一頁
4.無對應的動作
5.Ctrl接受到使用者的要求
6.依照使用者點擊的頁面的功能,開始跟Model要資料
7.Model會依需求跟資料庫來自同一個表或不同的表查詢出資料,並做成Ctrl所能接受的資料
8.Ctrl依照剛剛使用者的要求,看回傳給View用頁面呈現,還是Ajax來呈現
9.View將所需求的資料呈現出來

2009年12月25日 星期五

Zend FrameWork的交易

$this->db->beginTransaction();

try {

//執行SQL語法

$this->db->insert('dbname' , array('欄位1' => '值1'));
$this->db->insert('dbname' , array('欄位2' => '值2'));
$this->db->insert('dbname' , array('欄位3' => '值3'));
$this->db->commit();//成功就執行
}catch (Zend_Db_Exception $e){
$this->db->rollback();//失敗就回去上一步
throw $e;

}

2009年12月13日 星期日

PHP的框架及ORM框架

PHP框架

CoreMVC官方網站
CodeMVC_google

fleaphp

ThinkPHP

CakePHP

CodeIgniter


EasyFramework


戲法人人會變,看你喜歡用哪一種摟

最近在看阿六文章

有段玩笑話說
使用Zend就像加入共產黨
FleaPHP像是改革開放
ThinkPHP開始實施共產主義
所有都試過後發現無黨派的最自由

PHP的ORM框架

doctrine

ZendFramework資料庫的設置

ZendFramework設定資料庫時config.ini,跟ROR一樣有個專門的設定檔

[general]
db.adapter=PDO_MYSQL //使用PDO的MySQL接口
db.config.host=localhost //MySQL的主機IP
db.config.username=root //填入資料庫的使用者
db.config.password= //填入資料庫的密碼
db.config.dbname=zendoophp //填入使用的資料庫名稱



然後在單一進入點的index.php
註冊這組設定
$config=new Zend_Config_Ini('./application/config/config.ini',null, true);
Zend_Registry::set('config',$config);

$dbAdapter=Zend_Db::factory($config->general->db->adapter,
$config->general->db->config->toArray());

設定資料庫接口從Zend_Db::factory(接口,設定陣列);

$dbAdapter->query('SET NAMES UTF8');
先送出一個SQL,將資料庫的連線語系設定為中文

2009年11月29日 星期日

如何動手學程式

如何動手學程式以PHP為例

其實PHP有著溫和的學習曲線
可以提供對有興趣的程式設計者
有不錯的信心。

2009年10月22日 星期四

如何在Aptana設定SFTP



先開啟一個PHP專案











填入專案名稱


完成專案新增後,在專案的名稱按右鍵










選擇SFTP



設定好SFTP,這樣就能按Ctrl+S存檔的時候自動上傳



如果選自動上傳SFTP有問題可以參考



開啟 Aptana 的 upload current file on save
http://www.joehorn.idv.tw/archives/2009/09/04/631/

2009年10月19日 星期一

跨網域狀態傳遞(使用者認證)

在PHP所寫的程式中,因為Http是無狀態的請求,往往許需要藉助cookie或session來記錄使用者資訊
基於安全性考量,PHP預設cookie的使用範圍只能在網站本身的網域使用如(aaa.omusico.net),如果
想要在(bbb.omusico.net)上也能讀到那支cookie也能紀錄的狀態,setcookie ("TestCookie", "", time() - 3600, "/", ".omusico.net", 1);可以將cookie的domain指定到更上一層。

如果要在跨網域中共用session,要注意Session是存在於server所以兩台主機間必須共享存Session的
檔案空間並在PHP.INI中修改session儲存位置,或是使用mencache、fastdht甚至是facebook貢獻的hive

PS:修改php.ini 內 session.use_cookies將1設定改為0將會使用網址傳遞