Zend Framework
消えたorz
書いてる途中にブラウザが落ちた・・。
がんがって思い出して書こうorz
コメントを貰ったからZend FrameworkをDLしてみた。
バージョン1.0.0が出てるのを知らなかったorz
前にちょこっと読んでいて手元にあるやつは0.1.3だから中身は全然違うようだ。
wc -l `find . -name "*.php"` | tail -n
とかやると気が遠くなるので
http://framework.zend.com/manual/ja/index.html
この辺とかを見つつ。
やっぱり書き直すのはしんどいのでまた後日。。
Zend Frameworkを使ってデータベースを利用するページ作成!みたいなサイトは無いんかね・・。
http://www.itmedia.co.jp/enterprise/articles/0703/05/news013_3.html
こういうのはちょこちょこあるみたいだけど、綺麗に書くための説明、みたいなのはあるのかなぁ・・。
ちなみに現在迷い中のコードはこんなの
<?php ... function execCancel(Array &$items, OrMapper_Cancel $cancelDao, $description){ $cancel = $cancelDao->createVo(); $cancel->description = $description; $cancelDao->save($cancel); $cancelId = $cancelDao->currval(); // idを取得して※で設定するためにこのスコープでsave()が必要 foreach ($items as &$item){ $item->cancelId = $cancelId; // ※ $item->status = 'cancel'; } }
リレーションを
cancel <--- cancel_data ---> item
にせずに
cancel <--- item
にしたのは妥協したからなんだけど(というかわざわざ変更した)、プログラムのことを考えたらやっぱり妥協せずにきっちりDB作った方がいいのかねぇ。。
そうすると引数をvoだけにして、関数の外でdaoを使ったvo取得〜保存がすんなり出来そうだ。
まぁアクションクラスで
<?php class CancelAction { public $itemIds; public $description; public function execute(OrMapper_Item $itemDao){ $itemDao->begin(); try { $cancel = Cancel::create($description); }catch (Exception $e){ $itemDao->abort(); return 'error'; } $items = $itemDao->getVos($this->itemIds); try { Cancel::execCancel($items, $cancel, $this->description); }catch (Exception $e){ $itemDao->abort(); return 'error'; } $itemDao->commit(); } }
とやってもいいんだけど、この流れは固定だからアクションクラスに書くのはなぁ・・かと言ってこのためにクラスを作るほどでもない。っていう・・まぁそんなに重要じゃない悩みなのだけれど。