Zend Framework Part4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/02/09(火) 22:21:24ID:???http://framework.zend.com/
マニュアル
http://framework.zend.com/manual/ja/
翻訳状況
http://mikaelkael.dyndns.org/checker/language/details/lang/ja
http://framework.zend.com/wiki/display/ZFDEV/Japanese+(Nihongo)
バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa
API
http://framework.zend.com/apidoc/core/
前のスレッド Zend Framework Part3
http://pc11.2ch.net/test/read.cgi/php/1239320100/
0359351
2010/06/21(月) 00:14:59ID:???おお、素早いレスありがとう。
その例だとわかりやすいし、よく銀行の出金〜入金を例にしてるけど
そういうサンプルでも出勤処理と入金処理それぞれのクエリ文2つ並べてるだけで、
それぞれの結果をチェックしてるのみたことないよ
だからcommit処理ってエラーチェック自体したうえでcommitしてるものだと思ってた
まあZendFWと関係ないレベルで申し訳ないです。
勉強になりました。ありがとう。
0361nobodyさん
2010/06/22(火) 16:44:11ID:???いや、つーか惜しかったんだよ。
commitが成功するか、否かじゃなくて例えば100件個別にインサートするのに
100回実行した後で、インサート件数が100件じゃなかったらrollbackする、
つうまとめてチェックなら一般的に用いられてる。それでも失敗した件数
(出来ればとれが失敗したか)をユーザに知らせる親切設計にするんだけどね。
まぁTwo phase commit とかsave point経験すると、この辺は呼吸するみたいに
当然の仕様になるんだが、、、金融系だと1円のミスでも塵積で賠償問題に
なっちゃうからね。
0362nobodyさん
2010/06/22(火) 16:45:59ID:???0363nobodyさん
2010/06/22(火) 17:55:44ID:???0364nobodyさん
2010/06/22(火) 20:27:27ID:???お前ら程度だとまっさきにバグるだろうがな。
0365nobodyさん
2010/06/22(火) 20:34:28ID:???0366nobodyさん
2010/06/22(火) 20:35:54ID:???もうこの一言で程度が知れるなあ
気の毒に
0367nobodyさん
2010/06/22(火) 20:35:58ID:???0368nobodyさん
2010/06/22(火) 20:41:24ID:???じゃないとこの流れでいきなり2相コミットの話なんて出ようがない
0369nobodyさん
2010/06/22(火) 20:46:10ID:???rollbackもしくはcommitしたあとの結果の話なんだから
2PhaseCommitに至っては全く持って話と関係ないし
0370nobodyさん
2010/06/23(水) 05:46:35ID:???議題が読み取れないのに、聞いてもいない自分論を喜々として語る。
その内容も大抵は誰の得にもならない、意図不明な物が多い。
0371nobodyさん
2010/06/23(水) 08:53:23ID:???0372nobodyさん
2010/06/23(水) 10:39:45ID:???0373nobodyさん
2010/06/24(木) 08:49:30ID:j4+/2c3lbootstrupに登録したdbの情報も使うので、単純にapplication/batchを作ってスクリプトを再生して起動しても、
bootstrupを通らないので、うまくDBなども使えません。
コントローラーを使うかのようにバッチを使いたいです。
やり方が記載されているページなど有りましたらおしえてほしいです。
0374nobodyさん
2010/06/24(木) 09:11:32ID:???バッチ用のBootstrap&Dispatcherを作ればいいと思うよ。
面倒なのであればバッチからWEB呼び出しちゃえば?
file_get_contents("http://xxxxx/xxx");
0375nobodyさん
2010/06/25(金) 01:30:49ID:AQc08b3W0376nobodyさん
2010/06/27(日) 07:11:07ID:???無理してPHP使う理由なくなってきたなぁ
0377nobodyさん
2010/06/27(日) 10:36:41ID:???0378nobodyさん
2010/06/28(月) 02:58:43ID:???0379nobodyさん
2010/06/28(月) 13:39:35ID:???PHPしか動かないレンタルサーバなんてまず滅多にないだろ
0380nobodyさん
2010/06/28(月) 13:48:03ID:???0381nobodyさん
2010/06/28(月) 15:07:53ID:???PHPの中では便利だけど、PHP以外でなら選択肢は山ほどあるだろうに。
0382nobodyさん
2010/06/28(月) 15:18:21ID:???Railsとか死ぬほどクソだったわ
0383nobodyさん
2010/06/28(月) 15:20:21ID:???2.SAStruts
3.Zend
4.Catalyst
5.Click
って感じだな俺の評価は
RubyやPythonはそもそも言語的に微妙
やっぱPerl、PHP、Javaでまとまっちゃうわ
0384nobodyさん
2010/06/29(火) 10:12:03ID:???PHPしかつかったことないWebプログラマなんだけど
RubyやPythonの方が言語的に微妙って
どの辺からそう感じるんだろうか
自分がPHP使ってて苛々することが多い上に
RubyやPythonの評価見てると逆だと思ってた
0385nobodyさん
2010/06/29(火) 14:29:24ID:???OOP流行りだからPHPは言わずもがな使い辛いとなる
ただ言語仕様守らない人にとっては何使っても一緒
0386nobodyさん
2010/06/29(火) 18:46:44ID:???好みに合わなくても無理矢理使わされる人が殆どいないからいい評判ばかり聞こえてくる
0387nobodyさん
2010/06/29(火) 19:47:06ID:???Java(Servlet)+SpringMVC+Velocity+Jakartaいろいろ
を組み合わせてやってたけど、ちょっとしたサイトつくるときに
レンタルサーバで動かせないから
PHP+ZendFrameworkに移行したんだけど
上記の組み合わせとほぼ同じ感じで出来てるから満足してる。
0388nobodyさん
2010/06/29(火) 19:51:06ID:???コンテナ起動中はApplicationスコープに変数保持してられるし、
PHPでもmemcachedとか使えばいいんだろうけど、手軽さが全然ちがう。
0389nobodyさん
2010/06/29(火) 19:53:43ID:???Apacheプロジェクトで良質なFW・ライブラリが選り取り見取りだし。
0390nobodyさん
2010/06/30(水) 02:14:21ID:???勘違い乙。
だいたいRubyやPython使ってる連中は他言語を使ってる。
ちゃんとつかって>>383みたいな評価するのは超少数派。
というか使ってるかどうかすら怪しい。
0391nobodyさん
2010/06/30(水) 14:54:36ID:???0393nobodyさん
2010/06/30(水) 15:52:01ID:???手軽さと利便性はPHP、言語仕様としてはRubyを評価するかな。
PHPの気持ち悪い点
・namespaceの区切りがバックスラッシュ
・無理矢理っぽい無名関数
・try catchにfinalyが無い
・goto文
・引数の型チェックが中途半端(stringとか指定出来ない)
0394nobodyさん
2010/06/30(水) 17:07:27ID:???0395nobodyさん
2010/06/30(水) 17:22:46ID:???0396nobodyさん
2010/06/30(水) 17:44:40ID:???0397nobodyさん
2010/06/30(水) 17:58:24ID:???気持ち悪いけど
0398nobodyさん
2010/06/30(水) 20:17:05ID:???ていうかここZFスレね
0399sage
2010/07/03(土) 00:16:16ID:???try catch の finaly は確かに欲しいね。
Ruby の入門書を見て便利だなと思ったのは、各文字列オブジェクトごとに文字エンコードをプロパティーとして指定できるところ。
0401nobodyさん
2010/07/04(日) 16:17:02ID:???0402nobodyさん
2010/07/04(日) 20:37:45ID:???0403nobodyさん
2010/07/04(日) 20:38:37ID:???PHPの初心者スレか、自分のブログに書いたらいいよ
0404nobodyさん
2010/07/04(日) 22:41:57ID:???2つ以上立てようとするとキモくなる、なんで?
0405nobodyさん
2010/07/04(日) 23:15:04ID:???0406nobodyさん
2010/07/04(日) 23:47:14ID:???0407nobodyさん
2010/07/05(月) 09:38:39ID:???うちはVirtualHost別にmodule振り分けるRouter自作してやってるよ。
いい感じに疎結合になるし、管理も楽。
0408nobodyさん
2010/07/05(月) 10:20:06ID:???0409nobodyさん
2010/07/05(月) 13:01:04ID:???Zend_Controller_Router_Route_Hostnameだと、
:hoge.fuga.com
とかやると:hogeが省略出来ないとか、
あと他にも理由あったような気がするけど
正規表現でHostnameマッチできるRouter自作した。
0410nobodyさん
2010/07/05(月) 13:03:27ID:???module用のPluginが登録されるようにした。
0411nobodyさん
2010/07/05(月) 13:10:07ID:???どのくらい複雑なHOST名にしてるのか知らないけど、
Hostnameでも複数ルートを登録できるから、その程度の理由なら自作しなくてもいいな。
他にも理由があったと言う他を思い出したら教えて
>>410はプラグインとZend_Applicationで処理するのが常道だけど、
Routerに書いてんの?Routerでプラグイン登録?まぁ、いいけど。
0412nobodyさん
2010/07/05(月) 14:56:06ID:???あ、RouterでPlugin登録してるわけじゃないよ。
Module別Bootstrapはあるけど、
Module別Pluginが欲しかったから
Routeされた段階で遅延登録されるようにした。
Host数=Module数は30個くらい?で、
その中でもさらにサブドメイン(?)をパラメータにして
いろいろやってた。
ちなみに今のバージョンでどうなのかは知らない。。
0413nobodyさん
2010/07/05(月) 15:00:43ID:???route要素もextendsとか多用してて複雑になってたから
標準のRoute_Hostnameだと
対応できなかったから自作したんだっけかな?
0414nobodyさん
2010/07/05(月) 15:05:19ID:???まず正規表現でHostnameからパラメータ取得したかったのと、
その際にPunycodeをデコードしたかったんだった。
0415nobodyさん
2010/07/05(月) 15:48:35ID:???おれだったら、正規表現はmod_rewriteで済ませて、
デコードはルーティングに入る前にプラグイン処理だな。
もしくは、RouterじゃなくてRouteで。
まぁ、Routerでもいけるだろうけど。
0416nobodyさん
2010/07/05(月) 17:46:39ID:???0417nobodyさん
2010/07/13(火) 22:41:12ID:???画像のリンクが切れてるだけでdispatchLoopStartup何回も走るとかうぜぇ・・
0418nobodyさん
2010/07/14(水) 00:21:27ID:???dispatchする前に別処理へ移行すればいいだけの話だ
0420nobodyさん
2010/07/16(金) 15:47:04ID:???0421nobodyさん
2010/07/22(木) 09:02:40ID:8xnHx2roネットとかみてZend_Fromを勉強中ですが、デコレーターとかのファイルを
どこに置いていますか?
Contoroller内?????
0422nobodyさん
2010/07/23(金) 14:07:23ID:???0423nobodyさん
2010/07/30(金) 23:46:03ID:???0424nobodyさん
2010/08/07(土) 14:32:30ID:???0425nobodyさん
2010/08/07(土) 22:28:35ID:???簡単にはいかないんじゃない?
使わないの?
0426nobodyさん
2010/09/01(水) 17:07:49ID:???MySQLを使用してるのですが、単純なサブクエリを実装して、
ZendFrameWork経由でデータを取得しようとしたのですが、
取得できませんでした。
発行しているSQLをコマンドラインで実行すると
ちゃんとデータを取得できました。
ZendFrameWorkってサブクエリが使用できないなどといった
制限があったりするのでしょうか?
0427426
2010/09/01(水) 17:14:57ID:1WzgUIV/バインドも使っています。
0428nobodyさん
2010/09/01(水) 17:27:19ID:???0429nobodyさん
2010/09/02(木) 01:35:42ID:???0430426
2010/09/02(木) 14:41:33ID:bqeUspcnこんな感じのSQLを投げてます。
select colA1,colA2 (select count(colB3) from tableB where colB4 = :bind1 and colB5=bind2)as col3 from tableA where colA6 = :bind1 and colA7 = :bind2 and colA8 = 'hoge';
バインドを使用しているbind1とbind2の部分に直接値を記述すると
レコードは取得できるのですが、
プログラムからbind機構を使うとレコードを取得できません。
select colA1,colA2 (select count(colB3) from tableB as b where colB4 = a.colA6 and colB5=a.colA7)as col3 from tableA as a where colA6 = :bind1 and colA7 = :bind2 and colA8 = 'hoge';
とした場合はうまく動きました。
bind変数を複数個使っているのが原因でしょうか?
無知な私に救いを。
よろしくお願いします。
0431nobodyさん
2010/09/02(木) 22:02:42ID:VdyJTTz3実際の呼んでる所のコードも書かないと分からんよ。
0432nobodyさん
2010/09/03(金) 00:06:56ID:???SQLエラーやPHPエラーは出ていない?
Zend_Db_Profilerやらで、Zend_Dbから発行されているSQL文を検証してごらん。
0433nobodyさん
2010/09/04(土) 16:12:12ID:???0434426
2010/09/06(月) 11:06:46ID:???まだ自己解決していないです。
>>431
このような感じで実装しています。
//バインドの設定
$bind = array('bind1'=>'aaa1','bind2'=>'bbb2');
//クエリの実行$dbInfoの中にはDBへの接続設定が入っています。
$db = new Zend_Db_Adapter_Pdo_Mysql($dbInfo);
$stmt = $db->query($sql,$bind);
$rows = $stmt->fetchAll();
としています。
$rowsの中をダンプで出力すると、
select colA1,colA2 (select count(colB3) from tableB where colB4 = :bind1 and colB5=bind2)as col3 from tableA where colA6 = :bind1 and colA7 = :bind2 and colA8 = 'hoge';
の場合は何もデータがないarray()。
select colA1,colA2 (select count(colB3) from tableB as b where colB4 = a.colA6 and colB5=a.colA7)as col3 from tableA as a where colA6 = :bind1 and colA7 = :bind2 and colA8 = 'hoge';
の場合はレコードが取得できています。
>>432
SQLでも、PHPでもエラーは何も出ておりませんでした。。。
Zend_Db_Profilerで出力される情報を
バインド変数で指定している箇所に埋め込むと
しっかりとレコードが取得できました。
ホントにちんぷんかんぷんチンプイワン太夫です。
どうぞよろしくお願いいたします。
0435nobodyさん
2010/09/06(月) 21:31:31ID:???普通にここ、コロンがないよね
0436nobodyさん
2010/09/07(火) 03:37:56ID:eLHDoNIE$t_kihon = $this->_config->table->scheduleKihon;
$t_player = $this->_config->table->schedulePlayer;
$where_kihon = array(
$this->_dbConn->quoteInto('uId=?', $uId),
$this->_dbConn->quoteInto('uType=?', $uId),
$this->_dbConn->quoteInto('id=?', $deleteId)
);
$where_player = array($this->_dbConn->quoteInto('evId=?', $deleteId));
try{
$this->_dbConn->beginTransaction();
$ret_k = $this->_dbConn->delete($t_kihon, $where_kihon);
echo "基本>".$ret_k;
echo "<br />";
$ret_p = $this->_dbConn->delete($t_player, $where_player);
echo "出演者>".$ret_p;
echo "<br />";
$ret_c = $this->_dbConn->commit();
echo "commit>".$ret_c;
echo "<br />";
$commit = 1;
}catch (Zend_Db_Statement_Exception $e){//トランザクション失敗
$this->_dbConn->rollBack();
print($e->getMessage());
}catch (Exception $e){
print($e->getMessage());
}
つづきます
0437436
2010/09/07(火) 03:39:11ID:eLHDoNIEecho "基本>".$ret_k;の結果は「基本>0」となるものの、
echo "出演者>".$ret_p;の結果は「基本>1」となり、
実際にテーブルから該当情報が削除されてしまいます。なぜでしょうか?
$t_kihon向けのクエリが失敗しているのだから、$t_player向けのクエリも失敗し
ロールバックするのでは?と思っていましたが違うんでしょうか?
なお、echo "commit>".$ret_c;の部分の出力はされません
Zend_dbの知識以前の話になっているかもしれませんが、すみませんが
ご意見よろしくお願いします
0438nobodyさん
2010/09/07(火) 10:34:39ID:an1mTvTqエラーになった場合、ほとんどのケースで
'Invalid controller specified (error)'
のエラーメッセージしかでなくてどのが悪いのか
みつけるのにすごく時間がかかるのですが、
これが普通なのでしょうか?
0439nobodyさん
2010/09/07(火) 11:57:19ID:???0440nobodyさん
2010/09/07(火) 12:48:16ID:an1mTvTq工夫しないとそうなるということですね?
それについての資料などありませんか?
0441426
2010/09/07(火) 12:56:14ID:???すみません。その箇所は転載時の発生した誤りになります。
実際はしっかりと「:」を入れているので、
SQLの構築でのエラーも出ていない状況なんです。
なんとも不可思議な感じです。
0442nobodyさん
2010/09/07(火) 13:40:25ID:jaTKXsd6errorコントローラがないっていってるので作ってその中で(開発時のみ)色々情報出力すればOK
例外handlingはここ読むべし
ttp://framework.zend.com/manual/ja/zend.controller.exceptions.html
0443nobodyさん
2010/09/07(火) 13:41:23ID:QU8+yQCWDB側でログ取って、どんなSQLになっているか見てみて
>>438
エラーコントローラーを無効にして、エラーを表示したらいいよ。
0444nobodyさん
2010/09/07(火) 15:07:59ID:an1mTvTqありがとうございます。調べてみます。
0445nobodyさん
2010/09/07(火) 21:53:55ID:???要はPDOのpreparedが普通に使えるかってことだろ?
テストしてみればすぐわかるんじゃね?下で普通に動いたけどな。
$queryString = "select colA1,colA2, (
select count(colB1)
from tableB
where colB2 = :bind1 and colB3 = :bind2
)as colA3
from tableA
where colA6 = :bind1 and
colA7 = :bind2 and
colA8 = 'hoge'";
$dbAdapter = Zend_Db::factory('PDO_MYSQL', $info));
$stmt = $dbAdapter->prepare($queryString);
$parameters = array(':bind1',':bind2');
$values = array(1, 2);
$stmt->bindValue($parameters[0], $values[0]);
$stmt->bindValue($parameters[1], $values[1]);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_OBJ);
$stmt->closeCursor();
0446426
2010/09/11(土) 16:05:36ID:???SQLにも問題なさそうでした。
副問い合わせのバインド変数の名称に
別のものを指定すると、こちらの期待通りの動きになりました。
釈然としませんが、とりあえず、プレースホルダの名称を別のものにして
やっていってみたいと思います。
0447nobodyさん
2010/09/15(水) 06:29:22ID:c+gNv7dNDB側でログとってないでしょ。
うまくいったときと、いかないときと同じSQLが発行されているわけがない。
スペルミスでした、って正直に書けないのかな
0448nobodyさん
2010/09/15(水) 10:49:01ID:???0449nobodyさん
2010/09/15(水) 10:57:10ID:???zendは公式サイトで解説してるほどdwooを押してるからね
0450nobodyさん
2010/09/15(水) 15:39:54ID:???0451nobodyさん
2010/09/17(金) 01:02:51ID:???0452449
2010/09/17(金) 12:21:09ID:???http://devzone.zend.com/article/12322
0453nobodyさん
2010/09/17(金) 14:55:33ID:???ZendがDwooを特別にプッシュしてるわけではないのでは?
0454nobodyさん
2010/09/17(金) 15:27:29ID:???SoftwareDesignとかWeb+DB Pressの記事みたいなもんだ
0457nobodyさん
2010/09/18(土) 03:15:59ID:HoVONag+無理なのかな。無理だとしたらどうやって取得すべき?
getParam('picture')とかやったんだけど無理だった。すみませんが教えてください
0458nobodyさん
2010/09/18(土) 13:16:26ID:???■ このスレッドは過去ログ倉庫に格納されています