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/
0108nobodyさん
2010/02/25(木) 15:02:04ID:???0109nobodyさん
2010/02/25(木) 16:29:58ID:???確かに(苦笑
表現が悪かったです
コンポーネントなどは理解したのですが、基本的な事をおさえたつもりでした・・・
すみません、マジで聞いております
このModelフォルダの中にはいったいどんなものを入れて使うのかが分かりません
ControllerとViewは分かったのですが、Modelの概念が見えてきませんでした
ビジネスロジック、処理とか書かれていますが自分には良く分かりませんでした
マニュアルや本などでもサンプルコードや説明に、特にModelの事が書かれていたような記憶も無くて・・・
0110nobodyさん
2010/02/25(木) 16:32:38ID:???www
0111nobodyさん
2010/02/25(木) 16:59:25ID:???0112nobodyさん
2010/02/25(木) 17:46:33ID:???俺の学習した本なんかもControllerとViewのコードしか書かれていなかったし、説明もほぼ皆無と言えるほど何も書かれていなかったし
マニュアルでもコンポーネントの学習がメインになるだろうから、サンプルにはModel部の事なんて書かれていないし
基本的にFrontControllerとActionControllerが重要視されて解説されてるし
ネットで「ZendFramework Model」なんかで上位部だけ調べてみたけど、あんま具体的なものはないね
0113nobodyさん
2010/02/25(木) 17:47:41ID:???MVC知らんの?
0114nobodyさん
2010/02/25(木) 18:17:10ID:???アプリ全体=お前の人生
コントローラー=お前の思想
ウ゛ュー=お前の表現力
モデル=お前の脳みそ
0115nobodyさん
2010/02/26(金) 01:26:22ID:???php自体、mvcをきっちり分離出来ないからねえ。だから大規模サイト構築で問題有りまくり出し。
0116nobodyさん
2010/02/26(金) 01:29:53ID:???MultiCheckbox
Why Checkbox is upper?
I should lower it because its not beautiful.
0117nobodyさん
2010/02/26(金) 01:48:46ID:???え?
0118nobodyさん
2010/02/26(金) 08:27:54ID:bxfngNt4$stt= $this->_dbConn->query("INSERT INTO `{$tableCopy}`(uId,loginId,name1) VALUE('10000','hoge','taro')");
という処理をやっていますが、目当てのテーブルにデータがINSERTできません。
_dbConnなどDB接続のオブジェクトなどの要素がそろっているのは確認できていて、
ターミナルやmysqlAdminのmysqlのコマンドから直接同じSQL文を実行すればinsertできます。
var_dump($stt)すると、以下のエラーが出ますが、どういうことでしょうか?
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '10000' for key 1
既存データに該当カラムが10000のデータがあるという意味かと思いましたがそんなデータはありませんでした。
また、問題の(?)カラムは主キーです。
同じクエリなのに、zend(php)からだけ実行できないのが理解できません。何が原因なんでしょうか?
つづく
0119118
2010/02/26(金) 08:29:04ID:bxfngNt4ちなみに、処理全体の流れはトランザクションを利用していて以下のような処理になっています。
参考になるかわかりませんが良ければご確認ください。
(「今回の処理」部分がinsert失敗してもその下のUPDATE文は問題なく実行されます。)
try{
//トランザクション開始
$this->_dbConn->beginTransaction();
$chkRs= $this->_dbConn->query("SELECT * `{$table}` WHERE --");//where以下省略
if(!$chkRs){
return "false_nodata";
}else{
//↓ここが今回の処理
$stt= $this->_dbConn->query("INSERT INTO `{$tableCopy}`(uId,loginId,name1)
VALUE('{$chkRs['uId']}','{$chkRs['loginId']}','{$chkRs['name1']}')");
$this->_dbConn->query("UPDATE {$table} SET `role` = ? WHERE `preLoginPass`=? LIMIT 1", array($member,$tmpPass));
return "success";
}
}catch (Zend_Db_Statement_Exception $e){
$this->_dbConn->rollBack();
print($e->getMessage());
}catch (Exception $e){
print($e->getMessage());
}
0120nobodyさん
2010/02/26(金) 08:42:03ID:???エラーはちゃんとintegerにしろって書いてあるようにみえるけど。
0121nobodyさん
2010/02/26(金) 08:50:35ID:???なんか文章の書き方が同じように思える
少々ガラの悪いのが数人って感じ?
0122nobodyさん
2010/02/26(金) 09:32:08ID:???>>118
主キーに同じIDを使ってinsertはできないというエラー
バックアップかdirty更新をやりたいんだろうけど、
同じスキームにしないでコピー先に専用の主キーを振る方がよくね。
てか、重そうだなその処理。バックアップならSQLひとつでいけそうだけど。
あぁ、まぁ書いてるときりがないからこの辺でw
0123nobodyさん
2010/02/26(金) 10:01:08ID:???どうみても釣りw
0124nobodyさん
2010/02/26(金) 10:33:04ID:???0125118
2010/02/26(金) 16:21:38ID:???いただいたアドバイスを元に突き詰めてるんですが、原因がまだわかりません。
SQLが異常な動作をしてるみたいなので今はそっちの確認をしてますが
解決しなかったらまたこちらで相談させてください。
ほんとにすみません。
ありがとうございました。
0126nobodyさん
2010/02/26(金) 17:07:57ID:???0127nobodyさん
2010/02/26(金) 17:25:08ID:???0128125
2010/02/26(金) 17:34:46ID:???皆さんすみません、よく見たら最後のクエリ処理の後でトランザクションをcommit()してませんでした
最後のクエリのテーブルがMyISAMだからこいつだけ実行されてたんでした。
ありがとうございました。お騒がせしました。
0130nobodyさん
2010/02/26(金) 18:16:43ID:???そう>>4 もオレ
配列のechoがわからない奴がZend_Filter_Inputのエラーメッセージを
設定するとかありえないww
0132nobodyさん
2010/02/26(金) 19:25:12ID:???シンプルなものなんですが、$view->strに日本語を代入するとまったく表示
されずに、$view->str = '<b>foo</b>';だと「<b>foo</b>」と表示できます。
これはマルチバイト表示用の設定とかあるんでしょうか?
因みに、sjisとeuc-jpだと表示されずにutf-8だと表示されます。
---- index.php
require_once 'Zend/View.php';
$view = new Zend_View();
$view->str = '<b>マルチバイト</b>';
$view->setScriptPath('.');
echo $view->render('view.phtml');
---- view.phtml
<html>
<body>
<p><?php echo $this->escape($this->str);?></p>
</body>
</html>
0133nobodyさん
2010/02/26(金) 19:53:53ID:???0134132
2010/02/26(金) 21:41:26ID:???0135nobodyさん
2010/02/26(金) 21:52:25ID:???0136nobodyさん
2010/02/27(土) 15:37:06ID:???0137nobodyさん
2010/02/27(土) 16:57:04ID:???0138nobodyさん
2010/03/04(木) 20:52:09ID:iGtVy898値が入っていないパラメータを送るとき、自動的にカラであることをチェックして
自動的にNULLを入れて送信することって無理なの?
$hoge= $params['hoge'] != "" ? $params['hoge'] : NULL;
$db->update('book', array('hoge'=>$hoge),$db->quoteInto('aaa=?' ,$aaa));
みたいなことをいちいちやってるんだけど、効率悪いと言うか。
なにか上手いやり方ないですか?
0139nobodyさん
2010/03/04(木) 21:30:33ID:???0140nobodyさん
2010/03/04(木) 23:39:32ID:???0141nobodyさん
2010/03/05(金) 10:23:06ID:???0142nobodyさん
2010/03/05(金) 12:14:29ID:???0143nobodyさん
2010/03/05(金) 13:55:06ID:???0144nobodyさん
2010/03/06(土) 02:26:39ID:???0145nobodyさん
2010/03/11(木) 18:03:58ID:uuGJLteE判断するのはどうやったらいいんですか?
0146nobodyさん
2010/03/11(木) 18:39:23ID:???返り値で判断するかエラーメッセージがセットされてるの見るかcatchでとっ捕まえるか
0147nobodyさん
2010/03/11(木) 19:26:12ID:???0148nobodyさん
2010/03/11(木) 20:42:00ID:uuGJLteEどうもありがとうございます。
僕も返り値で判断したくて試してるんですけど、
$rs =$db->query("UPDATE ---");
var_dump($rs);
したところ、成功しても失敗しても$rsにはオブジェクトが入ってきますよね?
このオブジェクトをどう操作したら成功・失敗が判別できるのかわからない状況です。
無理なのでしょうか
>>147さんはクエリするたびに判定用のクエリを再度実行しているんですか?
0149nobodyさん
2010/03/11(木) 22:15:03ID:???全クエリのたびになんて実行してないよ。
エラーも例外も発生してないのに矛盾が発生して、DBのログにも何も出ず、
Zend_Dbのプロファイラーでも確認できなかった時とかは、selectして前後のデータを確認する。
エラーが出なくても、データベースの自動変換とかで意図しないデータになることがあるからね。
0150nobodyさん
2010/03/13(土) 12:35:39ID:EhIFVaNIZend Framework ってかなりイケてないですよね?
最近ちょろっと使ってみたんですけど使いにくくて仕方ないです。
このフレームワークそもそも有名なサイトでの使用実績とか全然ないし、
railsと比べた時こっち選ぶ理由が一個も見当たらない・・
0151nobodyさん
2010/03/13(土) 12:38:50ID:???肉屋に来て、まぐろがないって言ってるようなもの
http://www.google.co.jp/trends?q=Zend+Framework%2CRuby+on+Rails%2Csymfony%2Ccakephp&ctab=0&geo=all&date=all&sort=0
0152nobodyさん
2010/03/13(土) 14:59:16ID:???裏方ではけっこう使われてるんじゃね
0153nobodyさん
2010/03/13(土) 16:03:18ID:???どうもです。
自分の未熟なせいか良くわからないですが、定期的なメンテナンスの時に
異常を確認したときの検証作業って感じですね
データベースがそんなに不安定なものだとは知らなかったんで、教えてもらってよかったです
日常的なinsertやselect、updateの成功・失敗はどうしたら確認できるのかな
誰か良かったら教えてください
0154nobodyさん
2010/03/13(土) 17:02:24ID:???なんで有名なサイトで使われてないと思ったんだ?
0155nobodyさん
2010/03/13(土) 17:06:06ID:???http://www.coojin.com/detail/PHP%E5%A4%A7%E8%A6%8F%E6%A8%A1%E3%82%B5%E3%82%A4%28%E3%82%A8%E3%82%A4%E3%82%B1%E3%82%A2%E3%83%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BA%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%29+%5Ben%5D%E6%B4%BE/145600738
あとフレームワークごとの特徴くらいは調べようぜ
http://www.phppro.jp/article/framework/comparison.php
0157nobodyさん
2010/03/13(土) 18:48:06ID:???0158nobodyさん
2010/03/13(土) 19:53:10ID:???0159nobodyさん
2010/03/13(土) 20:05:04ID:???・ZFの自動育成はCakeほどではないが、その記事ほど酷いものじゃない。
・規模についてはまったく的外れではないけど、根拠がない
・スピードはsymfonyとZFではほとんど変わらない。symfonyが遅かったのは昔のこと
・その他の比較はsymfonyもCakeもZFも全部○
まったく特徴をとらえていない。
0160nobodyさん
2010/03/13(土) 21:33:58ID:???その求人、大規模ポータルサイトへの派遣で
経験1年以上の条件で設計からテストまで担当って
典型的な○○請負じゃまいか!
0161nobodyさん
2010/03/13(土) 23:17:06ID:???去年の暮れにうちの社のインフラの奴らがベンチ取ってZendに決めてた
0163nobodyさん
2010/03/13(土) 23:22:00ID:???最近のは結構イケてますよね
0164nobodyさん
2010/03/13(土) 23:28:04ID:???0165nobodyさん
2010/03/14(日) 01:58:17ID:???http://www.a-care.co.jp/
要するにエイケアはSIとかじゃなくてサービスする側の企業
0166nobodyさん
2010/03/14(日) 04:43:05ID:???派遣って書いてね?
っても偽装請負なんて茶飯事だけど
単金安いよなぁとか思ったけど,要求スキルも低そうだし残業出るなら
0167nobodyさん
2010/03/14(日) 07:27:06ID:???メルマガってもう流行らないよね
メルマガで当てた資金で開発にも手を出して、
開発のノウハウなんてないけど、人材だけ投入できますよ?
っていうハマりパターンはよくある。
腕に覚えがあるやつはチャンスかもな。
0168nobodyさん
2010/03/14(日) 08:41:20ID:???まだまぐまぐとか人雇ってたりしてたな。ヤバくて逃げ出した香具師の穴埋めか?
0169nobodyさん
2010/03/14(日) 09:34:00ID:???0170nobodyさん
2010/03/14(日) 14:26:22ID:???レベル低いな相変わらず
0171nobodyさん
2010/03/15(月) 04:09:50ID:???rss見て自分でチェックしろよ。
0172nobodyさん
2010/03/15(月) 10:00:30ID:???>>170
レベル低いな相変わらず。
メール自体がすたれるだろ JK
おまいら新しいサービスを作るために開発やってんじゃねーん?
メール配信が金になるってのは、それだけ大量配信に無理があるからだぜ
それでいて、メルアド間違ったり、メルアド変わったり、盗聴されたり
途中で消えたり、ろくなことないからなメールは。
0173nobodyさん
2010/03/15(月) 14:04:54ID:???0174nobodyさん
2010/03/15(月) 14:08:25ID:???で、実績は?
0175nobodyさん
2010/03/15(月) 14:16:40ID:???今はCodeIgniterを改造して使ってごまかしてる
0176nobodyさん
2010/03/15(月) 14:34:17ID:S0jC/HjUZend_Formをsakuraレンサバで動かそうかと思ったんだけどうまく動作しないんだ。
入力画面は表示されるんだけど、入力をしてsubmitぽちっとすると
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in
/home/ほげ/ZendFramework/library/Zend/Controller/Dispatcher/Standard.php:242 Stack trace:
#0 /home/ほげ/ZendFramework/library/Zend/Controller/Front.php(954):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /home/ほげ/ZendFramework/library/Zend/Controller/Front.php(212):
Zend_Controller_Front->dispatch() #2 /home/ほげ/www/contact/index.php(12):
Zend_Controller_Front::run('../../phplib/co...') #3 {main}
thrown in /home/ほげ/ZendFramework/library/Zend/Controller/Dispatcher/Standard.php on line 242
パスが通ってないような雰囲気を感じ取ってはいる。
でも色々パスをいじったりhtaccessいじったりしたけど解決せずで助けて頂きたい。
テストサイトやローカルでは動いたんだけどさくらだと動かなくて。。
ちなみにindex.phpはこんな感じです。
<?php
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Layout.php';
Zend_Layout::startMvc(array('layoutPath' => '../../phplib/contact/views/layouts/'));
Zend_Controller_Front::run('../../phplib/contact/controllers/');
あと他に状況を記載してほしい箇所があれば記載します。
0177nobodyさん
2010/03/15(月) 14:42:55ID:???0178nobodyさん
2010/03/15(月) 14:50:26ID:???エラーコントローラーを置かないならエラーハンドラープラグインを無効にするべき
0179nobodyさん
2010/03/15(月) 15:33:02ID:S0jC/HjUエラーハンドラープラグイン無効にしてみた。
画面真っ白になったからエラーログみてみたけど特にめぼしい情報はなかったー。
こんな風に無効にしたんだけど合ってるかな。
$front = Zend_Controller_Front::getInstance();
$front->setParam('noErrorHandler', true);
0180nobodyさん
2010/03/15(月) 15:38:15ID:???はやってある?
0181nobodyさん
2010/03/15(月) 19:22:03ID:S0jC/HjUので、付けたらエラー吐き出されたよ。
どうやらコントローラーの名前を正しく認識していないっぽい感じのエラーでした。
全然別のアクションにとんで全然別のビューを呼んでました。
なんでsakuraにした途端おかしくなったのか結局解明できなかったけれど
飛ぶ先を修正してフォームは動作するようになりました。
ありがとうございました!
0182nobodyさん
2010/03/15(月) 20:45:57ID:???工エエェェ(´д`)ェェエエ工
工エエェェ(´д`)ェェエエ工
0184nobodyさん
2010/03/16(火) 17:14:07ID:???0185nobodyさん
2010/03/16(火) 22:34:19ID:???0186nobodyさん
2010/03/16(火) 23:16:01ID:???0187nobodyさん
2010/03/16(火) 23:33:20ID:???ノ)ノ,(ノi
( (ノし
┐) ∧,∧ ノ いまだ!「通常の」…っと
..|( ( ....:::::::) (
 ̄⊂/ ̄ ̄7 ) ヽ lヽ,,lヽ
(/ 川口 /ノ ( ) やめて!
 ̄TT ̄ と、 ゙i
0188nobodyさん
2010/03/16(火) 23:44:10ID:???すまんね
It is up to 3 times faster than symfony 1.4 or Zend Framework 1.10
and consumes half the memory.
だそうな
http://symfony-reloaded.org/
0189nobodyさん
2010/03/17(水) 01:48:37ID:???0190nobodyさん
2010/03/17(水) 03:17:14ID:0MVPdABSと言う感じにアクションにアクセスするとき、あるパラメータがGetもしくはPostで
送られてくることが必須の場合、パラメータの不備を確認するにはどうしたらいいですか?
単純に考えたら$this->getRequest()から値をとって、
if(!$param){
//リダイレクトとか警告表示
}
とするんでしょうが、いろんなコントローラのいろんなアクションで共通して使える
必須パラメータの不備確認処理がないか考えています。
(エラーコントローラは存在しないコントローラへのアクセスの制御だからちょっと違うんですよね?…)
0191nobodyさん
2010/03/17(水) 03:36:30ID:???0192nobodyさん
2010/03/17(水) 05:52:30ID:???ルーターのルートで宣言する
アクションで使える共通機能が欲しいなら、アクションヘルパーを作る。
パラメータチェックぐらいなら、おれは Zend_Form
0193190
2010/03/17(水) 11:26:18ID:0MVPdABSなるほど。意見ありがとうございます。
>必須パラメータがなかったらそのアクションに来てほしくないなら、ルーターのルートで宣言する
これが答えかなーって思ったんですが、これってルーティング設定ってことですよね?
それだと、そのアクションにくる度にチェックすることになるから…
管理画面で、登録済みの料理のレシピがたくさん並んでて、「編集するレシピ名をクリックして編集画面に移動」て
感じなんですよね。
localhost/kanri/recipi?henshu=100 でレシピ番号100の編集画面を表示って感じで、
Getメソッドで必須パラメータを渡すけど、この形式のURLは編集画面のトップ画面に限られてるんです。
(確認画面・修正画面・登録画面へは全部postとセッションでheishu=100も渡すので)
つまり、トップ以外の編集画面は/kanri/recipiの形になるので、これだと教えていただいた
ルーティングで固める上の方法は使えないですよね?
やっぱり編集画面のトップ画面でだけ、個別に必須パラメータ($_GETで)のチェック入れるしかないでしょうか?
ちょっと情報不足でした、すみません。
0194nobodyさん
2010/03/17(水) 12:07:13ID:???形式をこだわらなければ現在あるルーティングで目的は達成できるけど、
もし形式を変更できないなら、それにあったルートクラスを書く方が、
オーバーヘッドはないしクリーンだよ
0195nobodyさん
2010/03/17(水) 12:19:44ID:???マニュアル(http://framework.zend.com/manual/ja/zend.db.table.html)の、例27などに出てくる、select()の引数のZend_Db_Table::SELECT_WITH_FROM_PARTというのが分かりません
コレはいったい何なのでしょうか?
自分の持っている本にも載っていませんし、ネットで検索しても良く分かりませんでした
APIでもコンストラクタだという事しか出てこないように思います
いったいコレは何の為に使っているのか分かる方がいましたら教えていただけませんでしょうか?
0197nobodyさん
2010/03/17(水) 12:58:21ID:???selectオブジェクトを作り、そのテーブル単独でfrom指定する
デフォルトでは、fromは自分で指定する。
0198nobodyさん
2010/03/17(水) 14:41:38ID:???0199nobodyさん
2010/03/17(水) 15:04:57ID:???0202nobodyさん
2010/03/18(木) 07:52:53ID:???Ruby on Railsって、なんで Rails on Rubyじゃないの?って思ってる
0203nobodyさん
2010/03/18(木) 12:29:21ID:???0204nobodyさん
2010/03/18(木) 13:07:10ID:???0205nobodyさん
2010/03/19(金) 06:54:15ID:???0206nobodyさん
2010/03/19(金) 11:40:36ID:2j6+t1LQZF1.9.7を利用しています。
端的に言うと、リクエスト時に全てのモジュールのブートストラップが呼ばれてしまいます。
出来れば、ルート直下と要求のあったモジュールの
ブートストラップだけ起動させたいのですが、
どう設定すればよろしいのでしょう?
ご教授願います。
application.iniで
resources.modules[] =
設定し、モジュール別にルーティングされている事も確認できてます。
0207nobodyさん
2010/03/19(金) 12:33:49ID:???これ、その関係の話。
■ このスレッドは過去ログ倉庫に格納されています