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/
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:???0459nobodyさん
2010/09/19(日) 00:06:18ID:uSiTgTXwありがとうございます
しかしzend_formって扱いにくいんで使ってないんだけど、$_FILESの制御のために導入するなんて…
みんなzend_form使ってるの? そんなに便利?
0460nobodyさん
2010/09/19(日) 00:27:48ID:iCptYkYBドキュメント読もうぜ。
つ http://framework.zend.com/manual/ja/zend.file.transfer.introduction.html
0461nobodyさん
2010/09/19(日) 03:19:18ID:???0462nobodyさん
2010/09/19(日) 04:20:52ID:???>無理なのかな。無理だとしたらどうやって取得すべき?
Zend_Formを使っていないのであれば、
リクエストオブジェクトを継承した$_FILESも取得出来る子クラスを作るのが良いかと・・・
(もし必要であれば、その子クラス中でZend_Formを使えばいいし)
0463nobodyさん
2010/09/19(日) 17:59:19ID:???TODO: OpenID 2.0 (7.3) XRI and Yadis discovery
がなくなってたから、
yahoo.co.jpやmixi.jpでログインテストしてみたんだけど、
エラーになっちゃう・・・
まだ対応してないのかな?
0464nobodyさん
2010/09/22(水) 17:02:23ID:???おれもそこそこ使ってきたけど、新規案件で使うべきか迷ってる
使うなら、2.0を試すべき?
0466nobodyさん
2010/09/23(木) 01:19:05ID:???ブートストラップ書けば大抵どうにかなる
ビューが無駄に適当でPHPそのまま
中のクラスが単体でも呼べる
外部モジュールのラッパークラスが多い
粗結合いいとこ取りだけどなんかperlぽい気がするんだよね
0467nobodyさん
2010/09/23(木) 02:38:04ID:???ZendFormは確かに使いづらいけども、他に選択肢がなくね?
ZendForm使わないで、フォームどうしてるの?
煽りとかじゃなくて普通に疑問なんだけど、
↓こんな感じなの?
<select name="Hoge">
<option value="1" <?php if ($value == 1) echo "selected"; ?>>
<option value="2" <?php if ($value == 2) echo "selected"; ?>>
</select>
0468nobodyさん
2010/09/23(木) 02:52:30ID:az/C8i5MView Helper 使えばいいんじゃね?
0470nobodyさん
2010/09/23(木) 04:12:58ID:???0471nobodyさん
2010/09/23(木) 04:36:38ID:???0473nobodyさん
2010/09/23(木) 10:21:11ID:???リリースタイミング的にphp5.3もしくは6でメンテ&追加開発していくので、
そのメリットを生かせるFWにしようかと。
0474nobodyさん
2010/09/23(木) 10:45:19ID:???0475nobodyさん
2010/09/23(木) 14:16:25ID:???0476459
2010/09/23(木) 16:26:48ID:???smartyと組み合わせてる。
zendformとsmartyが共存出来るかわからないけど、
smartyで自前の関数用意して
<select name="prefecture">
{$val|selecterChk:"prefecture"}
</select>
とかなんとかやって呼び出して解決する方法になれすぎちゃってzendFormに
入れなくなっちゃった。
0477nobodyさん
2010/09/23(木) 16:40:00ID:y1pwafIu以下のdelete処理を実行したところ
-----------
echo "picTblId>>".$picTblId;
echo "reportId>>".$reportId;
$where = array(
$this->_dbConn->quoteInto('id=?', $picTblId),
$this->_dbConn->quoteInto('reportId=?', $reportId)
);
$retP = $this->_dbConn->delete($t_pic, $where);
========
以下のエラーが出ました。
-----------
picTblId>>7
reportId>>41
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use
near 'WHERE `id` ='41' AND `reportId` ='41'' at line 9
========
エラー文の中で、`id`='41'ってなってるのが理解できません。7のはずでは?
また at line 9 となっていますが、このクエリ処理を書いているモデルファイル(.php)は
2000行くらいあって、この処理は9行目なんかに書いていません。
実際の9行目はクラスの宣言部分です。
どう考えたら良いのでしょうか、ご意見お願いします。
php5 ZF1.10です。
0478nobodyさん
2010/09/23(木) 17:11:52ID:???で、9行目ってのはSQL文の9行目じゃね?
0479477
2010/09/23(木) 18:00:12ID:y1pwafIuおお、どうもありがとうございます!
$where = array(
$this->_dbConn->quoteInto('id=?', $picTblId),
$this->_dbConn->quoteInto('reportId=?', $reportId)
);
var_dump($where);
としたところ、
array(2) { [0]=> string(6) "id='7'" [1]=> string(13) "reportId='41'" }
となりました。ちゃんと入ってる…
>で、9行目ってのはSQL文の9行目じゃね?
納得です。
生成されたクエリ文を表示する方法はないんでしょうか?
0480477
2010/09/23(木) 18:55:24ID:???詳細は下らな過ぎて書きませんが自分の凡ミスでした。
一つだけ気になってるんですが、Zend_dbクラスでの deleteメソッドで生成されるクエリ文を
確認する方法はないんでしょうか?
Zend_db_tableのselectメソッドだと __toStringを使って出来ますよね?
それに似たものはないのかなと…
0481nobodyさん
2010/09/25(土) 13:12:44ID:???なるほど、既存のリソース(pluginだっけ?)を生かせるし、そういうのはありですね。
偏見かもしれないけど、ZendのFormはせっかくPHPが柔軟な言語なのに、
なんか無理矢理オブジェクト指向にしてる気がする。
まあ確かに利点もあるとは思うけど、場合によってはデメリットも目立つよね。
べた書きなら数行で済むような簡単なフォームでもZendFormだと数十行になっちゃう事とかあるし。
特にSmartyと組み合わせる前提なら、ZendFormとは相性が悪いし、デメリットばっかりになりそう。
0482nobodyさん
2010/09/25(土) 13:25:53ID:???実行後でいいなら、profilerでできる気がする
$profiler = $dbAdapter->getProfiler();
var_dump($profiler->getQueryProfiles());
俺はdbAdapter直接触るような場合はいつも直接SQL作成して
$dbAdapter->query($sql);
でやってる。
これなら実行前にdumpなりなんなり出来るし。
0483nobodyさん
2010/09/25(土) 19:28:24ID:???状況によっては、すごいメモリ食いそうだけど
0484nobodyさん
2010/09/25(土) 23:16:09ID:???あ、factoryメソッドのオプションでprofile = trueみたいに指定する必要はあるね。
いつも開発環境では常にtrueにしてるから気づかなかった。
0485nobodyさん
2010/10/09(土) 15:33:32ID:1KEL8kwGzendDBでinsertなりupdateなりdeleteなりが正常に処理できたか確認したいんだけど
みんなどんな方法でやってますか?
しらべたらrowCountを見つけたけど、他に方法ないですか?
0486nobodyさん
2010/10/09(土) 17:17:01ID:???0487nobodyさん
2010/10/09(土) 17:37:49ID:c5ynP6XY今までフレームワーク無しでPHP使ってきたんだけど、最近ZendFrameworkを使ってみようかと思っています。でも、いまいち踏み切れません。(CakePHPのほうがいいのかな? と思ったり)
ZendFrameworkのメリット/デメリットを教えてもらえませんか?
0489nobodyさん
2010/10/09(土) 18:53:54ID:1KEL8kwG単純に、insertならちゃんとデータが登録されたか、updateなら変更されたか
そういうことを確認したいんです
それが確認出来るメソッドというか機能は備わってないんでしょうか?
0491nobodyさん
2010/10/09(土) 21:46:07ID:???かなり偏見かもしれないが、良くも悪くも
・CakePHPはウェブアプリケーション開発のためのFW
・ZendはPHPプログラムのためのFWって感じで、PEARの集まりみたいな感じ
web開発するにあたって、cakeならすんなりできる部分も、
Zendなら色々classを呼び出すなり、子クラス実装するなりしなきゃいけなかったりする。
Zendの方がハードルが高いのはまあ間違いない。
0492nobodyさん
2010/10/09(土) 22:19:17ID:???0493nobodyさん
2010/10/09(土) 22:27:33ID:v6/8xFVglastInsertId() とか使えばいいんじゃないの。
http://framework.zend.com/manual/ja/zend.db.adapter.html#zend.db.adapter.write.lastinsertid
0494nobodyさん
2010/10/10(日) 01:21:37ID:???ありがとうございます。
CakePHPとZendFrameworkは思想そのものが違う感じなんですね。
使いやすさを除いた、たとえばWebサービスや通常のサイトを作ったときの速度はどうでしょうか?
もちろん、それぞれの規模やプログラマ/エンジニアの腕によって大きくばらつくのはわかりきってるのですが・・・
どうしても「フレームワーク=ソースコードが太る」というイメージがあるので、実際に使って開発した感想も聞きたいです。
PHPプログラムはZendFrameworkの方が向いているということなので、一旦はZendFramweorkに挑戦してみたいとは思いました。
繰り返しの質問になりますが、よろしくおねがいします。
0495nobodyさん
2010/10/10(日) 01:32:12ID:???0496nobodyさん
2010/10/10(日) 01:49:57ID:???数年前と比べて、最近はハードウェアが高性能化してるからな・・・
「フレームワーク有りと、無しでは実行速度が2倍違う」と仮定しても、
0.01秒が0.02秒になるようなレベルで、体感速度は変わらない。
開発チームがフレームワークに慣れれば開発効率は数倍跳ね上がる。
コード肥大化による動作速度の低下を下げたいなら、
その人件費をハードウェアにつぎ込む方が低コストかつ、運用も楽。
そんな感じ。
0497nobodyさん
2010/10/10(日) 05:06:02ID:???0498nobodyさん
2010/10/10(日) 05:06:59ID:???0499nobodyさん
2010/10/10(日) 08:03:13ID:???人にもよるだろうけど、開発が早いのはcakeだと思うよ。
簡単なプログラムつくるならFW使うとソースは増える。
0501nobodyさん
2010/10/10(日) 17:09:41ID:???VPS十台借りても1万くらいだし
最初は一台で作って
重くなってきたら役割ごとに分割
それでも重いなら並列化
って感じで増やしてけば対した問題じゃない
もちろん、負荷、売上がちゃんと整合性取れる範囲の話だがフレームの問題じゃなくなる
0502nobodyさん
2010/10/10(日) 22:37:53ID:???ZendとかCakeとか、この手のPHPのフレームワークは負担が大きいので使わない。
0503nobodyさん
2010/10/10(日) 23:39:03ID:???ケースに困る?
YahooとかFacebookとか・・・君の請ける案件はそんなに大規模な案件ばかりなのかい?
多分、ここにいる人の大半は数人〜数十人規模の中規模開発者だと思うよ。
0504nobodyさん
2010/10/11(月) 00:50:45ID:???0505nobodyさん
2010/10/11(月) 01:03:04ID:???0506nobodyさん
2010/10/11(月) 02:41:41ID:???キャッシュサーバとか検討してるレベルだし
0507nobodyさん
2010/10/11(月) 11:21:25ID:???それぞれのチームが働きやすいようにもろもろ準備してるだけ。
しかも高付加なのはトピックとかの上位10%ほどのサービスを除けば、
中の下のエンジニアでハードウエアで済ますっていう世界だよ。
ま、おれはその中の下より下なわけだがw
0508nobodyさん
2010/10/11(月) 20:09:48ID:???いろんな意見ありがとうございます。
エクステンションの書き換えとか追加はまあ出来るんですけど、PHP全体の挙動を詳細に解析したことがあるわけじゃないので、思わぬ穴ができそうでやりたくないんですよね。
ハードの性能がある程度あれば、通常の開発規模では気にしなくていいことがわかりました。
実際にサービスをリリースして運用を開始してから、もし問題があればフレームワークの排除等も検討してみます。
ありがとうございました。
0509nobodyさん
2010/10/13(水) 17:49:35ID:9/s0PB03zend全く関係なくて申し訳ないんだけどアクセス数とCPUとメモリ教えてくれない?
0510nobodyさん
2010/10/18(月) 11:50:14ID:???アクセス数についてだけど、トピックに上がった記事で人気があると、
だいたい秒間200アクセスを超えてく。
CPU、メモリについては聞いてどうするな世界だな。
サーバーはごく普通のレベル。
自前のDCにDELLとかの平均的なサーバーを入れてるだけ。
0511nobodyさん
2010/10/18(月) 12:02:03ID:???0512nobodyさん
2010/10/18(月) 12:41:26ID:???0514nobodyさん
2010/10/18(月) 16:11:50ID:???0515nobodyさん
2010/10/18(月) 18:11:43ID:???なんでお前が俺の書き込みに答えてるんだよw
具体的な数字は言えないけどやってくるのが殆どアフィリタグ踏んでくるアクセスだから
DB書き込みやらんとならんし結構重いんだよね
むしろWebサーバってよりロードバランサやSSL処理の方が厳しい感じなのでサーバのCPUなんかは持てあましてる
10台用意してるのはどっちかというと障害対策や不意のピークのためだから
平時はピークでもせいぜい50%くらいしかリソース使わん
0516nobodyさん
2010/10/18(月) 21:04:03ID:???海外とかでもいいから知ってる人いたら教えて
0517nobodyさん
2010/10/18(月) 21:59:15ID:???// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
_____ _____ ______ _______
| ウェブ | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
._________________
|MVC sample │・検索オプション
└────────────────┘・表示設定
| Google検索 | I'm Feeling Lucky | ・言語ツール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◎ウェブ全体から検索 ○日本語のページを検索
0518nobodyさん
2010/10/19(火) 02:49:28ID:???0520516
2010/10/19(火) 09:19:22ID:???うまい人がどんな書き方(わかりやすさ・メンテナンスのしやすさなど)してるかを
いろいろと知って取り入れられるものはないかという探究心から聞いてみただけなのでないならないでいいんです。
0521nobodyさん
2010/10/19(火) 09:50:18ID:???IndexController
と書くところを
ModuleName_IndexController
ProjectName_IndexController
のように冗長に。
PDTで複数プロジェクト編集する時にクラス名が被るとコード補完が厄介なんだ・・・
何か上手い方法ないかね
0524nobodyさん
2010/10/19(火) 17:58:33ID:???コントローラ内でメソッド呼び出すとき、
$this->hogeXXXで保管しようとしたら、
他のプロジェクトの同名コントローラのメソッドがでてきちゃうんじゃね?
0525nobodyさん
2010/10/19(火) 19:56:12ID:???ControllerにAction以外のメソッド書くってこと?
private でも他のメソッド出てきちゃうんだっけ?
0526nobodyさん
2010/10/19(火) 22:05:23ID:zJOQfrg+Ver.1.10.8のZend_OpenId_Consumerの733行目に『/* TODO: OpenID 2.0 (7.3) XRI and Yadis discovery */』があるよ。
やっぱり、mixiのOpenIDだめだった。
0527nobodyさん
2010/10/19(火) 22:19:07ID:???0528nobodyさん
2010/10/19(火) 23:13:44ID:???コントローラ固有だったり、サイト全体で使うようなショートカットメソッドを登録する事があるんよ。
$this->log(); とか $this->getXxx() みたいなのを・・・
privateにしててもクラス名が同じだと補完対象にされてしまう。
コントローラにアクション以外書くのってまずい?
0529nobodyさん
2010/10/19(火) 23:28:47ID:???0530nobodyさん
2010/10/20(水) 04:30:26ID:???0531nobodyさん
2010/10/20(水) 12:10:17ID:???結構いろんなサンプルとかでやられてるよな
0532nobodyさん
2010/10/20(水) 13:31:25ID:???放置したほうがいいと思う。
$thisで同名他クラスのメソッド出てきちゃうのは
そのうちPDTのほうで対応されそう。
heliosで親クラスの補完が変だったのもSR1で改善されたし。
0533509
2010/10/20(水) 17:08:16ID:goNec+dl質問したの俺だよ、答えてくれてありがとう
サイトの運営ってプログラム書ければ良いワケじゃないんだね、
わかってたけどトラブル発生時の対応とか考えると大変だわ
みんなはプログラム書く以外にシステム設計とかもやってるの?
>アフィリタグ踏んでくるアクセスだからDB書き込みやらんとならん
これってアクセス解析のためだよね?
うーむ、勉強になったよ
0534nobodyさん
2010/10/21(木) 01:30:25ID:???>>532
Zend_Controller_Actionのコード見る限り、
普遍的なメソッドはController自体に登録してあるしね。
0536nobodyさん
2010/10/21(木) 05:14:21ID:???_fowerdとか_redirectとか他にも色々、てかコード読めよw
Actinは xxxAction って命名規則があるんだし、
ActionCtonroller = Actionのみを記述するものでは無いってこった
0538nobodyさん
2010/10/21(木) 07:16:01ID:???別に?無くてもコントローラとしては機能するよ。
俺がいいたいのは、コントローラにはアクション以外定義するのはおかしいなんて事は無い。
それだけだ。
■ このスレッドは過去ログ倉庫に格納されています