ZendFrameworkってどうよ?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/07(土) 02:49:15ID:6wQ8r0Dcこれってどうよ?
PHP5に移行したほうがいいのかな
0615nobodyさん
2007/11/04(日) 18:40:59ID:???0617nobodyさん
2007/11/05(月) 12:46:18ID:???Zendルータってもう使いものになるレベルになってんの?
0618nobodyさん
2007/11/06(火) 20:29:30ID:???使えないのは、単にお前の能力不足じゃないのか
0619nobodyさん
2007/11/07(水) 02:53:53ID:???前見た時はなんかろくすっぽ実装されてなかったけど
0621nobodyさん
2007/11/08(木) 02:26:48ID:???下記のようにnew Zend_Log_Writer_Db時点($columnMapping)で、追加予定のイベント指定して、
new Zend_Logでインスタンス生成してから
setEventItemするという順で良いのでしょうか?
$db = Zend_Db::factory('PDO_MYSQL', $params);
$columnMapping = array('lvl' => 'priority', 'msg' => 'message', 'pid' => 'pid');
$writer = new Zend_Log_Writer_Db($db, 'log_table_name', $columnMapping);
$logger = new Zend_Log($writer);
$logger->setEventItem('pid', getmypid());
0622nobodyさん
2007/11/09(金) 21:37:56ID:???まだがっつりとは触ってないけど、私見では十分使えるレベルだと思う。
Net_URL_Mapperなんかでごりごり書くよりも直感的で、本当にルータっぽく
設定できるので、個人的には結構気に入っている。というか、他の機能が
まだ少し未熟な(好意的に見れば柔軟性に富んだ)感触なのに対して、ほぼ唯一
そのまま使える機能といってもいいw
むしろ、Validator周りが予想以上に使えなくて、今頑張ってるよ…。
0623nobodyさん
2007/11/10(土) 00:36:32ID:grKOANVoその辺はZend_Formとかとくっつける為にあんな感じなんだろう
0624nobodyさん
2007/11/10(土) 00:49:31ID:???0625nobodyさん
2007/11/10(土) 01:04:16ID:???0626nobodyさん
2007/11/10(土) 02:58:12ID:???DEBUGはロギングしない、とか後で変更できないの?
わざわざ継承して、debug関数の処理空にする、とかしか思いつかない。
0627626
2007/11/10(土) 02:59:42ID:???0628nobodyさん
2007/11/10(土) 15:52:22ID:???で1日ハマってるんだけど、誰か助けてくれ〜〜
$db->insert( $table, $insert_data );
としても全くインサートされない。
Zend_Db_Profiler でクエリー文調べてみたら
INSERT INTO `table` (`hoge`, `hoge2`) VALUES (?, ?)
となってるんだが、ホワィ??
なぜにプリペアドステートメント?
0629nobodyさん
2007/11/10(土) 16:37:29ID:???0630nobodyさん
2007/11/10(土) 18:43:54ID:???Zend_Db_Profilerで見られるクエリでPDOでbindする前のじゃなかったっけ
だからそれはそれであってるんじゃないの(この仕様もどうかと思うんだけどね)
例外が返ってくることもなくデータが入らないの?
0631nobodyさん
2007/11/10(土) 23:10:26ID:???objectが返るってことはソースからなんとなくわかったんだが、
結局
>>599のように送信が成功したかどうかで分岐させたい場合、
どんな記述をすればよいの?
0632nobodyさん
2007/11/11(日) 01:37:50ID:???0633nobodyさん
2007/11/11(日) 09:38:19ID:???sendで失敗したら例外が投げられるから投げられてたらエラー
tryでsendしてcatchに失敗した時の処理を書く
0634nobodyさん
2007/11/11(日) 10:16:36ID:???ZF周辺の頭脳派集団的オーラがぜひPHPコミュニティ全体に波及しますように
0635nobodyさん
2007/11/11(日) 23:29:07ID:???ほかの人はあれ好きなの?
0636nobodyさん
2007/11/11(日) 23:43:13ID:???.NetでもSMTPにメールアドレスが拒否られた場合、普通にException投げてくれるから同じ書き方になる
try{mail.send(primary)}
catch
try{mail.send(secondary)}
catch{return false;}
他の言語だとどうなんだろうね
0637nobodyさん
2007/11/12(月) 00:32:16ID:OoaTyYVU0638nobodyさん
2007/11/12(月) 00:46:57ID:???0639nobodyさん
2007/11/12(月) 01:36:43ID:???SimonとかいうヤシのProposalはどうも現場感覚が決定的に不足してる感じがする
0640569
2007/11/12(月) 07:21:42ID:???0641nobodyさん
2007/11/12(月) 10:09:01ID:zaguTSbK0642nobodyさん
2007/11/12(月) 14:04:06ID:MO0zYBuT0644nobodyさん
2007/11/12(月) 18:03:05ID:???一つ書き忘れ。送信者名に日本語使うときの対処方法がZend framework入門の
P299に書いてあります。
0645nobodyさん
2007/11/12(月) 18:26:18ID:???0647642
2007/11/13(火) 19:59:22ID:lFhItDW1>>644
給料出たので奮発してその本買って見ます。
0648nobodyさん
2007/11/13(火) 20:32:39ID:???マニュアル以上のことが書いてあるわけでも無いし。
俺は買って損した気分です。
0650nobodyさん
2007/11/14(水) 01:14:37ID:???英語でよければ「Zendframework in action」がオンライン購入で途中まで読めるようになっており
コチラはもう少し読みやすく実践的なのでモチベーションが上がる。
まぁZFのバージョンアップではやくも内容が古くなりつつあるけど。
0651nobodyさん
2007/11/14(水) 01:44:20ID:???public function __set($key, $val){
if ('_' != substr($key, 0, 1)) {
$raw_key = $key . '__raw';
$this->$raw_key = $val;
return;
}
require_once 'Zend/View/Exception.php';
throw new Zend_View_Exception('Setting private or protected class members is not allowed', $this);
}
public function __get($key){
$raw_key = $key . '__raw';
if(strpos($key, '__noescape') === false){return $this->$raw_key;}
else{return $this->escape($this->$raw_key);}
}
こういう書き方ってダメなんだっけ?
__setの時点でWindows環境だと無応答、Linuxだとメモリ確保できないぞゴルァみたいなエラーが。
0652nobodyさん
2007/11/14(水) 01:49:41ID:???0653nobodyさん
2007/11/14(水) 03:29:33ID:???$db = Zend_Db::factory('PDO_MYSQL', $params);
$db->insert('table', $params2);
}catch(Zend_Exction $e){
echo "メッセージ: " . $e->getMessage() . "\n";
}
でinsertのエラーがキャッチできないんだけどなぜに?
0654nobodyさん
2007/11/14(水) 03:30:29ID:???0655nobodyさん
2007/11/14(水) 05:29:12ID:???はじめて知った。さすがPHP、奥が深いな。
0656nobodyさん
2007/11/14(水) 10:07:45ID:???0657nobodyさん
2007/11/14(水) 14:21:55ID:???反映行数がinsertの返し値なようだから、
0ならfalseとかthrowとかしなきゃいけない、でファイナルアンサー?
0658nobodyさん
2007/11/14(水) 17:50:43ID:???それで例外キャッチできないって絶対何か別の原因があると思うけどなあ
内部で何かエラーがあれば必ずZend_Exception派生の例外は投げられるはずだけど
データの取得(SELECT)はちゃんとできるかい?
0659657
2007/11/15(木) 12:38:07ID:???はい、そうです。
selectなども正常にできています。
意図的にDBパスワードミスとかするとちゃんとcatchしてくれます。
何となく思ったのですが、
653のままでも
本来insertが例外を投げているのであれば、
catchされないままになってしまうので
通常はエラーが出るはずですよね。
0660nobodyさん
2007/11/16(金) 03:03:39ID:???0661nobodyさん
2007/11/16(金) 03:55:13ID:???0662658
2007/11/16(金) 12:18:44ID:???うむ
>>660
戻り値が0だったら例外が投げられるとかって事じゃなく
insertが通っているのに戻り値0で
実際にはinsertされてないってのは
何か別の原因が、って意味で書いた
0663nobodyさん
2007/11/16(金) 20:37:00ID:???0664nobodyさん
2007/11/16(金) 21:15:28ID:???ZendFrameworkってどうよ?って質問しに来たんだが、
ざっとスレ読んで放置することにしたわw
0665nobodyさん
2007/11/16(金) 22:17:00ID:???0666nobodyさん
2007/11/16(金) 22:19:53ID:???0668664
2007/11/16(金) 23:12:19ID:???自分で作ることにするわ。汎用性ありそうだったら公開するお。
0670nobodyさん
2007/11/16(金) 23:30:58ID:???0671nobodyさん
2007/11/16(金) 23:46:54ID:???0672nobodyさん
2007/11/16(金) 23:56:08ID:rj+nso4lソースとかなんでもclassにしちゃうとことか
とっても好感を持てます
0673nobodyさん
2007/11/16(金) 23:59:50ID:???それ普通じゃないの
0674nobodyさん
2007/11/17(土) 00:49:58ID:???普通にClassにするだろ
0675nobodyさん
2007/11/17(土) 01:48:15ID:???ってController_Actionのところでやるのがいいの?
MVCとかにこだわるならコントローラーではやらないほうがいいの?
0676nobodyさん
2007/11/17(土) 01:53:00ID:???0677nobodyさん
2007/11/17(土) 02:14:26ID:???User extends Zend_Db_Table
UserProfile extends Zend_Db_Table
みたいな2つがあるとして
ユーザー登録ページみたいなので
2つ同時にinsertするときは
どういう風に
$db->beginTransaction();
するのがいいんですか?
0678nobodyさん
2007/11/17(土) 03:03:48ID:???0679nobodyさん
2007/11/17(土) 05:35:35ID:eWyQP34E0680nobodyさん
2007/11/17(土) 11:44:10ID:???俺ならUserにregisterメソッドを用意して
その中でbeginTracnsanctionして
UserへのinsertとUserProfileへのinsertを行う
って感じでmodelに押し込めるな
Controllerからはトランザクションを意識したくはないな
0681nobodyさん
2007/11/17(土) 16:52:25ID:???でUser::insert(),UserProfile::insert()
でControllerでcommitする。
Controllerでトランザクション意識するのってそんなに良くない事かな?
俺はどっちかっていうとmodelでcommitすることに抵抗あるな。
トランザクションの制御はなるべく外側でやりたい。
0682nobodyさん
2007/11/17(土) 20:07:19ID:???0683681
2007/11/17(土) 20:44:28ID:???そうか、やっぱりダメか。
なんかControllerで何やって良いかまだ良く分かってないんだ。
なら>>677の別の解答として、
UserRegisterクラスを作って
その中で
beginTracnsanction()
User::insert()
UserProfile::insert()
commit()
とするのはどうかな。
0684nobodyさん
2007/11/17(土) 20:53:01ID:???いや俺もコントローラでコミットするよ。
そんでbeginとcommitの場所はソース的には一カ所になるようにする。
そうすると安全。
0686nobodyさん
2007/11/17(土) 21:18:14ID:???0687nobodyさん
2007/11/18(日) 00:20:09ID:???0688nobodyさん
2007/11/18(日) 00:54:29ID:???まー好きにしろってこった。
0689nobodyさん
2007/11/18(日) 02:40:59ID:???データの処理関係はモデルです。曖昧も何もない。勉強不足
0690nobodyさん
2007/11/18(日) 02:48:04ID:???根本的にセンスがない。
0691nobodyさん
2007/11/18(日) 04:27:24ID:???モデルって結構幅広いから
どういう設計にしたらいいかすっげー悩むんだけど
その辺のルールがよくわからない
0693nobodyさん
2007/11/18(日) 07:29:05ID:???0694nobodyさん
2007/11/18(日) 07:33:16ID:???0695nobodyさん
2007/11/18(日) 08:02:11ID:???0696688
2007/11/18(日) 08:16:49ID:???ぶっちゃけZendFramewordつかってないから良くしらんのだがwww
単に複数の別クラスのモデルを1つのトランザクションで処理するときどうするの?
0697nobodyさん
2007/11/18(日) 08:32:29ID:???Cでコントロールしてもおかしくない
0698nobodyさん
2007/11/18(日) 08:55:51ID:???0699nobodyさん
2007/11/18(日) 09:01:34ID:???0702688
2007/11/18(日) 12:18:02ID:???うわwそれは嫌だな。
なんかMVCにしろデザインパターンにしろ、その流儀を守るために
無駄にクラス作ったりコードが増えたり複雑になるのは嫌だわ。
0703nobodyさん
2007/11/18(日) 12:36:09ID:???小規模個人サイトくらいなら気にすることないけど
0704nobodyさん
2007/11/18(日) 12:55:18ID:???データが(程度の問題で)かなりアトミックに扱うべきだと思ったら
一見複雑になるように見えても新たなクラスを作る合理的理由があるはずだろうし
シチュエーション的な理由(Cによるということ)だけでに複数のモデルを同時に扱いたいってのなら
Cからtran制御することにもそれなりな正当性がありそうに思える
0705nobodyさん
2007/11/18(日) 13:20:09ID:???ただ上記のUserとUserProfileっていう名前の場合、
普通1:1か1:nの関係でエンティティとしては「ユーザ」という1エンティティなわけで
そのユーザエンティティを登録する処理なんだから
Userの登録処理に押し込めるのは自然な流れだと思うし
それ以外の場合でも、そういう複数モデル(テーブル)にまたがる
一連の更新処理をモデルに対応するテーブル間のマッピングから考えて
いずれかのモデルに押し込めておくのは俺はわりとやる
でも全く関係のない2者間のモデルを同時更新するなら(UserとLogとか)
Cでトランザクションすることだってあるだろう
どっちかでしかトランザクションしないってのは思考停止
っていうか実際そんな簡単にMCは割り切れない部分もあるし
その場に応じてちょっと普通ではやらない置き方になる時も多々あるよ
MVCMVC言って盲目的に割り切ろうとしてる奴も思考停止だ
0706nobodyさん
2007/11/18(日) 13:39:00ID:???0707nobodyさん
2007/11/18(日) 14:07:55ID:???try {
トランザクション開始
アクション関数呼び出し
} catch () {
ロールバック
ログ出力
} finally {
例外じゃなきゃコミット
}
アクション内ではトランザクションとか何も意識しない
とかなっとけばいいんでないの?
モデルのなかでいちいちトランザクション貼ってロールバックとか
毎回書く方がナンセンスじゃないか?
複数のモデルの処理が全部正常に行われたらコミット、
何か1つでも失敗あったらロールバックてときも上の方法だと何も考えなくても対処できてる。
0708569
2007/11/18(日) 14:56:17ID:???0709nobodyさん
2007/11/18(日) 15:11:10ID:???アクション内全部が1トランザクションとか愚の骨頂
どんなアクションだろうが最初にファイルをオープンしてロックかけておけば
いつでもファイルいじれるよ!どうだい柔軟で便利だろ!
とか言ってるのと同じくらいバカ
CだろうがMだろうがどこでトランザクション張ってようが
そこで毎回rollbackの対応を書いたりなんてしない
FW使ってるなら普通上層で一元的に例外に対するコントロール部分があるし
そもそも例外発生したらcommitされないんだから
そのまま終了しても自動的にrollbackされる
0710707
2007/11/18(日) 15:47:47ID:???すまん、>>707は簡素すぎた。
実際はopenTransaction()ってメソッドが親のコントローラとかにあって、
それを呼ぶとトランザクションが貼られる。
で、明示的にアクション内でcommit()呼ばないとアクション抜けたときに自動的にコミット。
>FW使ってるならほげほげ
そういう仕組みがあるならいいよ。
てか上の話見てて毎回書くようなことを書いてるように見えたから
ちょっぴり自己主張しちゃいました。
>>708
すまん、実はJava厨が紛れ込んだだけなんだ。
0711nobodyさん
2007/11/18(日) 19:22:08ID:kBwRbUKB0712nobodyさん
2007/11/18(日) 19:24:42ID:???例外投げられたらcatchに移行する
例外投げられなかったらfinallyが実行される
てことはtryの最後にfillany内の処理書いとけば同じことじゃんなんて思うんだが
0714707
2007/11/18(日) 20:32:34ID:???namespaceもほしいお
>>712
ファイルとかセッション閉じる処理とか例外でも正常終了でもしないといけないっしょ?
そういうのをfainallyにまとめて書くのだ。
0715nobodyさん
2007/11/18(日) 20:54:37ID:???(^-^)
■ このスレッドは過去ログ倉庫に格納されています