トップページphp
1001コメント368KB

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/
0362nobodyさん2010/06/22(火) 16:45:59ID:???
なんだこいつw
0363nobodyさん2010/06/22(火) 17:55:44ID:???
最近PostgreSQLの新機能覚えて言いたくて仕方ないんだろ
0364nobodyさん2010/06/22(火) 20:27:27ID:???
は? ツーフェーズなんて10年の昔からあるだろ。
お前ら程度だとまっさきにバグるだろうがな。
0365nobodyさん2010/06/22(火) 20:34:28ID:???
ここPHPのWebフレームワークのスレだよね?
0366nobodyさん2010/06/22(火) 20:35:54ID:???
>金融系だと1円のミスでも塵積で

もうこの一言で程度が知れるなあ
気の毒に
0367nobodyさん2010/06/22(火) 20:35:58ID:???
じゃあDB抽象化すんなよ
0368nobodyさん2010/06/22(火) 20:41:24ID:???
PostgreSQLじゃなきゃ最近基本情報の勉強でもしたんだろたぶん
じゃないとこの流れでいきなり2相コミットの話なんて出ようがない
0369nobodyさん2010/06/22(火) 20:46:10ID:???
SAVE POINT使おうが使うまいが全然関係ない話じゃん
rollbackもしくはcommitしたあとの結果の話なんだから
2PhaseCommitに至っては全く持って話と関係ないし
0370nobodyさん2010/06/23(水) 05:46:35ID:???
出来ないPGの特徴
議題が読み取れないのに、聞いてもいない自分論を喜々として語る。
その内容も大抵は誰の得にもならない、意図不明な物が多い。
0371nobodyさん2010/06/23(水) 08:53:23ID:???
今や銀行やクレジットのシステムもZend_DBが使われてるんですね!
0372nobodyさん2010/06/23(水) 10:39:45ID:???
1.10.6
0373nobodyさん2010/06/24(木) 08:49:30ID:j4+/2c3l
zendで日次batch処理をしたいのですが、検索に出てきませんでした。
bootstrupに登録したdbの情報も使うので、単純にapplication/batchを作ってスクリプトを再生して起動しても、
bootstrupを通らないので、うまくDBなども使えません。
コントローラーを使うかのようにバッチを使いたいです。
やり方が記載されているページなど有りましたらおしえてほしいです。
0374nobodyさん2010/06/24(木) 09:11:32ID:???
>>373
バッチ用のBootstrap&Dispatcherを作ればいいと思うよ。

面倒なのであればバッチからWEB呼び出しちゃえば?
file_get_contents("http://xxxxx/xxx");
0375nobodyさん2010/06/25(金) 01:30:49ID:AQc08b3W
ZFPlanetとWebf_Controller_Router_Cli
0376nobodyさん2010/06/27(日) 07:11:07ID:???
Saasesみたいな安くて使い勝手がいいVPSが出てきた今、
無理してPHP使う理由なくなってきたなぁ
0377nobodyさん2010/06/27(日) 10:36:41ID:???
えっ
0378nobodyさん2010/06/28(月) 02:58:43ID:???
えっ
0379nobodyさん2010/06/28(月) 13:39:35ID:???
無理してPHP使うってどういう場面だよw
PHPしか動かないレンタルサーバなんてまず滅多にないだろ
0380nobodyさん2010/06/28(月) 13:48:03ID:???
俺はZend Frameworkを使いたいからPHPを使ってるけど、PHP自体にはあんまり興味ない。
0381nobodyさん2010/06/28(月) 15:07:53ID:???
何でZendFramework使いたいの?
PHPの中では便利だけど、PHP以外でなら選択肢は山ほどあるだろうに。
0382nobodyさん2010/06/28(月) 15:18:21ID:???
どんな便利な選択肢があるんだ例えば
Railsとか死ぬほどクソだったわ
0383nobodyさん2010/06/28(月) 15:20:21ID:???
1.Kohana
2.SAStruts
3.Zend
4.Catalyst
5.Click

って感じだな俺の評価は
RubyやPythonはそもそも言語的に微妙
やっぱPerl、PHP、Javaでまとまっちゃうわ
0384nobodyさん2010/06/29(火) 10:12:03ID:???
>>383
PHPしかつかったことないWebプログラマなんだけど
RubyやPythonの方が言語的に微妙って
どの辺からそう感じるんだろうか
自分がPHP使ってて苛々することが多い上に
RubyやPythonの評価見てると逆だと思ってた
0385nobodyさん2010/06/29(火) 14:29:24ID:???
商売として微妙という意味じゃないかな

OOP流行りだからPHPは言わずもがな使い辛いとなる
ただ言語仕様守らない人にとっては何使っても一緒
0386nobodyさん2010/06/29(火) 18:46:44ID:???
RubyはPythonってのはマイナーだけにそれが好きで使ってる人しかいないから評価が高いだけ
好みに合わなくても無理矢理使わされる人が殆どいないからいい評判ばかり聞こえてくる
0387nobodyさん2010/06/29(火) 19:47:06ID:???
前は
Java(Servlet)+SpringMVC+Velocity+Jakartaいろいろ
を組み合わせてやってたけど、ちょっとしたサイトつくるときに
レンタルサーバで動かせないから
PHP+ZendFrameworkに移行したんだけど
上記の組み合わせとほぼ同じ感じで出来てるから満足してる。
0388nobodyさん2010/06/29(火) 19:51:06ID:???
あ、でもパフォーマンスはやっぱりJavaServletのほうがいいかな。
コンテナ起動中はApplicationスコープに変数保持してられるし、
PHPでもmemcachedとか使えばいいんだろうけど、手軽さが全然ちがう。
0389nobodyさん2010/06/29(火) 19:53:43ID:???
というわけで、常に専鯖使える環境だったらJava使うかなあ。
Apacheプロジェクトで良質なFW・ライブラリが選り取り見取りだし。
0390nobodyさん2010/06/30(水) 02:14:21ID:???
>>386
勘違い乙。
だいたいRubyやPython使ってる連中は他言語を使ってる。
ちゃんとつかって>>383みたいな評価するのは超少数派。
というか使ってるかどうかすら怪しい。
0391nobodyさん2010/06/30(水) 14:54:36ID:???
え?
0392nobodyさん2010/06/30(水) 15:32:22ID:???
>>390
勘違い乙。 返しw
0393nobodyさん2010/06/30(水) 15:52:01ID:???
個人的な使い心地で言えば、
手軽さと利便性はPHP、言語仕様としてはRubyを評価するかな。


PHPの気持ち悪い点

・namespaceの区切りがバックスラッシュ
・無理矢理っぽい無名関数
・try catchにfinalyが無い
・goto文
・引数の型チェックが中途半端(stringとか指定出来ない)
0394nobodyさん2010/06/30(水) 17:07:27ID:???
Pythonには勝てん。
0395nobodyさん2010/06/30(水) 17:22:46ID:???
気持ち悪さで言うと一番気持ち悪いのはRubyだろ。
0396nobodyさん2010/06/30(水) 17:44:40ID:???
Perlの事も(ry
0397nobodyさん2010/06/30(水) 17:58:24ID:???
RubyはDelphiっぽいだけで気持ち悪くはない
気持ち悪いけど
0398nobodyさん2010/06/30(水) 20:17:05ID:???
Javaは気持ち悪さはないけど面倒くさい

ていうかここZFスレね
0399sage2010/07/03(土) 00:16:16ID:???
1回だけPHP全般的なコト書いちゃうけれど

try catch の finaly は確かに欲しいね。
Ruby の入門書を見て便利だなと思ったのは、各文字列オブジェクトごとに文字エンコードをプロパティーとして指定できるところ。
0400nobodyさん2010/07/03(土) 05:10:13ID:???
>>393
>>399

同じtypo
0401nobodyさん2010/07/04(日) 16:17:02ID:???
PHPのtry catchってpythonみたいに既存のどんなerrorでも捕まえられるわけじゃないのね
0402nobodyさん2010/07/04(日) 20:37:45ID:???
errorを捕まえるためのものじゃないからね
0403nobodyさん2010/07/04(日) 20:38:37ID:???
てか、ZFと関係ないしw
PHPの初心者スレか、自分のブログに書いたらいいよ
0404nobodyさん2010/07/04(日) 22:41:57ID:???
ZF使って1つのサーバーでそれぞれ独立したサイトを
2つ以上立てようとするとキモくなる、なんで?
0405nobodyさん2010/07/04(日) 23:15:04ID:???
ZFは君を映す鏡
0406nobodyさん2010/07/04(日) 23:47:14ID:???
俺がZFで作ったサイトになら抱かれてもいいと思えるのはそういう事だったか
0407nobodyさん2010/07/05(月) 09:38:39ID:???
>>404

うちはVirtualHost別にmodule振り分けるRouter自作してやってるよ。
いい感じに疎結合になるし、管理も楽。
0408nobodyさん2010/07/05(月) 10:20:06ID:???
host名で振り分けるルートはもともとあるけど、Routerを自作する理由はなに?
0409nobodyさん2010/07/05(月) 13:01:04ID:???
>>408
Zend_Controller_Router_Route_Hostnameだと、

:hoge.fuga.com

とかやると:hogeが省略出来ないとか、
あと他にも理由あったような気がするけど
正規表現でHostnameマッチできるRouter自作した。
0410nobodyさん2010/07/05(月) 13:03:27ID:???
あ、あとmuduleにRouteされたときだけ
module用のPluginが登録されるようにした。
0411nobodyさん2010/07/05(月) 13:10:07ID:???
>>409
どのくらい複雑なHOST名にしてるのか知らないけど、
Hostnameでも複数ルートを登録できるから、その程度の理由なら自作しなくてもいいな。
他にも理由があったと言う他を思い出したら教えて

>>410はプラグインとZend_Applicationで処理するのが常道だけど、
Routerに書いてんの?Routerでプラグイン登録?まぁ、いいけど。
0412nobodyさん2010/07/05(月) 14:56:06ID:???
>>411
あ、RouterでPlugin登録してるわけじゃないよ。

Module別Bootstrapはあるけど、
Module別Pluginが欲しかったから
Routeされた段階で遅延登録されるようにした。

Host数=Module数は30個くらい?で、
その中でもさらにサブドメイン(?)をパラメータにして
いろいろやってた。

ちなみに今のバージョンでどうなのかは知らない。。
0413nobodyさん2010/07/05(月) 15:00:43ID:???
あとroutesの設定ファイルがXMLで
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:???
よくPlugin作ってdispatchLoopStartupに認証や共通処理をうんぬんって見るけどさ、
画像のリンクが切れてるだけでdispatchLoopStartup何回も走るとかうぜぇ・・
0418nobodyさん2010/07/14(水) 00:21:27ID:???
「画像のリンクが切れてるだけ」と事前に判別出来るなら、
dispatchする前に別処理へ移行すればいいだけの話だ
0419nobodyさん2010/07/14(水) 05:41:59ID:???
>>417
mod_rewriteで対処でしょ jk
0420nobodyさん2010/07/16(金) 15:47:04ID:???
Zend_FormでsymfonyにあたるsfFormのsetNameFormatってどうやったらいいの?
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:???
なぜか1.10.7がダウンロードできた
0424nobodyさん2010/08/07(土) 14:32:30ID:???
1.1から2.0は簡単に移行できるの?
0425nobodyさん2010/08/07(土) 22:28:35ID:???
2.0ってnamespaceとか使うから
簡単にはいかないんじゃない?
使わないの?
0426nobodyさん2010/09/01(水) 17:07:49ID:???
どうも。

MySQLを使用してるのですが、単純なサブクエリを実装して、
ZendFrameWork経由でデータを取得しようとしたのですが、
取得できませんでした。

発行しているSQLをコマンドラインで実行すると
ちゃんとデータを取得できました。


ZendFrameWorkってサブクエリが使用できないなどといった
制限があったりするのでしょうか?
04274262010/09/01(水) 17:14:57ID:1WzgUIV/
すみません。

バインドも使っています。
0428nobodyさん2010/09/01(水) 17:27:19ID:???
「できませんでした」の詳細を書かないとわからんわ
0429nobodyさん2010/09/02(木) 01:35:42ID:???
バインドされている値が間違ってるとかじゃね?
04304262010/09/02(木) 14:41:33ID:bqeUspcn
>>428 429

こんな感じの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
>>430
実際の呼んでる所のコードも書かないと分からんよ。
0432nobodyさん2010/09/03(金) 00:06:56ID:???
>>430
SQLエラーやPHPエラーは出ていない?

Zend_Db_Profilerやらで、Zend_Dbから発行されているSQL文を検証してごらん。
0433nobodyさん2010/09/04(土) 16:12:12ID:???
あ、自己解決しました。
04344262010/09/06(月) 11:06:46ID:???
>>433
まだ自己解決していないです。

>>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:???
>colB5=bind2

普通にここ、コロンがないよね
0436nobodyさん2010/09/07(火) 03:37:56ID:eLHDoNIE
よろしくお願いします。zend_dbのトランザクションを以下のようにしています

$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());
}

つづきます
04374362010/09/07(火) 03:39:11ID:eLHDoNIE
この処理で、$where_kihonの中で一カ所故意に間違えているので('uType=?', $uId)
echo "基本>".$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
Zend FrameworkのMVCモデルを使ってます。
エラーになった場合、ほとんどのケースで
'Invalid controller specified (error)'
のエラーメッセージしかでなくてどのが悪いのか
みつけるのにすごく時間がかかるのですが、
これが普通なのでしょうか?
0439nobodyさん2010/09/07(火) 11:57:19ID:???
設計が悪いとしか。ソフトの勉強した事無いでしょ?
0440nobodyさん2010/09/07(火) 12:48:16ID:an1mTvTq
>>439
工夫しないとそうなるということですね?
それについての資料などありませんか?


04414262010/09/07(火) 12:56:14ID:???
>>435
すみません。その箇所は転載時の発生した誤りになります。
実際はしっかりと「:」を入れているので、
SQLの構築でのエラーも出ていない状況なんです。

なんとも不可思議な感じです。
0442nobodyさん2010/09/07(火) 13:40:25ID:jaTKXsd6
>438
errorコントローラがないっていってるので作ってその中で(開発時のみ)色々情報出力すればOK
例外handlingはここ読むべし
ttp://framework.zend.com/manual/ja/zend.controller.exceptions.html
0443nobodyさん2010/09/07(火) 13:41:23ID:QU8+yQCW
>>441
DB側でログ取って、どんなSQLになっているか見てみて

>>438
エラーコントローラーを無効にして、エラーを表示したらいいよ。
0444nobodyさん2010/09/07(火) 15:07:59ID:an1mTvTq
>>442,443
ありがとうございます。調べてみます。
0445nobodyさん2010/09/07(火) 21:53:55ID:???
>>441
要は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();
04464262010/09/11(土) 16:05:36ID:???
>>443
SQLにも問題なさそうでした。
副問い合わせのバインド変数の名称に
別のものを指定すると、こちらの期待通りの動きになりました。

釈然としませんが、とりあえず、プレースホルダの名称を別のものにして
やっていってみたいと思います。
0447nobodyさん2010/09/15(水) 06:29:22ID:c+gNv7dN
>>446
DB側でログとってないでしょ。
うまくいったときと、いかないときと同じSQLが発行されているわけがない。

スペルミスでした、って正直に書けないのかな
0448nobodyさん2010/09/15(水) 10:49:01ID:???
いちいち余計なこと言わないと気がすまないのも面倒な性格だな。俺とかw
0449nobodyさん2010/09/15(水) 10:57:10ID:???
ZFをやるならdwooも覚えたほうがいいよ
zendは公式サイトで解説してるほどdwooを押してるからね
0450nobodyさん2010/09/15(水) 15:39:54ID:???
dwooってなんて発音するの?
0451nobodyさん2010/09/17(金) 01:02:51ID:???
ドゥヲゥ!!
04524492010/09/17(金) 12:21:09ID:???
一応ページはここね
http://devzone.zend.com/article/12322
0453nobodyさん2010/09/17(金) 14:55:33ID:???
公式と言っても、そのサイトはPHP関連の技術全般を紹介するブログみたいなもので
ZendがDwooを特別にプッシュしてるわけではないのでは?
0454nobodyさん2010/09/17(金) 15:27:29ID:???
Vikram Vaswaniさんがこういう使い方もできますよって紹介記事書いてるだけだな
SoftwareDesignとかWeb+DB Pressの記事みたいなもんだ
0455nobodyさん2010/09/17(金) 17:17:36ID:???
>>449
それ言ったらsymfonyだって解説してたわけだが
0456nobodyさん2010/09/18(土) 00:21:20ID:???
>>449
それ言ったら公式ドキュメントにはSmatryViewの作り方まで載ってるぜ
0457nobodyさん2010/09/18(土) 03:15:59ID:HoVONag+
質問なんだけど、リクエストオブジェクトで $_FILESに当たるものを取得するにはどうしたらいいの?
無理なのかな。無理だとしたらどうやって取得すべき?
getParam('picture')とかやったんだけど無理だった。すみませんが教えてください
0458nobodyさん2010/09/18(土) 13:16:26ID:???
Zend_Form_Element_File を調べて、関連記事から他人がどうやってるか見るよろし
0459nobodyさん2010/09/19(日) 00:06:18ID:uSiTgTXw
>>458
ありがとうございます
しかしzend_formって扱いにくいんで使ってないんだけど、$_FILESの制御のために導入するなんて…
みんなzend_form使ってるの? そんなに便利?
0460nobodyさん2010/09/19(日) 00:27:48ID:iCptYkYB
>>459
ドキュメント読もうぜ。
http://framework.zend.com/manual/ja/zend.file.transfer.introduction.html
0461nobodyさん2010/09/19(日) 03:19:18ID:???
馬鹿にはzendは無理。
■ このスレッドは過去ログ倉庫に格納されています