Zend Framework Part4
レス数が1000を超えています。これ以上書き込みはできません。
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/
0002nobodyさん
2010/02/10(水) 01:40:17ID:???容赦なく突っ込んでやるからケツ貸せよ。
0003nobodyさん
2010/02/10(水) 09:21:33ID:???<?php
require_once 'Zend/Filter/Input.php';
$data = array( 'price' => '' );
$filters = array( '*' => 'StringTrim' );
$valids = array( 'price' => array(
Zend_Filter_Input::ALLOW_EMPTY => FALSE
//Zend_Filter_Input::ALLOW_EMPTY => TRUE,
//Zend_Filter_Input::PRESENCE => Zend_Filter_Input::PRESENCE_REQUIRED )
);
$options = array( Zend_Filter_Input::NOT_EMPTY_MESSAGE => '%field%は空文字列を許可しません。' );
$in = new Zend_Filter_Input($filters, $valids, $data, $options);
if($in->isValid()) {
print('検証に成功しました。<br />');
} else {
print_r($in->getInvalid()); //[A]
}
を実行すると、ブラウザには
Array ( [price] => Array ( [isEmpty] => priceは空文字列を許可しません。 ) )
と出ますが、 これを「priceは空文字列を許可しません。」、と表示させるにはどうすればいいのでしょうか?
[A]の部分を単純にprintやechoにしても「Array」、としかブラウザに表示されないものですから
0006nobodyさん
2010/02/10(水) 09:51:06ID:???0008nobodyさん
2010/02/12(金) 22:56:41ID:Rluma8O9Zend_Db_Table::fetchOne()はなぜないのでしょうか?
0009nobodyさん
2010/02/12(金) 23:14:04ID:???みんなは一人のために
0010nobodyさん
2010/02/12(金) 23:39:35ID:???0011nobodyさん
2010/02/12(金) 23:42:53ID:Rluma8O9対の話ではないです。
Zend_Db::fetchOne()はありますが、
Zend_Db_Table::fetchOne()がなぜないのかなぁと。
0012nobodyさん
2010/02/12(金) 23:45:14ID:???ってあるの?
0013nobodyさん
2010/02/13(土) 00:55:50ID:???0014nobodyさん
2010/02/13(土) 00:56:54ID:???PKだけ入ってるテーブルって事になる
0015nobodyさん
2010/02/13(土) 00:58:51ID:vm0LKRH20016nobodyさん
2010/02/13(土) 07:00:36ID:???0017nobodyさん
2010/02/13(土) 13:05:28ID:???次にプログラマ向けリファレンスガイド見て覚えようと思い
まずZend_Controllerから見ていこうと思ったんですが、最初に最低限目を通して
おいた方がいいのはZend_何でしょうか?
0018nobodyさん
2010/02/13(土) 13:53:45ID:???ググる前にquickstartはおすすめ
http://framework.zend.com/manual/ja/learning.quickstart.html
http://framework.zend.com/manual/ja/learning.html
コンポーネント別では、Zend_Service_*がいいと思う
0019nobodyさん
2010/02/13(土) 17:01:12ID:vm0LKRH2それで解決しました。
>>!4
Tableだって一つの返り値あります。
0020nobodyさん
2010/02/13(土) 17:25:25ID:???0021nobodyさん
2010/02/13(土) 17:35:28ID:vm0LKRH2何でですか?
複数テーブルで運営してるので明らかに不便なんですけど。
0022nobodyさん
2010/02/13(土) 17:38:13ID:???0023nobodyさん
2010/02/13(土) 21:05:02ID:Vt3QKYJR一つのサーバでzendFWを使う複数のサイトを作るとき(バーチャルドメインとかで)、
zendFWのパッケージ(?)はサイトの数分インストールしなくても良いのでしょうか?
FWのインストールは一度限りで、applicationディレクトリやルーティング、
テンプレートへのパス設定をそれぞれのサイトのフロントコントローラでやるだけで、
それぞれ別のサービス・ルールとして動いてくれるんでしょうか?
PHPだって2つも3つもインストールしないんだから一緒だろうとは思ったのですが
FWが初めてなので質問しました。すみませんが回答お願いします。
0025nobodyさん
2010/02/13(土) 21:33:22ID:???PHPプログラマらしい質問だと思う
オブジェクト指向が解ってない
0026nobodyさん
2010/02/13(土) 22:21:13ID:???OneがないならAdapterって返答スレばいいのに>>25みたくオブジェクト指向的には〜みたいに言いがかりつけて。
使いたいように使えっていうのがZFの発想だからどう使おうが自由。
>>25
オブジェクト指向的な説明お願いします。
0027nobodyさん
2010/02/13(土) 22:28:01ID:???え?
0028nobodyさん
2010/02/13(土) 22:29:37ID:???オブジェクト指向のデータアクセスでどのデータが帰ってくるか解らないOneなんて無いんだから無いんだよって話だろ
帰ってくるのはオブジェクトかオブジェクトのリストなんだから
0029nobodyさん
2010/02/13(土) 22:45:51ID:???なぜ、そう言い切れるんだ?
Zend_Db_AdapterならfetchOneがあって、TableならfetchOneがない理由とは言えないよな。
テーブルゲートウエイパターンに忠実とかそういう話なら少しはわかるが、
オブジェクト指向のデータアクセス??そこんとこ詳しく教えてくれ。
0030nobodyさん
2010/02/13(土) 22:47:34ID:???http://framework.zend.com/manual/1.10/ja/introduction.overview.html
>我々はこれを "use-at-will (使いたいように使ってくれ)" 方式と呼んでいます。
え?
0031nobodyさん
2010/02/13(土) 22:55:51ID:Vt3QKYJRバリデートクラスをnewで作るのって、検証対象の値ごとに作るしかないんでしょうか?
たとえば$val= new Zend_Vlidate_GreaterThanInt(n)を3つ<input type=text>の値に対して
それぞれやるとなると当然3つですよね?(制限値nが異なる場合)
3つならともかくフォーム全体で20個newするなんてことになるとすごく冗長というか
もっと要領のいいやり方はないのか気になってしまいます
みなさん、素直に大量にnewするようなセオリーに従ったつくりにしていますか?
何か効率化のアイディアがあったらアドバイスいただけると嬉しいです。よろしくお願いします。
>>24
ありがとうございました、自信がもてなかったので助かりました。
003231
2010/02/13(土) 22:57:13ID:???>たとえば$val= new Zend_Vlidate_GreaterThanInt(n)
たとえば$val= new Zend_Vlidate_GreaterThan(n) でした
0034nobodyさん
2010/02/13(土) 23:12:29ID:???Validaterだけじゃなくて、decoratorもfilterも
ベンチとったわけじゃないけどね。なんとなく。
003631
2010/02/13(土) 23:50:18ID:???Zend_Form、そんなに画期的なんですか?
ありがとうございます、調べてみます。
>>34
インスタンス管理ってどんなことをするんでしょうか?
かなり恥ずかしい質問かもしれないです、すみません
php インスタンス管理/php インスタンス共有/オブジェクト指向 インスタンス管理
などでググって調べたんですがはっきりわかるものが出てきませんでした。
zend以前の質問かもですね…
うーん、、
0037nobodyさん
2010/02/13(土) 23:56:21ID:???変数に保存しておいて、setValidaterするだけ
0038nobodyさん
2010/02/14(日) 00:24:20ID:???すごく画期的。Javaの入力フォームみたいな感じで作れる。
フォームの作成とバリデーションを一緒にやってくれる。
ただ、デフォルトだと決まったレイアウトになるからそこら辺がいやでなければ断然こっち。
やりたいことを書くとこんな感じ
$form = new Zend_Form();
$form->setAction('/path/to/script')->setMethod('post');
$int = $form->createElement('text', 'int');
$int->setRequired();
$int->addValidator('GreaterThan', false, n);
$form->addElement($int);
0039nobodyさん
2010/02/14(日) 01:09:08ID:???どうもありがとうございます。
最初に変数に入れておくって、
(例として、今、GreaterThan.phpを開いてみているんですが)
$g = new ZendValidate_GreaterThan()//ここでは値を入れない
$chkParamA = $g->setMin(10);
if(!chkParamA->isValid($paramA)){//エラー出力}
$chkParamB = $g->setMin(5);
if(!chkParamB->isValid($paramB)){//エラー出力}
こんな手順でされているということでしょうか?
setValidatorというメソッド?がマニュアル見ても見つけられなかったので
ぜんぜん変なこと聞いてるかもしれないです、すみません。
しつこくてすみません、お返事いただけると幸いです。
ただこのやり方だとnewが減らせるだけで行数の多さは大して変わらないですね…
しょうがないのかな
>>38
わざわざありがとうございます。
パラメータの種類や名前と一緒にバリデータルールまでまとめて定義できるんですね
確かに楽だしすごいなー
ただ、<input name="userName[]" type="text" />を任意の数だけループ出力したり
n個目だけCSSのクラスを適用するような処理には向いてなさそうですね。。
テーブルに組み込んだりのレイアウトも癖がありそうだし…
上手に使い分けできるようにならなきゃだめですね〜
難しいけどできるようになりたいな。。
お二人とも、本当にありがとうございます
0040nobodyさん
2010/02/14(日) 09:47:20ID:???Zend_Form関係のsetValidatorsを使う
必要なValidatorのセットを作っておいてFormとかElementに設定して使う
> n個目だけCSSのクラスを適用するような処理には向いてなさそうですね。。
めちゃめちゃ向いている。
そのためのZend_Form
0041nobodyさん
2010/02/15(月) 13:14:36ID:???ドキュメントに理由が書いてないのですごく引っかかります。
0042nobodyさん
2010/02/15(月) 14:20:38ID:???で、他人の妄想を聞いてどうすんの?
0043nobodyさん
2010/02/15(月) 15:04:28ID:???聞いてみました。
明確に書いてあることなのでそれなりの理由があると思ったんですがなにかおかしなこと聞いていますか?
0044nobodyさん
2010/02/15(月) 15:11:15ID:???複数人で開発するときは、書き方が混ざったら読みづらくなるから
全員同じ書き方にあわせる
ただそれだけの話だ
0045nobodyさん
2010/02/15(月) 15:14:02ID:???このあたりとか、"タブ スペース"あたりでググるとそれ関連のがわんさかと。
http://blog.livedoor.jp/dankogai/archives/50475459.html
>>26じゃないけど、このスレは基本突っかかってくるからあんまり気にしない方がいいよ。
利用者がひねくれたフレームワークなのかもしれない。
0047nobodyさん
2010/02/15(月) 15:15:47ID:???PEARについて書いてあるけどたぶん理由は同じなので。
ttp://www.phppro.jp/phpmanual/pear/faq.tabs-vs-spaces.html
ZendはPEARの規約を引き継いだんだと思うけど
0048nobodyさん
2010/02/15(月) 15:52:24ID:???かといって、PHPの場合、テンプレ兼ねてるからタブだけガン無視も無理だし
0049nobodyさん
2010/02/16(火) 03:49:53ID:iRRBilsA・queryAction
・finishAction
の二つのアクションがあります。
queryActionではデータベースへのquery登録処理(insert)がされていて、
それが成功したら
$this->_forward('finish'); と、finishAction(完了画面)に遷移させています。
が、遷移後の画面で画面をリロードすると、再度クエリしようとしてしまいます。
どうしたらいいでしょうか?
リロードしても何も起こらないようにしたいのですが。。
0051nobodyさん
2010/02/16(火) 05:19:42ID:???PRG (POST-REDIRECT-GET) パターンが一般的かなぁ
他にはpostにチケットを入れといて、リロード時や2度押しを判別
0052nobodyさん
2010/02/16(火) 12:16:10ID:???それ用の処理関数はありますか?
0053nobodyさん
2010/02/16(火) 15:12:42ID:iRRBilsAそれで、sendmailの設定などしていたらpostfixに切り替えたい気持ちになってきました。
zend_mailはpostfixに対応してるんでしょうか?
php.iniのsendmail_pathをpostfixのに変更すればいいのでしょうか?
linuxのメールソフトに関してはsendmailよりもpostfixやqmailのほうがメジャーだという
傾向のようなのに、マニュアルやzFW徹底入門などを見ると、ソフトの切り替えに関して
書いていないので困っています。
zendMailを利用されている方、標準のsendmailのままで使ってるんでしょうか?
ご意見もらえると嬉しいです。
>>50-51
ありがとうございます。たすかりました!
0054nobodyさん
2010/02/16(火) 15:16:45ID:???トヨタ車でもホンダ車でも目的地に着けるのと同じ
0057nobodyさん
2010/02/16(火) 19:04:48ID:???1. sendmailからpostfixへの切替方法
2. phpでsendmailではなくsmtpでメール送信する方法
それぞれどこに聞くといいかちょっと考えてみて
Zend_Controllerをいじっててトイレに行きたくなったんだけどトイレはどこ?
そのレベル
0058nobodyさん
2010/02/16(火) 19:08:26ID:???メール出来るならZFでも問題なく使える。
ZFからスパムメール送るなら規制されて当然w
0059nobodyさん
2010/02/17(水) 02:08:15ID:QzZxEOBRhogeController/indexAction/
hogeController/aaaAction/
hogeController/bbbAction/
という構造のコントローラがあります。
この中のaaaActionで
$this->_redirect('/hoge/bbb'); としてbbbアクションにリダイレクトさせてるんですが
どういうわけかbbbへのリダイレクトの結果indexActionの処理が実行されています
(アクションの中身は以下のとおりです。)
public function indexAction(){
echo "indexAction";
}
public function aaaAction(){
//ここの処理に成功したら以下のリダイレクト
$this->_redirect('/hoge/bbb');
}
public function bbbAction(){
echo "bbbAction";
}
ブラウザのURLを見ると localhost/hoge/bbb となっているのに
ブラウザの画面では 「bbbAction」ではなく「indexAction」 とindexActionの結果が出力されるのです。
どんな原因が考えられるでしょうか?
0060sage
2010/02/17(水) 02:31:41ID:???returnを使ってください。
redirectだけではなくforwardも同様ですよ。
public function aaaAction(){
//ここの処理に成功したら以下のリダイレクト
return $this->_redirect('/hoge/bbb');
}
ちょうど素通りしましたのでご参考になれば。
0061nobodyさん
2010/02/17(水) 03:38:19ID:???こんな時間にありがとうございます
でも、そのreturnを冒頭に加える処理をしても結果は同じでした
そもそもなんでindexActionに転送するのか、
bbbActionの中に限らずredirect処理を実行してる場所なんて
どこにもないので困っています。
どんな原因が考えられるでしょうか?
006261
2010/02/17(水) 10:06:25ID:???原因はredirectの動作には関係ありませんでした
routingでbbbアクション用のルート設定をしてなかったのが原因でした
indexが出力されるのは/hoge/bbbのbbbをパラメータと判定されてたからでした
お騒がせしてすみません、ありがとうございました
0063nobodyさん
2010/02/18(木) 15:20:23ID:???0064nobodyさん
2010/02/18(木) 15:46:08ID:???0065nobodyさん
2010/02/18(木) 16:34:46ID:???0066nobodyさん
2010/02/19(金) 10:25:20ID:???ZF徹底入門(バージョンは1.5のようです)のP455の一番下に書かれていたのですが、後ろのリファレンス集には書かれていません・・・
昔のマニュアルなどには$cache->get()みたいに書かれて使われていたみたいなのですが、最近のマニュアルには書かれていませんし、APIにも出てきません
0067nobodyさん
2010/02/19(金) 12:35:08ID:???なんかの間違いでは
0068nobodyさん
2010/02/19(金) 14:06:08ID:???0069nobodyさん
2010/02/19(金) 14:28:05ID:vk4cE2QgZenf_Registryと勘違いしてないか?
0070nobodyさん
2010/02/19(金) 14:31:26ID:???自分も急にgetメソッドとか書かれて「?」って感じでその本をくまなく見てみましたがZend_Cache内では見当たらず、マニュアル、APIと探しましたがありませんでした
Web上では少なかったですが見つけましたが、推奨メソッドなのか良く分からなくて
もしかしたらどっかのバージョンで廃止になったかな、とも思いましたがバージョンアップ情報には書かれていませんでした
このサイト(http://itpro.nikkeibp.co.jp/article/COLUMN/20060810/245681/?ST=lin-server&P=3)にはgetが書かれていましたが、0.1.5という化石のようなバージョンで参考になりませんでした
0071nobodyさん
2010/02/19(金) 14:34:05ID:???えっ?
Zend_Cacheのページですし、Outputフロントエンドの項目の説明文中に書かれています
Zenf_Registryはこのコード、MVC内では使用されていないようです
getメソッドと書かれているくせに、サンプルコードにはいっさいgetは入っておりません
007271
2010/02/19(金) 14:36:38ID:???0073nobodyさん
2010/02/19(金) 16:12:47ID:g43faW/Y次の方どうぞ
0074nobodyさん
2010/02/20(土) 00:54:29ID:???> THIS METHOD IS DEPRECATED : USE LOAD() INSTEAD (same syntax) !
> it will be removed in ZF 1.1 !
なんで1.0じゃないの。。
0076nobodyさん
2010/02/21(日) 18:19:24ID:X8UnhclPzend_validator使ってるんですが、NotEmptyバリデータで警告文を設定しても
標準の警告が出てしまいます
$val_loginPass_empty = new Zend_Validate_NotEmpty();
$val_loginPass_empty->setMessage('パスワードが未入力です。', Zend_Validate_NotEmpty::IS_EMPTY);
if(!$chain_loginPass->isValid($params['loginPass'])){
foreach($chain_loginPass->getMessages() as $errMsg) $errMsgAry[] = $errMsg;
}
こんな処理で該当フォームを未入力で送信したところ、
# パスワードは6文字以上で入力してください。(文字数制限のバリデータもこの上で書いてます)
# ?? is an empty string
# パスワードが未入力です。
と出力されるのです。
ちなみにpost値をdumpすると ["loginPass"]=> string(0) "" となります。
何が原因でしょうか? ??は ' らしいですがそんなのどこにも入れてないんですが…
他の箇所のNotEmptyでは設定した警告文以外でません。。
どなたかご意見よろしくお願いします。
0080nobodyさん
2010/02/22(月) 11:06:23ID:???エラー内容は以下の通りです
Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'ja'' in
C:\php\includes\Zend\Currency.php:277 Stack trace: #0 C:\php\includes\Zend\Currency.php(333): Zend_Currency->_checkParams(NULL,
'ja') #1 C:\php\includes\Zend\Currency.php(518): Zend_Currency->getShortName(NULL, 'ja') #2 C:\php\includes\Zend\Currency.php(99):
Zend_Currency->setLocale(NULL) #3 C:\Apache2.2\htdocs\Zend\currency\toCurrency.php(4): Zend_Currency->__construct() #4 {main}
thrown in C:\php\includes\Zend\Currency.php on line 277
自分には良く分かりませんでした
008180
2010/02/22(月) 11:08:15ID:???PHPは5.2.12です
008280
2010/02/22(月) 11:25:50ID:???今、バージョンによって駄目なのかと思い、最新版の1.10.1にしたのですが、今度も
Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'ja'' in
C:\php\includes\Zend\Currency.php:548 Stack trace: #0 C:\php\includes\Zend\Currency.php(101): Zend_Currency->setLocale(NULL) #1
C:\Apache2.2\htdocs\Zend\currency\setFormat.php(4): Zend_Currency->__construct() #2 {main} thrown in
C:\php\includes\Zend\Currency.php on line 548
のようなエラーが出ました(ライン数は大きく変わっていますが)
Zend_Localeが影響してエラーが出るとか何かで読んだ気がするのですが、Zend_Translate、Zend_Date、Zend_Measureなどは普通に動作しておりました
0083nobodyさん
2010/02/22(月) 12:20:57ID:???ja_JPにしてみたらどう?
0085nobodyさん
2010/02/22(月) 19:06:49ID:???もう疲れたよ
0086nobodyさん
2010/02/22(月) 20:11:47ID:???必要になったら調べるだけ
0087nobodyさん
2010/02/22(月) 20:29:21ID:???今コンポーネントっていくつあるんだっけ?
70あるかないかってとこかな?
0088haruna
2010/02/23(火) 14:59:27ID:p7GWr9xn例えば、C:\Apache2.2\htdocs\ZF2\Chapter02-02内のHogeControllerのpiyoActionにアクセスしたいので、http://localhost/ZF2/Chapter02-02/Hoge/piyoのように記述しましたがエラーが出ました。
本書にはhttp://localhost/Hoge/piyoでアクセスしていますが、コレで実行しても案の定駄目でした。
この場合、どのようにURI記述すればアクセスできるのでしょうか?
フォルダ構成は以下の通りです。
Chapter02-02 --- html--index.php
|
---application
|---models
|---views
|---controllers
|---HogeController.php
|---ErrorController.php
0089nobodyさん
2010/02/23(火) 15:14:19ID:???0090nobodyさん
2010/02/23(火) 15:36:27ID:???URIの前にlocalhostにアクセスできてないでしょ
009188
2010/02/24(水) 09:18:28ID:???>>89-90
設定はおかしくないはずなのですが・・・
この前にZendFramework徹底入門をやって、しっかりとZFは動作していましたし
PHP、Apache設定はずっと使っていて何の問題も無いので大丈夫だと思います
ZFはパスの書き方がちょっと癖があるのでChapter02-02の部分が悪いのかと思ってフォルダ名をtestとかに変えても駄目でした
徹底入門のサンプルと同じhtdocsに入れているのですが、どうして出来ないのかと思いまして
サンプルのコードを色々と見てみたのですが、悪そうな部分もなく、パスも大丈夫だと思ったのですが・・・
>>88は知人にメールを送って書き込んでもらったのでちょっと線がずれているようですので書き直します
Chapter02-02 --- html--index.php
|
---application
|---models
|---views
|---controllers
|---HogeController.php
|---ErrorController.php
((index.php))
<?php
require_once 'Zend/Controller/Front.php';
$front = Zend_Controller_Front::run('../application/controllers');
((HogeController.php))
<?php
require_once 'Zend/Controller/Action.php';
class HogeController extends Zend_Controller_Action
{
public function piyoAction()
{ }
}
009289
2010/02/24(水) 09:51:56ID:???htdocsがDocumentRootなわけね
で、RewriteBase設定は /Chapter02-02/html/ になってると
ここまでの設定はおかしくないはずと・・
0093nobodyさん
2010/02/24(水) 09:52:00ID:???じゃぁ、設定は変えなくていいね。
0094nobodyさん
2010/02/24(水) 09:52:51ID:???0095nobodyさん
2010/02/24(水) 09:56:00ID:???009689
2010/02/24(水) 09:58:17ID:???だからRewriteBaseは /ZF2/Chapter02-02/html/ になるかな
0097nobodyさん
2010/02/24(水) 10:39:30ID:???009888
2010/02/24(水) 12:00:03ID:???本書のサポートページがなくて、また、質問は受け付けていないようなのです・・・
>>皆さん
ありがとうございました
解決いたしました
確かに、RewriteBaseのパスを間違えていたようでした
ほんとごめんなさい
0099nobodyさん
2010/02/24(水) 23:57:57ID:siRy84kxコントローラの読み込みがうまくいかないのですが何が原因でしょうか?
エラーは以下です。
PHP Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)'
in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241\nStack trace:\n
#0 /usr/lib/php/Zend/Controller/Front.php(936): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
Object(Zend_Controller_Response_Http))\n#1 /var/www/html/index.php(35): Zend_Controller_Front->dispatch()\n
#2 {main}\n thrown in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php on line 241, referer省略
コントローラ名が単純でなく、命名規則に反してるのか、あるいはルーティングがおかしいのかと思ったのですが
自分ではわかりませんでした。すみません、ご意見お願いします。
■URLは
http://localhost/admin-spot/
■コントローラ(/var/www/application/Controllers/AdminSpotController.php)
<?php
require_once 'Zend/Controller/Action.php';
class AdminSpotController extends Zend_Controller_Action {
public function init(){ }
puglic function indexAction(){}//何も書いてません
}
■viewスクリプト(/var/www/application/smarty/templates/default/admin-spot/index.tpl)
中身はhtmlタグだけでできていて、smartyタグは入ってません(エラーの要素ないかなと。。)
■ルーティング
routes.adminSpot.route= "/admin-spot/*"
routes.adminSpot.defaults.controller= "AdminSpot"
routes.adminSpot.defaults.action= "index"
routes.adminSpot.type = "Zend_Controller_Rou
長くなってしまいすみません、よろしくお願いします。
0100nobodyさん
2010/02/25(木) 00:09:52ID:???もしくは、
$front->throwExceptions(true);
して、エラーの原因を探ってみて
010199
2010/02/25(木) 00:27:05ID:nHRZ8Mu+すばやいレスありがとうございます。
ルーティングの設定やコントローラ名・ファイル名などはあれで問題ないのでしょうか?
フロントコントローラの一番下に
$front->throwExceptions(true);
と追記しましたが、画面は真っ白のまま、エラーログも同じ変わりありませんでした
0102nobodyさん
2010/02/25(木) 00:40:49ID:???Zend_Applicationを使ってるなら、
設定ファイルで↓のように書く
frontcontroller.throwexceptions = 1
正しく動いてないなら、なんか間違ってる。
設定とかファイル名なんて、全部見ないとわからないよね。
010399
2010/02/25(木) 01:08:47ID:???zend_applicationは使ってません。
フロントコントローラは以下のようにしましたが、おかしいでしょうか? 本当にたびたびすみません
require_once 'Zend/Controller/Action.php';
$front = Zend_Controller_Front::getInstance();
//ルーティング
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('myRoutes.ini', 'myApp');
$router = $front->getRouter();
$router->addConfig($config, 'routes');
/* 以下デフォルト */
$front->setControllerDirectory(APP.'/controllers');
$view = new Zend_View_Smarty();
$render = new Zend_Controller_Action_Helper_ViewRenderer($view);
$render ->setViewBasePathSpec(APP.'/smarty')
->setViewScriptPathSpec(':module/:controller/:action.:suffix')
->setViewScriptPathNoControllerSpec(':action.:suffix')
->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($render);
$front->dispatch();
$front->throwExceptions(true);
$front->dispatch();と$front->throwExceptions(true);を入れ替えても同じエラーが出ています
0104nobodyさん
2010/02/25(木) 01:22:05ID:???をdispatchより上に
で、問題がsmartyなのかrouteなのか、標準に戻して切り分けてみたら?
0105nobodyさん
2010/02/25(木) 08:19:42ID:???http://pc11.2ch.net/test/read.cgi/php/1266229386/
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1257701535/
△▲ WebProg 初心者の質問 Part21 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1167984858/
俺が初心者にPHPを伝授する
http://pc11.2ch.net/test/read.cgi/php/1169024172/
PHP相談室 1
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1158647441/
くだらない質問でもど偉そうに聞いていいスレ
http://pc11.2ch.net/test/read.cgi/php/1162858489/
【お題】PHP学習課題スレ【出せや】
http://pc11.2ch.net/test/read.cgi/php/1213919075/
PHP関連の書籍 第6版
http://pc11.2ch.net/test/read.cgi/php/1139746974/
中学生がPHPを習得するスレ
http://pc11.2ch.net/test/read.cgi/php/987560391/
初心的な質問なのですが・・・・
http://pc11.2ch.net/test/read.cgi/php/1131016915/ 【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1188135310/ こんにちは、PHPプロの方。教えてください。
http://pc11.2ch.net/test/read.cgi/php/1147830986/ 【PHP】Lvうpしたいので宿題ください
http://pc11.2ch.net/test/read.cgi/php/1168761226/ PHP上級者が集まるスレ
http://pc11.2ch.net/test/read.cgi/php/1062053369/ 【PHP】1が必死にPHPを勉強するスレ
http://pc11.2ch.net/test/read.cgi/php/996521284/ PHPを教えることになりました
http://pc11.2ch.net/test/read.cgi/php/1005203165/ PHP作成代行してくれるところ
0106nobodyさん
2010/02/25(木) 14:55:31ID:???しかし、気がついたのですが、コントローラーとヴューは使用しているけれど、モデルってのを一度も使ってきませんでした
色んなサンプルでも上記の2つだけ利用して、モデルは空っぽでした
このmodelという機能は何に使うのでしょうか?
0107nobodyさん
2010/02/25(木) 14:56:47ID:???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:???これ、その関係の話。
0208nobodyさん
2010/03/19(金) 14:10:39ID:2j6+t1LQありがとうございます。
翻訳して読みましたが、よく分かりません…
プラグインでモジュール確認するとか。
やりたいことは、全体のHPの一部のコンテンツにDBを利用した
システムがある。このコンテンツだけ分離したくてモジュールに
しようと考えました。レイアウトも別にしたかったし。
defaultモジュール:HP全体モジュール
appモジュール:dbを利用したコンテンツ
何か良い方法あるのでしょうか?
0209nobodyさん
2010/03/19(金) 15:04:30ID:???国産フレームワークにしとけ。
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1186096518/
【PHP】Ethna part.2【国産フレームワーク】
http://pc11.2ch.net/test/read.cgi/php/1172328149/
2ch有志がPHPフレームワークを作るスレ
0210nobodyさん
2010/03/19(金) 15:07:32ID:iYK3Oj1qそのブログで書いてあるのは、モジュールを検知して動作するプラグインを書けば?という話
モジュールのpluginsディレクトリにプラグインを置くとautoloadされる。
そのプラグインは現在のモジュール名とリクエストが一致してたら仕事をする。
モジュール別bootstrapでそのプラグインをフロントコントローラーに登録。
そんな感じ。
0211nobodyさん
2010/03/19(金) 15:47:42ID:2j6+t1LQdb部分は、MySQLによりDMLは全てプロシージャで作成したので
Cakeは断念しました。
>>210
解りやすい解説ありがとう。よく分かりました。
探してたら↓こんなんありまして、何とかやってみます。
http://blog.easytech.com.ar/2009/08/04/initializing-only-one-module-per-request-in-zend_framework/
0212nobodyさん
2010/03/19(金) 16:02:16ID:iYK3Oj1qいろいろあるみたいだよね。
手前みそだけど、こんなんでよかったらあるよ。改造のヒントにでもどうぞ。
・指定したモジュールだけにイベントを送るブローカー
http://github.com/noopable/Flower/blob/master/library/Flower/Controller/Plugin/Broker.php
・リソースのロードをLazyにできるモジュール別ブートストラップ
http://github.com/noopable/Flower/blob/master/library/Flower/Bootstrap/Module.php
0213nobodyさん
2010/03/19(金) 17:30:31ID:2j6+t1LQ下のリソースのロード制限は解りやすいですね。
ありがとうございます。
これは、各モジュールのブートストラップでinit〜作って
呼べばよいですよね?
0214nobodyさん
2010/03/19(金) 18:00:26ID:???えっと、すんません。解説がないんでアレですけど。。
わかりにくいようだったら、スルーしてもらっていいっす。恥ずかしいのでw
下の方は、リソースを必要とするまでinitしないためのものなので、
モデルとかサービスリソースを作ったときに、idleresourcesとしてresourcesと
同じように指定するとスタンバイになって、使われるときに初めて
getResourceでinitされます。
モジュール別に対応するには、上のやつをプラグインとして登録したうえで、
splObserverを実装したクラスならなんでも、モジュール名と一緒にプラグインに
attachすると、プラグインのイベントをupdateメソッドに送ってくれます。
なので、今回のケースだと、モジュール別BootstrapにsplObserverを実装して
updateメソッドで、遅延ロードしたいリソースをbootstrapするとOKなんですけど・・・
0215nobodyさん
2010/03/20(土) 10:54:26ID:ZDcRVlf5遅くなりました…
ご説明感謝します。
initしないためのものでしたかw
無知ですいません。
sqlObserverは使ったこと無いので勉強しないと理解できないです…
何となくですが、必要な時に初めてinit〜としてresourceを
生成ってことかなと。
0216nobodyさん
2010/03/20(土) 18:42:46ID:4HvTXNoM0217nobodyさん
2010/03/20(土) 19:24:26ID:ZDcRVlf5またお世話になると思うので宜しくお願いします。
0218nobodyさん
2010/03/20(土) 23:21:56ID:???Zend_Db_Table_SelectにlimitをしてZend_Paginator無視されてしまうのですが何か良い方法はないでしょうか?
$select = $db->select()->limit(100);
Zend_Paginator::factory($select, 'DbTableSelect');
としてもlimit(100)が無視されてすべてのデータが入ってしまいます。
0219nobodyさん
2010/03/23(火) 11:35:31ID:7nF+H1X7自分は名前つきプレースホルダの形でqueryメソッドしているんですが…
今日みたモンベルのサイトがsqlインジェクションで大被害という話をみて気になっています
0220nobodyさん
2010/03/24(水) 10:34:51ID:???0221nobodyさん
2010/03/24(水) 12:26:22ID:???早いか遅いかは自分で確かめろ
0222nobodyさん
2010/03/24(水) 14:01:12ID:???zf使わなくても重いサイトはいくらでも作れる。pearで逐一sql発行してみたりとか。
0223nobodyさん
2010/03/24(水) 23:53:42ID:???でも体感は出来ない。そんな感じ。
0224nobodyさん
2010/03/25(木) 10:25:51ID:???やっぱある程度の規模の大きさに成長がみこまれるサイトというのはFWは使わない方がいいのでしょうか?
最初ZFなどのFWで構築すると後から変更などで大変になるのでしょうか?
0225nobodyさん
2010/03/25(木) 10:40:05ID:???トラフィックとかユーザー数とか複雑さとかデータ量とか、全部コミコミで話をしてるの?
多分、FWを使う使わないというより他に大事なことがたくさんあって、
それ抜きに結論は出ないと思う。
0226nobodyさん
2010/03/25(木) 11:16:58ID:???>トラフィックとかユーザー数とか複雑さとかデータ量とか、全部コミコミで話をしてるの?
はいそうです
>多分、FWを使う使わないというより他に大事なことがたくさんあって
デザイナーとかプログラマーとの兼ね合いとかそういう事でしょうか?
ZFはライブラリ的な一面もあるので他のFWよりは(他のFWは使触ったことはないのですが)柔軟性があるのではないかと勝手に思っているのですが、
例えばPHPじゃなくてJAVAでしっかりしたサーバサイドを作ろうとか、今のこのシステムではパフォーマンスの面や発展性の問題できついものがあるのでもうちょっと改良したい、
といった場合が出たときにやはりFWで構築していると変更に手間取ることがあるのかな、と思いまして
ショッピングサイトとか企業サイトとかはFWで構築しても特に問題はないかかと思いますが、(表現が悪いかもしれませんが)ユーザー志向の動的なコンテンツを提供する場合どうなのかなと思いまして
例えば掲示板とかblogとかを提供したり、フォトサイトとかのようにユーザーがファイルやテキストをアップロードしたりといったサイトの場合です
最初のうちはFWを使用しててもいいと思うのですが、拡張性を考えると自分たちで大変でしょうが最初からPHPを打ち込んでいく方がいいのかなと思いまして
説明が下手ですみません
0227nobodyさん
2010/03/25(木) 11:22:48ID:???手書きかFWかというレイヤーの話とは違いますよ。
0228nobodyさん
2010/03/25(木) 13:23:18ID:???基本作り直し覚悟で模索するしかないよ。経験無いみたいだし。
もしくは成長しなくて金が無駄に成っても最初から、javaで作っておくか。
自分たちでphp素でzfクラスのフレームワーク作れるほうが稀だと思う。
0229nobodyさん
2010/03/25(木) 20:43:13ID:???0230nobodyさん
2010/03/26(金) 01:07:35ID:0qaztAUz0231nobodyさん
2010/03/26(金) 02:20:12ID:???0232nobodyさん
2010/03/26(金) 02:39:10ID:???0233nobodyさん
2010/03/26(金) 04:07:42ID:O2gk3ied機能規模のことを言ってるなら、間違いなくコーディング規約なりFWなりで縛るのが吉
アクセス規模の事を言ってるなら、単純なRESTのレスポンスにまでFW使うのはどうかな〜と思い始めてる。
rubyでRoRとかpythonで mod_wsgi + 好みのFW とかなら話は別なんだろうけど
0234nobodyさん
2010/03/26(金) 13:38:23ID:???0235nobodyさん
2010/03/27(土) 18:57:25ID:???それだけじゃ使い物にならないところが。
0236nobodyさん
2010/03/28(日) 02:03:26ID:???フレームワーク使って、htmlとpearごりごり描くの狩らぬけ出すだけでも導入効果有るよ。
0237nobodyさん
2010/03/30(火) 20:43:09ID:???Zend_config_Writer_Iniするとクオート付きになってしまいます。
foo = 1234を読み込んで書き込むと
foo = "1234"となる
対策法はありませんか?
0238nobodyさん
2010/03/31(水) 06:55:05ID:???0239nobodyさん
2010/04/01(木) 08:41:41ID:???http://pc11.2ch.net/test/read.cgi/php/1268835461/
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1158647441/
くだらない質問でもど偉そうに聞いていいスレ
http://pc11.2ch.net/test/read.cgi/php/1068190843/
親切な人が初心者にPHPの関数を使い方を教える
http://pc11.2ch.net/test/read.cgi/php/1257701535/
△▲ WebProg 初心者の質問 Part21 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1167984858/
俺が初心者にPHPを伝授する
http://pc11.2ch.net/test/read.cgi/php/1172205352/
PHPでOOP
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1214323962/
[PHP-usersヲチ11]全部読むと裏技があるのでしょうか
http://pc11.2ch.net/test/read.cgi/php/1188789351/
【PHP】PEAR Part3
http://pc11.2ch.net/test/read.cgi/php/986146208/
PHPで作られたサイト
http://pc11.2ch.net/test/read.cgi/php/1152776176/
【勉強するのは】PHPとPerl【どっちが最初?】
http://pc11.2ch.net/test/read.cgi/php/1253091690/
php+mysql = オワタ
http://pc11.2ch.net/test/read.cgi/php/1018597325/
php5これでCGIはphp1色の時代へ
http://pc11.2ch.net/test/read.cgi/php/1213919075/
PHP関連の書籍 第6版
http://pc11.2ch.net/test/read.cgi/php/1169024172/
PHP相談室 1
0240nobodyさん
2010/04/01(木) 23:02:16ID:???zendについているソースはすべて見ました。
daoやキャッシュなどをフルに利用した参考になるソースありましたら教えて欲しいです。
ディレクトリの構成やDBコネクション、エラー定義などを参考にしたいです。
0241nobodyさん
2010/04/01(木) 23:35:40ID:???http://www.live-commerce.com/
0242nobodyさん
2010/04/02(金) 00:37:50ID:???お勧めは
storefront
http://www.ohloh.net/p/zfstorefront
TomatoCMS Omekaもなかなかよいよ。
live-commerceを見るのは最後にした方がよさげ。
0243nobodyさん
2010/04/08(木) 18:48:06ID:hISebTnv$query->where("column1 = ? and column2 = ?", array('abc', 'def'));
こんな感じでzend_db のwhere 関数で?(プレースホルダ)を複数使いたいんですが、うまくいきません。
プレースホルダを複数使うのってできないのでしょうか?
0245nobodyさん
2010/04/08(木) 20:21:47ID:hISebTnv教えてクレヨン
0246nobodyさん
2010/04/08(木) 21:59:06ID:???->where('column2 = ?', 'def');
0247nobodyさん
2010/04/09(金) 10:10:00ID:TIvOx/xscolumn = 1 and (column2 = 2 or column3 = 3)
みたいな場合についてでした。
この場合orWhereを数珠つなぎすると思った通りにならんのです・・
プレースホルダ使わなければなんとかなるのですが。
0248nobodyさん
2010/04/09(金) 10:31:31ID:???0249nobodyさん
2010/04/09(金) 10:43:22ID:???> column = 1 and (column2 = 2 or column3 = 3)
これ、評価順を考えてみれば、フラットにできるから。
column2 = 2 or column3 = 3 and column = 1
でどうよ。
0250nobodyさん
2010/04/09(金) 11:37:31ID:???0251nobodyさん
2010/04/09(金) 11:43:38ID:???0252nobodyさん
2010/04/09(金) 12:09:21ID:???0253nobodyさん
2010/04/09(金) 12:17:33ID:???0255nobodyさん
2010/04/12(月) 01:13:05ID:b5cG05fs$dataで追加するデータを連想配列で指定すると思いますが、
できれば、のちのちの変更も考えて、addParam()などでデータを追加したいのですが、
それようのクラスってあるのでしょうか?
探したのですが見つからずでした。
DbTable_UsersなどとZend_Db_Tableの間に一つ自作のクラスを追加してやるしかないのでしょうか?
liveCommerceは連想配列のままでした。
うまいやりかたありましたら教えて欲しいです。
0256nobodyさん
2010/04/12(月) 04:06:48ID:???そこをもう少し詳しく・・・
それだけじゃ何がしたいのかわからない。
0257nobodyさん
2010/04/12(月) 13:30:57ID:HRyruJMrこれまでモジュール化を考えずにサイトを作って来たんですが、管理画面以下のみをモジュール化
しようとして失敗しています。以下のエラーが出ます(ブラウザ画面は真っ白)
PHP Fatal error : Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message
'Invalid controller specified (error)' in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241
●モジュール化の為に、フロントコントローラ(index.php)には以下を追記し、
$front->setControllerDirectory(APP.'/controllers');//この行は元からありました
$front->addControllerDirectory(APP.'/kanri/controllers', //この行を追記した
●applicationディレクトリは以下の通り。
application
-controllers(ここに管理画面以外のコントローラ全てが入ってます)
-models
-smarty(この中にview用のファイルが入ってます。標準であるviewディレクトリは使ってません)
-kanri(このディレクトリを新規にモジュール用に追加しました)
-controllers
-IndexController.php
-models
-views(現在はカラ)
続きます
0258257
2010/04/12(月) 13:36:32ID:HRyruJMr●/application/kanri/controllers/IndexController.phpは以下の通り。
require_once 'Zend/Controller/Action.php';
class Kanri_IndexController extends Zend_Controller_Action {
public function indexAction() {
echo "hoge";
}
}
●ルーティング設定は
routes.kanri.route= "/kanri/*"
routes.kanri.defaults.module= "kanri"
routes.kanri.defaults.controller= "Index"
routes.kanri.defaults.action= "index"
routes.kanri.type= "Zend_Controller_Router_Route"
長くてすみません。どこが設定でおかしいんでしょうか?
ディスパッチのエラーが発生してるということは、ルーティングだったり
名前設定だったりの間違いか、ディレクトリ構造がおかしいかかと思いましたがわかりません。
また、kanri用のviewファイルも/application/smartyの中に入れて良いのでしょうか
その場合、どういう形で入れたら良いんでしょうか?
現在のindex.phpでのsmarty設定が
$render ->setViewBasePathSpec(APP.'/smarty')
->setViewScriptPathSpec(':module/:controller/:action.:suffix')
->setViewScriptPathNoControllerSpec(':action.:suffix')
->setViewSuffix('tpl');
なので、
/application/smarty/kanri/index/index.tpl、/application/smarty/kanri/kanrigamen1/index.tpl
という形で良いんでしょうか?
よろしくお願いします。
0259257
2010/04/12(月) 21:26:30ID:???スレ汚しすみませんでした
0260nobodyさん
2010/04/14(水) 08:59:09ID:???$cookie->match('https://sub.domain.example.com/somedir/otherdir/foo.php');
// これは true を返します。
この部分の意味が分かりません。
https://www.example.com/somedir/foo.phpがマッチするのは単純に分かるのですが、sub.domain.や/otherdir/の2つが何故マッチするのかと・・・。
「mixed $uri: Zend_Uri_Http オブジェクトで、 ドメインやパスのチェックに使用します。
オプションとして、 正しい形式の URL を文字列で渡すこともできます。
指定した URL のスキーム (HTTP あるいは HTTPS)、 ドメインおよびパスがすべて一致した場合にのみ、クッキーがマッチします。 」
という記述の「指定した URL のスキーム (HTTP あるいは HTTPS)、 ドメインおよびパスがすべて一致した場合にのみ」と反するような気がします。
単に基本的な事が分かっていないだけなのかもしれませんが、自分には考えても分かりませんでしたので教えて頂けたらと思います。
よろしく御願いいたします。
0261nobodyさん
2010/04/16(金) 18:02:22ID:???.example.comだから*.example.com
/somedirだから/somedir*
0262nobodyさん
2010/04/17(土) 20:24:51ID:T3UCpDKa0263nobodyさん
2010/04/21(水) 18:21:04ID:mfVJoQpIアクセスURLが /mだったらレイアウトをmobile.phtmlにするって
application.iniでは記述できませんよね?ディスパッチャを拡張するとか?
しょうがないので今はコントローラの中で
$this->view->layout()->setLayout('mobile');
とやってるんですが、そんなもんでしょうか?
0264263
2010/04/22(木) 13:23:51ID:???$this->_helper->layout->setLayout('mobile');
注入したい場合はどうやらこんな感じ。ブートストラップにて
protected function _initLayout()
{
$this->bootstrap('FrontController');
$f = $this->getResource('FrontController');
$l = Zend_Layout::startMvc();
$l->setLayoutPath(APPLICATION_PATH."/layouts/scripts");
:
$l->setLayout("mobile");
:
return $l;
}
0265nobodyさん
2010/04/22(木) 17:52:05ID:doAUeW+3if(!empty($params['key'])){
$associate_key = $this->_config->afferiate->_ASSOCIATE_KEY;
$query = new Zend_Service_Amazon($access_key, 'JP', $secret_key);
$results = $query->itemSearch(
array(
'SearchIndex' =>'Books',
'Keywords' =>'PHP',
'ResponseGroup' =>'Large'
)
);
}
上記のようにして、検索を実行した時に限ってdispachエラーが出るようなんです。
[Thu Apr 22 01:40:01 2010] [error] [client 192.168.0.8] PHP Fatal error:
Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message
'Invalid controller specified (error)' in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241
$params['key']がカラで検索しないときは、同じ画面でもエラーしません。
どんな原因が考えられるでしょうか? バージョンは1.8.1です。
また、上のZend_Service_Amazon()の使い方は間違ってますか?
0266nobodyさん
2010/04/22(木) 23:09:32ID:???1.10とか
0267nobodyさん
2010/04/22(木) 23:55:56ID:doAUeW+3どうもありがとうございます
バージョンが古いのが問題かと思って新しくしたんですが、まだエラーが出ます。
PHP Fatal error: Class 'DOMDocument' not found in /usr/lib/php/Zend/Service/Amazon.php on line 128
何が問題なんでしょうか。
調べたらzendfwよりphp自体の問題に思えて来たのでphpスレに移動します。
ありがとうございました
0268nobodyさん
2010/04/23(金) 00:33:42ID:???http://www.google.co.jp/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Class%20%27DOMDocument%27%20not%20found&num=50
0269nobodyさん
2010/04/23(金) 00:37:54ID:???どうもです。
しかし、そこに書いてあることやったんですけどエラー解消しないんですよね
php質問スレに詳細書いたので、気が向いたらお願いします。ありがとうございました
0270nobodyさん
2010/04/23(金) 04:13:25ID:QeXW5bBg$query = new Zend_Service_Amazon($access_key, 'JP', $secret_key);
//$results = $query->itemLookup('B001DNF6V6');
$results = $query->itemSearch(
array(
'SearchIndex' =>'Music',
'Keywords' =>$params['key']
)
);
値が取得できず、以下の結果になります。(エラーは出力されません)
object(Zend_Service_Amazon_ResultSet)#295 (4) { ["_results:protected"]=> object(DOMNodeList)#307 (0) { }
["_dom:protected"]=> object(DOMDocument)#293 (0) { } ["_xpath:protected"]=> object(DOMXPath)#296 (0) { }
["_currentIndex:protected"]=> int(0) }
コメントアウトしている $results = $query->itemLookup('B001DNF6V6'); でなら目当ての商品情報を取得できるので
コンポーネントの設定や動作条件は満たしてるのではと思うんですが…
0271nobodyさん
2010/04/23(金) 10:07:38ID:yrV1Z6KOこのフロントエンドはバックエンドのオプションとしてmaster_fileを設定するのだと思います
実際上記のマニュアルにも「唯一しなければいけないのは・・・」と書かれています
しかし、上記のマニュアルにはmaster_fileは非推奨と書かれています。
これはどういうことなのでしょうか?
master_fileではなく、master_filesを使えということなのでしょうか?
それともそもそもマスタファイルへのフルパスを指定することがいけないということで非推奨なのでしょうか?
となるとファイルが更新されたタイミングでキャッシュがリフレッシュされるという事が無くなり、そもそもこのフロントエンドの意味が無くなり、このフロントエンド自体が非推奨になってしまうと思うのですが・・・
0272nobodyさん
2010/04/23(金) 12:26:10ID:???質問なげえよ。master_files使えって意味だよ。
同じ役割だから、小さい方は廃止予定なんだよ。よくあること
0273nobodyさん
2010/04/24(土) 04:32:30ID:6V3fZIphいまだに原因わからずで… 勝手言ってすみません、気が向いたらお願いします
0274nobodyさん
2010/04/24(土) 05:40:42ID:???$results を foreach してみたら?イテレーターみたいだから。
参考
http://d.hatena.ne.jp/boto/20070923/1190482142
0275273
2010/04/24(土) 16:15:43ID:???ありがとうございます!
そのページも見てたんですけど、var_dumpで確認すれば万能って思ってました
イテレータって物自体知らなかった… 本当にありがとう!
0276nobodyさん
2010/05/01(土) 10:59:43ID:???低学歴は本買えってことか・・・
0277nobodyさん
2010/05/01(土) 11:03:13ID:???0278sage
2010/05/02(日) 10:44:31ID:KVSpskbJ「誰かが翻訳しておいてくれる」のが当たり前のことだと思っているのですね。
去年の「Zend_Application まだ翻訳されていない、どうなっているんだ」や
「公式運営者はもっと頑張るべきだ」発言者のように
0279nobodyさん
2010/05/02(日) 10:54:01ID:???翻訳してやってますよ感を出す意味が分からない。
0280nobodyさん
2010/05/02(日) 11:45:58ID:???0281sage
2010/05/02(日) 12:19:45ID:Y8fRDT502行目が分かりません
0282nobodyさん
2010/05/02(日) 23:04:41ID:???自分に理解出来ないことは、理解しようという姿勢すら示さないのも低学歴の特徴。
0283nobodyさん
2010/05/02(日) 23:49:44ID:???0284nobodyさん
2010/05/03(月) 00:58:35ID:???お前、海賊版のソフトを平気な顔して使って
「ボッタクリ価格なのが悪い!」
「もともと買う気は無いからメーカーに損は無い!」
「むしろ俺が使う事で知名度が上がるだろ!」
とか言うタイプだろw
翻訳してやってますよとは思わないが、対価も支払う気が無い輩の言うことでは無いわなw
人それぞれで結論づけるならチラシの裏にでも書いてろよw
0285nobodyさん
2010/05/03(月) 02:13:23ID:???0286nobodyさん
2010/05/03(月) 02:35:26ID:???お前、海賊版のソフトを平気な顔して使って
「ボッタクリ価格なのが悪い!」
「もともと買う気は無いからメーカーに損は無い!」
「むしろ俺が使う事で知名度が上がるだろ!」
とか言うタイプだろ
翻訳してやってますよとは思わないが、対価も支払う気が無い輩の言うことでは無いわな
人それぞれで結論づけるならチラシの裏にでも書いてろよ
0287nobodyさん
2010/05/03(月) 03:11:31ID:???API Docの英語くらい理解できる程度に勉強しておけば良かったな
0288nobodyさん
2010/05/03(月) 08:26:50ID:???別に英語だけでも困らないけど、やっぱり日本語の方がありがたい。
0289nobodyさん
2010/05/03(月) 18:41:49ID:7alvR5zVsendmail?postfix?qmail?
zendFWのサービスていうかzend_mailを使うにあたって、3つのうちで特に相性がいいものってあるのかな?
zend_mailの利用に関して注意点とかトラブルとかあった?
あったら教えてください。お願いします。
0290nobodyさん
2010/05/03(月) 20:36:44ID:???0291sage
2010/05/05(水) 00:26:42ID:/pDwsnJ7290を補足すると、 Zend_Mail_Transport_Smtp 及び Zend_Mail_Transport_Sendmail が
sendmail を前提にしており、他のMTAをカバーするためのクラスは、まだ用意できていなかったはずです
0292nobodyさん
2010/05/06(木) 00:26:10ID:j7c7uMQSありがとうございます
っていうか、マジで?sendmailしか対応できないの?
Sendmailってセキュリティ設定が難しくて敬遠されがちらしいし、
扱いやすいpostfixにMTAを切り替えてたんだけど、無駄なことしたのかな…orz
やっとインスコ成功したのに…
調べてみます、ありがとう
0293292
2010/05/06(木) 00:45:43ID:j7c7uMQSzend以前の問題かもしれないですが、ttp://blog.enjoitech.jp/article/201 を見ると、
自前のサーバ上のMTAを使わず、gmailを使ってメール送信できるそうですが、
・自前でMTAを利用する
・gmailで送信する
この二つのメリット/デメリットは何でしょうか?
思いつくのはgmailのダウン時の巻き添えくらいしかないのですがほかに何かありますか?
0294nobodyさん
2010/05/06(木) 00:58:07ID:???>>っていうか、マジで?sendmailしか対応できないの?
SMTP経由すればMTA関係無いんじゃないか?
>>293
・自前でMTAを利用する
自由に弄れる反面、コストもかかるし維持も面倒。
・gmailで送信する
制限はあるが、コストはかからない。
作るサービス次第だと思うよ。
0295nobodyさん
2010/05/06(木) 01:10:04ID:???sendmailつっても、この場合sendmailコマンドじゃなかったけ。
うちはpostfix使っているけど特に問題なく使えているよ。
0296nobodyさん
2010/05/06(木) 16:26:28ID:???0297nobodyさん
2010/05/08(土) 04:09:56ID:???ZF 1.10.3を使っていて
public function sitemapAction(){
$this->_helper->layout->disableLayout();
echo $this->view->navigation()->sitemap();
}
としたところ
Fatal error: Zend_View_Exception: Encountered an invalid URL for Sitemap XML: "http://xn--********.jp/" in C:\xampplite\htdocs\xn--********.jp\library\Zend\View\Helper\Navigation\HelperAbstract.php on line 522
というエラーが発生してしまいます。
ドメインは日本語ドメインを利用しています。
上記エラーはwindows上ですがcoreserverや自宅のlinux環境でも同様のエラーが発生します。
$container = new Zend_Navigation(array($navi));
$navigation = $this->view->navigation();
$navigation->setContainer($container);
$this->view->assign( 'crumbs',$navigation->breadcrumbs()->setLinkLast(true)->setMinDepth(0));
$this->view->assign( 'menu' ,$navigation->menu());
は動作してるのでZend_Navigationの使い方は間違ってないと思うのですが
解決のヒントや、そもそもsitemapは日本語では動かない等あきらめたほうが良い等
アドバイスをいただけないでしょうか?
0298nobodyさん
2010/05/09(日) 17:05:23ID:???オリジナルのRoute作ってるんだけど
assemble()ってどういうときに呼ばれるんだろうか?
今のところ何も実装しなくても希望の動作になってるから良いのだが。。
ちょっと調べた感じ、Redirectのときに使われるっぽい?
RouterでRedirect?よくわからん。。。
0299nobodyさん
2010/05/10(月) 11:25:43ID:???配列→パス が assemble() で
パス→配列 が match()
心臓部分なので実装しなければ(空実装?)使いもにならんはずだが。
0300nobodyさん
2010/05/10(月) 13:39:42ID:???個人的によく使うのはurlヘルパーかな
0301nobodyさん
2010/05/10(月) 20:26:01ID:???>>300
なるほどthx
Router_Route_Hostnameの正規表現版みたいなのを
作ってルーティングしてるんだけど、今のところ
assemble(){ exit('hoge');}
って書いてても全然呼ばれないのだが。。。
urlヘルパーを使ってないから?
もともとJava-Spring使ってて最近PHP-Zendに移ってきたんだけど
Route_AbstractのgetVersion()をオーバーライドすると
match()のパラメータ型が変わったりするし、なんだかややこしいな。
ていうかRoute_Interfaceの全メソッドにコメントがないし…
インタフェースにコメントないAPIとか初めて見たよ。。
でも逆に勉強になるな。
0302nobodyさん
2010/05/15(土) 16:46:48ID:???あと、Zend_mailで送信サーバをGoogleにして使うとき、送信者アドレスが
Gmailのアドレスになるのはどうしようもない?
0303nobodyさん
2010/05/15(土) 16:47:51ID:9enG3To70304nobodyさん
2010/05/15(土) 16:51:16ID:9enG3To7○ Zend_mailで送信サーバをGmailサーバ指定して使うとき
の間違いでした、ごめん
0305nobodyさん
2010/05/15(土) 16:56:30ID:???私がPHPのシステムを構築するときは、管理画面とフロント画面があるシステムを作ることが多く、
モジュールの仕組みを自分なりに使って以下の様に実現しています。
■管理画面
http://localhost/webmaster/hoge/huga
=> webmasterモジュールのhogeコントローラのhugaアクション呼び出し
■フロント画面
http://localhost/hoge/huga
=> defaultモジュールのhogeコントローラのhugaアクション呼び出し
ディレクトリ構造は以下(抜粋)
application
|-modules
|--default
| |-controllers
| |-models
| |-views
| --webmaster
|-controllers
|-models
|-views
これだと、モデルがそれぞれのモジュール内に配置されることになり、よい面もあると思うのですが、
ほとんどのシステムで管理画面とフロント画面で同一のモデルを使うことが多いので、
webmasterモジュールの方にはmodelを実装しないで、defaultモジュールの方のmodelsにinclude_pathを通し、どのモジュールからもdefaultモジュールのmodelを呼び出すようにしています。
ただ、このやり方がどうしてもしっくりこないので、もう少しスマートなやり方を模索しているのですが、なかなかいい案が浮かびません。
みなさんは管理画面とフロント画面があるようなシステムを構築するときは、どんなやり方でやっていますか?
0306nobodyさん
2010/05/16(日) 00:33:05ID:9d3ZuTykズバリそのやり方してる、俺もなんだかなぁって感じ。
違和感拭えないよね
0307nobodyさん
2010/05/16(日) 00:41:06ID:/nPzlLMdapplication の直下(modules と同階層)に models を置いている。
共通のはそこに置く感じ。
Zend_Application 使ってれば application/models は autoload 対象になるしね。
0308305
2010/05/16(日) 12:51:20ID:???>>307
ありがとうございました。
参考になりました。
Zend_Applicationは確かモジュール毎のiniファイルの記述方法がよくわからなくて、挫折した記憶があります。
もっとよく見てみようと思います。
0309nobodyさん
2010/05/18(火) 10:33:48ID:f5A4YuVy307じゃないけど、Zend_Applicationに関係なく、
アプリケーション全体で共有する可能性のあるものは、
applicationの下に置くよ。
静的なリソースは別ね。
0310nobodyさん
2010/05/26(水) 16:04:27ID:???例えばgrep()でeval()やpreg_replace(eを使用)してユーザリクエストが混ざっているとか、$_FILESを組み込んだアップロード時に脆弱性が無いかとか、ヌルバイト&Dir遡り攻撃に対処しているかとかです
基本的なXSS、ScriptInsersion、SQLインジェクション、セッションハイジャック対策が全体的なコード中に施行されているのか知りたいです
ZFで構築後、また一から各セキュリティホールの確認とか大変だなぁ、と思いまして
FWの作者がZendなので最新バージョンはそういうのにほぼ対策をしているとは思うのですが、こういう攻撃には弱いというのがあったら教えていただきたいです
0311nobodyさん
2010/05/26(水) 16:30:03ID:???でも、個々のアプリケーションでもケアは必要。
ユーザリクエストにコマンドが混ざるとかはアプリケーションの仕様であってFWは感知すべきじゃない、
セッションハイジャックを防ぐための支援機能はあってもそれを使うかどうかはプロジェクト次第
セキュリティホールってのは開発者が責任を持って対処するべきなんじゃないの?
「大変だなぁ」って思うんなら、FWじゃなくて既存のプロダクトをカスタマイズして使う方がいいよ
FWに任せて自分は対処しないって風になると、いくらでも穴は開くからね
0312nobodyさん
2010/05/27(木) 00:28:31ID:???0313nobodyさん
2010/05/27(木) 00:52:04ID:???0314nobodyさん
2010/05/28(金) 09:04:18ID:???セキュリティ対策をFWに頼っているわけではないんだが、例えば(まぁないとは思うが)どこかのコンポーネント内でhtmlspecialcharsとかが入っていない為セキュリティホールになったりしないかということ
そういう場合わざわざソース見て自分で書き直しとかめんどくさいんで
最低限のクォート処理とかそういう事です
0315nobodyさん
2010/05/28(金) 13:53:13ID:???DB系であれば必要な箇所では適切にエスケープされるし、エスケープ方式も設定出来る。
htmlspecialcharsのように場合によっては不要なエスケープは強制されないので、
自分で適切に処理する必要がある。
0316nobodyさん
2010/05/28(金) 20:32:15ID:???まぁ、言いたいことはわからないでもない。
残念ながら、"現段階では"ソースのチェックが必要な気がする。
HTML関連のViewヘルパーでのエスケープはされてるけど、
たとえば、文字コードの指定はロケールを見てるかどうかとか
Viewでエスケーパを指定できるようだけどオプションは?とか。
タグを自動育成するタイプのコンポーネントで穴がないかとか
その辺はやっぱり使うときにソースを確認した方がいいと思う。
0317nobodyさん
2010/05/29(土) 03:27:50ID:???プレースフォルダ使っててもDBI/DBDに問題があったら…
今のとこであったことないけどHTML::FillInFormに問題があったら…
DBI,DBDの仕組みも大儀でいえばFWなのでそういった面では
FWにセキュリティホール対策は任せたい/任せてる部分てあるよね?
とここのところの流れを見てておもいました。
0318nobodyさん
2010/05/30(日) 19:32:08ID:???ソースを確認しても信頼性の評価なんてできないから
自分が作るよりはましと考えて信じて使うしかない
0319nobodyさん
2010/05/31(月) 13:36:10ID:iVMHao47>Apache1.3で%7Fが使えなくて困った
ZFと無関係な話ですが、どういう意味ですか?
昔作ったシステムが今もApache1.3で動いてるんで非常に心配です。
とりあえずurlencodeは使ってますが、それでも問題が起きることがあるんでしょうか?
知ってる人、教えてもらえないでしょうか?
0320nobodyさん
2010/05/31(月) 15:28:20ID:???0321nobodyさん
2010/06/01(火) 10:23:47ID:???0322319
2010/06/02(水) 13:22:49ID:NqHn07VJありがとうございました。
調べたところ問題なさそうでした。
0323nobodyさん
2010/06/04(金) 15:51:23ID:???/index = IntexController->indexAction();
/hoge = IndexController->hogeAction();
とルートしたい場合、独自Routerを書かないと駄目でしょうか?
設定で対応出来るものでしょうか?
0324nobodyさん
2010/06/04(金) 16:27:09ID:???0325sage
2010/06/06(日) 10:36:36ID:???0326nobodyさん
2010/06/09(水) 16:15:06ID:zdg5Ro52Zend_Session::rememberMe()
をログイン画面でログイン成功時に使用しています。
引数には1800秒を指定しているのですが、
この場合、ログイン成功してから1800秒間
セッションが有効になるのでしょうか?
ログイン後の次の画面で
Zend_Session::start();
を呼んで、ログインに成功しているかどうかを判断しているのですが、
Zend_Session::start();をコールしただけでは
セッションの生存期間はリセットされないのでしょうか?
0327nobodyさん
2010/06/11(金) 12:51:52ID:1eqyNkqt0328nobodyさん
2010/06/13(日) 04:57:57ID:???0329nobodyさん
2010/06/13(日) 05:25:30ID:???0330nobodyさん
2010/06/13(日) 07:21:39ID:???0331nobodyさん
2010/06/13(日) 07:57:06ID:???ローカル環境にPHPいれてZF最新版いれて・・・ってやる程恩恵あるのかなと疑問に思ったんだけど、
覚えなくてもいい感じかね。
0332nobodyさん
2010/06/14(月) 20:34:32ID:sDoDPQ6e恥ずかしいんだけど簡単に教えて欲しい、
$query = new Zend_Service_Amazon($access_key, 'JP', $secret_key);
$results = $query->itemSearch(
array(
'SearchIndex' =>'Music',
'Keywords' =>$params['key']
)
);
この$queryと$resultsに対してどうしたら良いのか。。
Amazon/Item.phpの
public function __construct(DOMElement $dom)
をどう解釈したら良いのかわからない…
誰かアドバイス頼みます
0333nobodyさん
2010/06/14(月) 22:17:48ID:+e+bNGnA$results を foreach で回す。
foreach ($result as $k => $v) {
var_dump($v);
}
0334nobodyさん
2010/06/15(火) 10:40:13ID:???どうもありがとう、自己解決したよ
searchのオプションで'ResponseGroup' => 'Medium',指定しないと必要な情報が
そもそも取れないのを気づかなかった
アドバイスもサンキュー
0335nobodyさん
2010/06/16(水) 16:18:46ID:N9yq5s20この返り値$objは $num = $obj -> rowCount(); でアップデートの対象件数を
調べられるってことだけど、これについて教えて欲しい。
具体的に言うと、 アップデートする既存データ(カラム情報)と上書きするデータが
全く変化がないとき、$num=0を返すんだけど、これってこれで正しいの?
まるで変更前のカラム情報と変更後のカラム情報を比較して、実際のupdateするしないを決めてるみたいな挙動だけど
純粋にWhere以下の条件をクリアしてるアップデート対象の件数を返すと思って
更新のエラー判別や件数判定しようと思ってたので困ってます。
ZendFWは1.10、DBはMysqlです。
0336326
2010/06/16(水) 16:42:17ID:XZSSnjmGどなたかご存知の方はいらっしゃらないでしょうか。
0337nobodyさん
2010/06/16(水) 16:44:39ID:???0338326
2010/06/17(木) 11:07:21ID:???色々と試行錯誤しながらも
皆様からのご意見をお待ちしておりました。
現状まだ解決しておりませんので
ご意見いただけると幸いです。
0339nobodyさん
2010/06/17(木) 12:45:38ID:???0341326
2010/06/18(金) 00:18:45ID:???ご回答ありがとうございます。
できれば、一度ログインして
タイムアウトもしくはログアウトをするまでは
同じセッションIDを使用したいと考えています。
rememberMeを呼ぶとセッションIDが書き換わるようなので
ちょっと困っています。
同じセッション間でユーザがどのように
ページを遷移していったかログをとりたいのですが、
その時に識別するキーにセッションIDを使用しています。
セッションIDを使うのではなく、別の一意のIDを用意するべきでしょうか?
0342nobodyさん
2010/06/18(金) 01:06:33ID:???0344nobodyさん
2010/06/18(金) 06:24:53ID:???という神の啓示セヨ
0345326
2010/06/19(土) 12:24:02ID:???ありがとうございます。
それではセッションID以外の一意のキーを用意するようにします。
rememberMeもあまり多用すると、パフォーマンスに影響するという
情報もありましたので、要所要所で使用していきたいと思います。
0346nobodyさん
2010/06/19(土) 12:46:56ID:???0347nobodyさん
2010/06/19(土) 16:33:15ID:MplSKe7WDBがMysqlのとき、トランザクションでcommit()メソッドを使って処理が成功した場合
$db->query($q1);
$db->query($q2);
$rs = $db->commit();
の返り値$rsをvar_dump($rs)したら、object(Zend_Db_Adapter_Pdo_Mysql)なんだけど、
このオブジェクトからエラーコードや処理した行数を取得するメソッドってないのかな?
エラーだけならtry~catchの分岐で捕まえられるけど、行数を取得するにはどうしたらいいの?
非トランザクション処理で返ってくるZend_Db_Statement_Mysqliオブジェクトの場合、
rowCount()とかerrorCode()とかのメソッドを利用してクエリ結果を簡単に確認出来るけど
トランザクション時の方はわからない。
どなたかアドバイスお願いします。
0348nobodyさん
2010/06/19(土) 22:51:45ID:???トランザクションの時も同じだよ。
commit()はあくまで処理を確定する為のメソッド、
実際に処理が行われるのはquery()メソッドなので、
その戻り値(Zend_Db_Statement_Mysqli)で処理結果を取得すればいい。
0349nobodyさん
2010/06/20(日) 00:19:42ID:???おお、レスありがとう。じゃあ、トランザクション処理としてfor文で
クエリ($rs=$db->query($hoge))を10回繰り返すとしたら、
$n = $rs->rowCount(); とか $rs->errorCode();とかの処理も
10回for文の中で繰り返さなきゃいけないわけだよね
しょうがないけど、効率悪いような… ともかくありがとう
0350nobodyさん
2010/06/20(日) 00:38:46ID:???それはZendじゃなくてSQLの仕様だよ
10回クエリを投げるなら、10回期待した結果が得られたかどうかキチンと判定しないと、
commitもしくはrollbackが出来ないだろうさ
0351nobodyさん
2010/06/20(日) 01:13:52ID:???たとえば5回目でinsertするカラムの数と値の数があわなかったらエラーで
rollbackされるわけだよね?
逆に言えば複数回のクエリ(トランザクション利用)の「全体としての成功/失敗」程度しか
確認が必要じゃない時は
commitできたときはtrueをreturn、rollbackのときはfalseなりエラーメッセージをreturnで
検証完了と割り切っちゃって良いのかな
0352nobodyさん
2010/06/20(日) 02:11:43ID:???>commitしたってことは各回のクエリに失敗は無かったってことでしょ?
>たとえば5回目でinsertするカラムの数と値の数があわなかったらエラーで
>rollbackされるわけだよね?
これは逆じゃない?
commitする前にクエリが正常に完了したかどうかを自前で判断して、
OKであればcommit、NGであればrollbackを行うべきかと・・・
SQLクエリ自体が通ってしまえば、commitは出来てしまうので、
commitが出来た=全体として成功って判断は危険だと思うよ。
0353nobodyさん
2010/06/20(日) 02:22:43ID:???トランザクションの認識自体がオカシイ、Zend以前の問題ぽいですね
ttp://pluto-blog.blog.so-net.ne.jp/2007-01-15
こんなサイト見つけて、この考え方で良いのかなって思ったんだけど…
0354nobodyさん
2010/06/20(日) 03:14:42ID:???そのサイトの超絶簡単サンプル1だね。
サンプルでは「SQLクエリにエラーがなかった場合、処理は成功」としているけど、
例えば「行を削除するが、テーブルの行が5件未満になってはいけない」みたいな条件がある場合、
単にSQLクエリが成功したかどうかで判断するのは難しいよね。
例)DELETE句自体に問題は無いのでcommit()出来てしまう。
$db->beginTransaction();
try {
$db->query("DELETE FROM tableName");
$db->commit();
} catch (Exception $e) {
$db->rollBack();
}
これではマズイのでcommit()を行う前に、
自前でDELETE後の行数を確認する必要があるわけだ。
0355nobodyさん
2010/06/20(日) 18:48:10ID:???空港でチケット止めたり、ICカードシステムが止まるような仕様だよそれ。
普段はうまく行ってるけど、実はバグってて見えないだけ、を隠蔽してる。
0356351
2010/06/20(日) 23:49:48ID:???どうもありがとう。正直すんなり理解出来ないんですよね、トランザクション勉強し直しかなこりゃ。。
>「行を削除するが、テーブルの行が5件未満になってはいけない」みたいな条件がある場合
…というような条件は無いんだけど、ループするクエリ処理をその都度検証すべしってことは
try{
$success = 0;
for($i=0;$i<$loop;$i++){
$rs = $db->query(insert 〜);
//以下で登録クエリの成功を確認
$chk1 = $rs->rowCount();
$chk2 = $rs->errorCode();
if($chk1==1 && $chk2=="00000")$success++;
}
if($success ==$loop){
$db->commit();
}else{
//ループのどこかで失敗してる
$db->rollBack();
}
} catch (Exception $e) {
$db->rollBack();
}
こんな感じでいいんですかね?
5件以下になってはいけない云々みたいな条件が無い時でもこういう処理が必要なら
トランザクションの説明全部にそう書いてて欲しかったなぁ… ずっと誤解してたよ
0357nobodyさん
2010/06/21(月) 00:03:17ID:???途中でエラーが出た場合、ループを抜けないと無駄なクエリを発行する事になってしまうので、
ループ部分はこんな感じでもいいと思う。
for($i=0;$i<$loop;$i++){
if($db->query(insert 〜)->rowCount() != 1)
throw new Exception('クエリの結果がおかしいです><');
}
>トランザクション
簡易カートシステムを設計してみると理解し易いかもよ。
1回の処理で、在庫確認、発注処理、決済処理が発生して、
1つでも失敗した場合はrollbackを行う。みたいな。
0358nobodyさん
2010/06/21(月) 00:14:33ID:???その不可分なクエリをまとめるのがトランザクションで、
含まれるクエリ全部が成功するか、あるいは何もしなかったことにするか、
どっちかの結果しかない。(中途半端な成功はデータの不整合になる)
特に指定しなければ、1つのクエリが1つのトランザクションという扱いになってる。
というのがオイラの理解。
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:???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:???別に?無くてもコントローラとしては機能するよ。
俺がいいたいのは、コントローラにはアクション以外定義するのはおかしいなんて事は無い。
それだけだ。
0539nobodyさん
2010/10/21(木) 07:23:46ID:???0540nobodyさん
2010/10/21(木) 07:32:49ID:???自分がそれを継承して作るコントローラに、アクション以外の(コントローラから逸脱する)ロジックなり処理なりを実装するのは
MVCの考えに反するよ。
てかZend_Controllerを見たらAction以外のメソッドがあるから定義しておかしくないなんてのは余りにも短絡すぎ
無かったらユーザがActionだけ書いて動くわけないでしょ
0541nobodyさん
2010/10/21(木) 10:18:49ID:???ユーザは好きなように使えばいいのさ
0542nobodyさん
2010/10/21(木) 11:09:59ID:???MVCの思想としても_fowardをアクションコントローラに実装する必要は無い。
例えばZFで言えばヘルパでもいい。
>>540
最初から全てを書くとは誰もいってなくね?
Action間で共有するメソッドやログ出力ショートカット程度しか言われてない気が。
0543nobodyさん
2010/10/21(木) 14:12:10ID:???各ControllerでActin以外に独自メソッドいろいろ書いてたら、
将来的なZFのバージョンアップで拡張されたときに
不意なオーバーライドしちゃって動かなくなりそうで怖い。
間に1サブクラスかませてそこでやるならまだしも。
0544nobodyさん
2010/10/21(木) 15:03:42ID:???Zenc_Controller_Actionを継承した基底コントローラは最低限用意しておく
各コントローラは基底コントローラを継承しておく
全体で必要なら基底コントローラ、
コントローラ固有ならそのコントローラに書く
という感じかな。
オーバーライドしてしまって動作しなくなるケースって相当希だと思う。
0545nobodyさん
2010/10/21(木) 19:36:11ID:???0546nobodyさん
2010/10/22(金) 01:09:01ID:???0547nobodyさん
2010/10/22(金) 01:53:39ID:???アノテーション自体は定義出来るし
ランタイム時にReflectionクラスで取得する事も出来るので
必要だと思うなら自分で作ればいい
作ってるうちに >>546 と同じ答えにたどり着くと思うがw
0548nobodyさん
2010/10/22(金) 13:26:45ID:???単に @deprecated とかPDTでも対応してて便利だし、
そのレベルであれば良いなあって。
0549nobodyさん
2010/10/22(金) 15:12:14ID:qwjMjkx8(削除処理がされたら完了画面にリダイレクトする)
viewの設定をどうしたら良いの?
phpエラー(warning)を吐かれてるのを止めたいんだけど…
ルーティングで対処するのか、それともdeleteAction()の中で何か書くのかわからないです
routingは以下のようになってます
routes.scheDelete.route= "/admin/schedule/delete/*"
routes.scheDelete.defaults.module= "admin"
routes.scheDelete.defaults.controller= "Schedule"
routes.scheDelete.defaults.action= "delete"
routes.scheDelete.type= "Zend_Controller_Router_Route"
回答お願いしますー
0550549
2010/10/22(金) 15:13:38ID:qwjMjkx8どうせ画面の表示はないのだから/schedule/delete.tplを用意していないのです。
0552nobodyさん
2010/10/23(土) 00:37:26ID:???deleteActionの最後で_foward()か_redirect()すればいい。
画面を描画したくないなら、viewHelperを無効にすればいい。
http://framework.zend.com/manual/ja/zend.controller.action.html
0553nobodyさん
2010/10/23(土) 00:50:00ID:???>>543
マニュアル読んで気がついたが、
「自分のウェブアプリケーション用に便利な機能を実装していく一方で、
同じような前処理やちょっとした処理をあちこちのコントローラで書いているといったことはありませんか?
そのような場合は、Zend_Controller_Action を継承した共通基底コントローラクラスを作成し、
共通処理をそこにまとめていくようにしましょう。 」
と明記されてるね。
http://framework.zend.com/manual/ja/zend.controller.action.html
0554nobodyさん
2010/10/23(土) 02:16:34ID:???>無かったらユーザがActionだけ書いて動くわけないでしょ
動く。ルーティングを行う為の基底コントローラ(ZFではDispatcher)側の実装の問題だ。
MVCの考え方とやらに従うのであれば、Action以外にもCに実装するべきロジックは多々ある。
それを基底クラスに書くのか、別クラスに書くのか、その実装方法自体はMVCの思想には含まれていない。
0556nobodyさん
2010/10/23(土) 07:14:23ID:???ある程度はキャッシュされるとしても体感しない程度に重くなってる?
0558nobodyさん
2010/10/23(土) 10:58:26ID:???だからCに関するロジックであれば、Zend_Controller_Actionに実装しようが、Dispatcherに実装しようが、他のクラスに実装しようが、
MVC思想とは関係無いんで >>540 の発言の意味がわからねーんだわ。
0559nobodyさん
2010/10/23(土) 11:12:25ID:???>>無かったらユーザがActionだけ書いて動くわけないでしょ
>動く。ルーティングを行う為の基底コントローラ(ZFではDispatcher)側の実装の問題だ。
Cに関するロジックが無くても動くってどういうこと?
0560nobodyさん
2010/10/23(土) 11:31:06ID:???Zend_Ctonroller_ActionにAction以外のメソッドが無くても、
Dispatcherなり、どこかしらに実装しておけば動くって事。
>>540ではAction以外を定義するのはMVCに反すると、
意味不明な書き込みがあったが、Cに関するロジックであれば何処に書こうが何ら問題は無い。
むしろ共有ロジックはActionクラスに書くことをZFは推奨(>>553)している。
0561nobodyさん
2010/10/23(土) 11:56:02ID:???>Zend_Ctonroller_ActionにAction以外のメソッドが無くても、
Zend_Controller_Actionには_forwardや_getParamや_redirectなど
たくさんAction以外のメソッドがあるように見えるが・・・?
0563nobodyさん
2010/10/23(土) 18:28:37ID:???バイトコードキャッシュとか使ってない環境だと
どのくらい影響あるんだろうね。
PHPでもJavaみたいにInterface多用して設計したいけど、
実行時の無駄な処理が気になる。
本番環境ではInterfaceのチェック処理を
無視する設定とかあるのかね?
ZFでも結構多用されてるってことは、ほとんど影響ないのかな?
0565nobodyさん
2010/10/23(土) 19:07:53ID:???君たち話がかみ合ってない。
要はZend_Ctonroller_Action継承した基底Controller作って、
共通の処理はそこに実装。
※出来ればinit()やらpreDispatch()の中だけで済ませる
それを継承した各Controllerで個別に呼び出したい処理は
ActionHelper作る。
でいいんじゃない?
オーバーライド用に容易されてるメソッド以外に、
各ControllerでAction以外のメソッド書かないといけない必要性って
ほとんどないような。手っ取り早いけど。
0566nobodyさん
2010/10/23(土) 19:56:33ID:???ヘルパーブローカを使うとPDTでコード補完出来ないのが不便なんだよなぁ、
どこかしらに @return アノテーション付でgetter定義しておかないとならんし・・・
自分の場合、
プロジェクト基底コントローラ
→ アプリケーション基底コントローラ
→ モジュール基底コントローラ
をそれぞれ継承して作っておいて、
Controllerに共通プロパティやショートカットメソッド定義してるわ。
0567nobodyさん
2010/10/23(土) 20:19:28ID:???>各ControllerでAction以外のメソッド書かないといけない必要性って
>ほとんどないような。手っ取り早いけど。
Controller固有のロジックやプロパティを外部化する必要性もほとんど無いからね
臨機応変に最適な手法を取ればいいと思うよ
無闇に肥大化させるのは好ましくないけれど
将来Zend_Controller_Actionと競合するかもしれないという理由で
実装コストを上げてしまうのは同意し辛いな
0569nobodyさん
2010/10/24(日) 12:51:40ID:???アクションコントローラを作るたびに同じアクションヘルパーを呼ぶ記述書くより
プラグインに共通で書きたいと思ったのでやり方を探しているんですが見つけられません。
0570nobodyさん
2010/10/30(土) 15:35:08ID:CCVX4Qsqこれを再利用する方法ってないんでしょうか?
というのは、たとえば入力フォームのアクションだったらバリデート処理が書いてるけど
同じようなフォームの時、ほとんど中身変わらないのに同じようなのをもう一つ書くのが面倒なんです
具体的に言うと nikki_addアクションとnikki_rewriteアクションとか。。
新規登録時でも書き換え時でもバリデータは同じだけど、アクションを2つに分けると
中身同じなのにもう一つ書くことになって面倒くさいと…
何か良い方法ないですか?
0571nobodyさん
2010/10/30(土) 15:55:15ID:???0572nobodyさん
2010/10/30(土) 15:55:33ID:???難しく考えなくていいよ。
コントローラにnikkiValidateメソッドを作って、
nikki_addとnikki_rewriteから呼び出せばいい。
もしそれが気持ち悪いのであれば、Nikkiクラスでも作るなりして、共通処理をまとめればいい。
0573nobodyさん
2010/10/30(土) 15:57:20ID:???0574nobodyさん
2010/10/30(土) 16:12:06ID:???不明瞭な書き方するからいけないんだよね。
モデルに書けそうなロジックは全部モデルに記述するように試みればまず間違いない。
0575nobodyさん
2010/10/30(土) 16:22:23ID:???汎用性とか徹底したMVCとか考えるとキリが無い。
要はケースバイケース。
コストに見合った実装すればいいよ。
RDBだからとテーブルを無闇に極限まで正規化しないだろう?
0576nobodyさん
2010/10/30(土) 18:06:00ID:???いやまあ、そうなんだけど、そういうと馬鹿はコントローラに全部書いちゃうから。
コントローラに書くことなんてほぼ無いのに。
0577nobodyさん
2010/10/30(土) 18:44:20ID:CCVX4Qsqおおー、ありがとうございます。
そうですね!共通利用するんだから両アクションから呼び出せばいいんだ
なんで思いつかなかったかなー
ありがとうございました
0578nobodyさん
2010/10/30(土) 23:54:53ID:???極端な例だけど、以下のようにロジックがきっちり分別されていれば、
同クラスだろうが、同ファイルだろうがMVC実装は可能。
class Application
{
public function controller() {}
public function model() {}
public function view() {}
}
0579nobodyさん
2010/10/31(日) 00:48:20ID:???0580nobodyさん
2010/10/31(日) 02:04:35ID:???ファイル、クラス、メソッド、好きな方法で区切ればいい
0581nobodyさん
2010/10/31(日) 02:12:58ID:???0583nobodyさん
2010/10/31(日) 04:11:44ID:???オブジェクト指向的に間違いなわけで
0584nobodyさん
2010/10/31(日) 04:36:27ID:???OOP的にも、MVC的にも問題無いと思うよ。
絶対やらんけど。
class MVC
{
public function controller() {}
public function model() {}
public function view() {}
}
0585nobodyさん
2010/10/31(日) 04:46:01ID:???自動車をオブジェクト指向で表す場合に
EngineWheelStealingってクラス作るようなもんだぞw
0586nobodyさん
2010/10/31(日) 04:53:18ID:???0587nobodyさん
2010/10/31(日) 05:44:37ID:???AMVCとかBMVCってクラスができるのか?
それじゃmodelとcontrollerまで対じゃないと破綻するよな
それともa_controller() b_controller()って増やしていくのか?
0588nobodyさん
2010/10/31(日) 13:34:07ID:???0589nobodyさん
2010/10/31(日) 14:02:42ID:???>>585
Car extends EngineWheelStealing
0590nobodyさん
2010/10/31(日) 14:57:07ID:???0593nobodyさん
2010/10/31(日) 15:04:24ID:???0594nobodyさん
2010/10/31(日) 15:10:21ID:???is-aとかhas-aとかなんかそういう基本的なところのセンスがとても悪いと思う。
0595nobodyさん
2010/10/31(日) 15:10:38ID:???0596nobodyさん
2010/11/01(月) 12:15:19ID:???0597nobodyさん
2010/11/01(月) 20:53:23ID:???0598nobodyさん
2010/11/01(月) 21:21:37ID:???0599nobodyさん
2010/11/01(月) 22:07:25ID:???0600nobodyさん
2010/11/01(月) 23:04:15ID:EIHh7aSpどの部分で、振り分け処理を記載してらいいですかね?
0601nobodyさん
2010/11/01(月) 23:40:28ID:???0602nobodyさん
2010/11/02(火) 00:02:44ID:yTnsmEW2ipで、振り分けようかと思ってるんですが
PEAR::Net_IPv4を使って、Bootstrap.phpで使用していいか悩んでます。
その後の、viewの振り分けもわからないですけ。。。
0603nobodyさん
2010/11/02(火) 00:03:15ID:???パソコンはphtml野間まで、携帯はhtmlに設定。
同一アドレスで同一サービスが提供可能に。
0604nobodyさん
2010/11/02(火) 00:47:33ID:???Bootstrapで携帯かPCかを判別して、
何らかの方法(FrontController、Request、Registry、etc)でControllerに渡せばいい。
振り分け方法はケースバイケースだが、面倒でなければ携帯用のViewクラスを用意するのが望ましい。
>>603
何故に拡張子?
テンプレートディレクトリで切り分けた方が良いんじゃね?
0605nobodyさん
2010/11/02(火) 01:07:52ID:???0606nobodyさん
2010/11/02(火) 01:28:32ID:???状況に応じて設定を変更したりする為のものだからな・・・
可能なら MobileBootstrap.php を作って、
リクエストを受け取る index.php でip判別して、Bootstrap自体を振り分ける方法もありかと。
0607nobodyさん
2010/11/02(火) 01:44:20ID:???表示内容とか含めてPCとモバイルでコントローラが同一でいいなら
>>603の方法を使うと思う。
0608nobodyさん
2010/11/02(火) 02:22:33ID:???0609nobodyさん
2010/11/02(火) 11:12:23ID:???今見たらinit()でこんな事してた
$this->_helper->layout->setLayout('mobile');
$this->view->setScriptPath(APPLICATION_PATH.'/views/scripts-mobile');
0610nobodyさん
2010/11/02(火) 11:43:50ID:???それが一番美しいやりかたかと思う。
ただしinitは複数回呼ばれる可能性があるので、気になる人は初期化済か否かのチェックをいれるなりした方が良い。
0611609
2010/11/02(火) 15:59:56ID:???誰も返事してくれてないしw なんかちょっと恥ずかしいぞ。 >>264
bootstrapでレイアウトを手動初期化する方法も書いてある
0612nobodyさん
2010/11/03(水) 01:33:55ID:???>>600
つZend_Http_UserAgent
いいタイミングw
0613nobodyさん
2010/11/03(水) 04:59:30ID:???クラス名も微妙に輪っか利辛いなぁ・・
Zend_Mobile_Deviceとかで良かったんじゃね?
0614nobodyさん
2010/11/03(水) 07:58:18ID:???0615nobodyさん
2010/11/03(水) 11:22:15ID:???hibernateやiBatis, S2Daoのような標準的なORMはいくつかあるのでしょうか?
0616nobodyさん
2010/11/03(水) 11:26:43ID:???0618nobodyさん
2010/11/03(水) 11:40:14ID:???0619nobodyさん
2010/11/03(水) 11:47:12ID:???0620nobodyさん
2010/11/03(水) 12:00:20ID:???0621nobodyさん
2010/11/03(水) 12:09:09ID:???0622nobodyさん
2010/11/03(水) 12:52:45ID:???標準的が何を示すのか不明だがZFならZend_Db_Tableあたりだ。
0623nobodyさん
2010/11/03(水) 13:06:02ID:???0624nobodyさん
2010/11/04(木) 00:39:38ID:1iy2rlVwlocalhost/diary/edit/y/2010/m/11/d/1 って形で入力画面(editアクション)を開くとします。
そうすると、まずこの時点でパラメータが日付にふさわしい型か
パラメータチェックする必要があると思うんですが、その処理を外部化したいんです。
↓こんな感じで(diaryコントローラ)
public function init(){
require('paramChk.func.php');//検証機能の外部化
}
public function editAction(){
$param=$this->getRequest()->getUserParam();
$checkAry = array(
array($param['y']=>array('required', 'numeric'),//パラメータyが必須かつ数値かチェック
array($param['m']=>array('required', 'numeric'),
array($param['d']=>array('required', 'numeric')
);
paramChk($checkAry);
}
このとき、実際の検証用外部関数paramChk()の中でエラー(不正の発見)があったとき、
エラーコントローラにリダイレクトさせたいんですが
function paramChk($ary){
//チェック処理省略
if($err) return $this->_redirect('/error/pt/paramerr');
}
とするとエラーが起きます(Using $this when not in object context in /var/www/application/inc/paramChk.func.php)
どうしたらいいんでしょうか? 検証処理は外部化しつつ検証エラーの時のリダイレクトまで実装したいです。
意見よろしくお願いします
0625nobodyさん
2010/11/04(木) 00:54:38ID:???0626nobodyさん
2010/11/04(木) 01:10:04ID:???・editAction側でリダイレクトさせる方法
if (!paramChk($checkAry)) $this->_redirect('/error/pt/paramerr');
・paramChk側でリダイレクトさせる方法1
paramChk($checkAry, $this); // $this(コントローラを引数で渡す)
function paramChk($ary, $controller){};
多分、前者の方が好ましい。
(paramChkもグローバル関数では無く、何らかのクラスに隠蔽すると尚良い)
0627nobodyさん
2010/11/04(木) 01:31:00ID:???0628nobodyさん
2010/11/04(木) 02:11:43ID:???0629624
2010/11/04(木) 11:44:09ID:???ありがとうございます。
なるほど、確かにエラーの時にfalse返してコントローラでリダイレクトの方が
あとあと便利そうですね!
「if (!paramChk($checkAry)) 」こういうの思いつかないのでホント聞いて良かったです
>paramChkもグローバル関数では無く、何らかのクラスに隠蔽すると尚良い
これはなぜですか?
0630nobodyさん
2010/11/04(木) 16:29:59ID:???>paramChkもグローバル関数では無く、何らかのクラスに隠蔽すると尚良い
>これはなぜですか?
他にparamChkという関数が存在していると不具合が出ちゃうからね。
値を検証するクラスを別に作り、必須や数値チェックするのもそちらに外部化する方が見通し良くなると思うよ。
以下簡単な例
・Controller側
$diary = new Diary($param['y'], $param['m'], $param['d']);
if ($diary->isValid()) $this->_redirect('/error/pt/paramerr');
・Diaryを処理するクラス
class Diary{
private $_param = array();
public function __construct($y, $m, $d) {
$this->_param['y'] = $y;
$this->_param['m'] = $m;
$this->_param['d'] = $d;
}
public function isValid() {
// $this->_param に正常な値が入っているかチェック
return true;
}
}
0631nobodyさん
2010/11/04(木) 20:13:18ID:???アクション内で
$this->reqParams('y', 'm', 'd');
基底コントローラ内で
public function reqParam() {
foreach (func_get_args() as $arg) {
if (!$this->hasParam($arg)) {
throws Hogehoge_Parameter_Exception();
}
}
みたいなことやってたよ
0632nobodyさん
2010/11/04(木) 21:06:11ID:???func_get_argsとか、array渡してextractとかやって
可変引数を扱うのにいまだに馴染めないんだけど
これらってバッドノウハウじゃないのかな?
0633nobodyさん
2010/11/04(木) 21:17:13ID:???可変引数はPHPにおいてはバッドノウハウでは無く、割と一般的なテクニックかと。
個人的にはfung_get_args()よりarray渡しを使うけど。
#extractは使う場面は思い浮かばない。
0634nobodyさん
2010/11/04(木) 21:18:32ID:???さすがにPHPの経験不足が露呈しすぎだぞ
0635nobodyさん
2010/11/04(木) 22:32:56ID:???というのも、 >>632 で書いたのもスレチなわけではなくて
ZFのViewHelperのForm**** 見てたらどれも
public function form****($name, $value = null, $attribs = null, $options = null, $listsep = "<br />\n")
{
$info = $this->_getInfo($name, $value, $attribs);
extract($info); // name, value, attribs, options, listsep, disable
みたいになってて、こんなのどうやって呼び出すんだよ…って思ったんだよ。。
こういうのってPHPでは無茶なやり方ではないのかな?
まあ、フレームワークでやってるってことは一般的なのか・・・
0636nobodyさん
2010/11/04(木) 23:16:22ID:???引数が限られているなら危険性もないし、逐一コード書くより統一性が取れて開発効率も上がるから使ってるんだろう
0637624
2010/11/05(金) 01:38:03ID:FPhbRDb9>他にparamChkという関数が存在していると不具合が出ちゃうから
なるほど、納得出来ました。paramChkクラスを作ってみます。
>if ($diary->isValid()) $this->_redirect('/error/pt/paramerr');
これは、ifの()の中ってこれで良いんですか?
trueを返す条件でエラーのリダイレクトにならないですか?
自分凄い勘違いしてるのかな
他の人の意見も勉強してみます
ありがとうございました
0638nobodyさん
2010/11/05(金) 02:12:03ID:???>>if ($diary->isValid()) $this->_redirect('/error/pt/paramerr');
>これは、ifの()の中ってこれで良いんですか?
ごめん。 if (!$diary->isValid()) だね。
0640nobodyさん
2010/11/05(金) 09:45:33ID:???JSONやXMLとの親和性もいいんじゃないか?
0641nobodyさん
2010/11/05(金) 16:52:21ID:???0642nobodyさん
2010/11/05(金) 19:40:31ID:???http://sourceforge.jp/magazine/10/11/05/0641258
0644nobodyさん
2010/11/06(土) 00:53:16ID:???普通は無尽蔵に可変なら配列で渡すし、
引数の数や型よって処理が変えたいのであればオーバーロードする。
PHPはオーバーロードが無いから仕方無い。
0646nobodyさん
2010/11/06(土) 01:11:09ID:???func_get_argsの話。
単に不特定多数の値を渡すだけなら配列渡しの方が見通しが良い。
func_get_argsは、引数の数をチェックして振る舞いを変える為にあるイメージ。(疑似オーバーロード)
まぁ好みの問題だろうけど。
0647nobodyさん
2010/11/06(土) 01:38:52ID:???0648nobodyさん
2010/11/06(土) 02:46:56ID:???配列渡しの書き方を省略したいだけなら array() でくくった方が良いと思う。
IDEとの相性も悪いし。
0649nobodyさん
2010/11/06(土) 02:49:53ID:???0650nobodyさん
2010/11/06(土) 03:05:36ID:???逆にarrayで囲わない理由は何だろうか?面倒だから?
0651nobodyさん
2010/11/06(土) 03:08:01ID:???0652nobodyさん
2010/11/06(土) 04:48:15ID:???うーん。そもそもオーバーロードの概念が無い人には説明し辛いんだが
function hoge($array) {}
function hoge($string, $string) {}
function hoge($string, $array) {}
という感じで、同名関数だけど引数によって処理が変わる場合に使うのが望ましいだよ。
ここまでは解る?
fung_get_args()で配列を受け取りたいだけならarrayを受け取る関数一つでもいいよね?
function hoge($array) {}
ここでまでは解る?
オーバーロードは本来、
受け取った引数の型や個数によって処理を振り分ける場合に有用なんだよ。
PHPじゃなくてプログラミング言語自体の基礎がついていれば普通は理解出来ると思うが。
0653nobodyさん
2010/11/06(土) 13:19:33ID:???func_get_argsがオーバーロードを実現するための関数だという根拠は何か
そしてそれを使うとどういう不具合が発生するのか
を聞いてるんだけど
0654nobodyさん
2010/11/06(土) 14:18:26ID:???0655nobodyさん
2010/11/06(土) 14:24:08ID:???オーバーロードは、引数の型や個数を関数を区別する情報の一部として扱うことで、
それぞれ別個の関数を定義する仕組み。
実行時に引数を見てシミュレートすることはできるだろうけど。
0656nobodyさん
2010/11/06(土) 14:32:07ID:???0658nobodyさん
2010/11/06(土) 17:36:17ID:???マニュアル嫁
http://php.net/manual/ja/function.func-get-args.php
逆に配列渡しにしない理由はなんだよ?
>>655
わかってるよ(>>646に書いてる)
0659nobodyさん
2010/11/06(土) 17:46:21ID:???引数を実行時に組み立てたいなら配列しかないだろうし、
printf的な使い方なら、いわゆる可変引数の方が直感的だろうし。
0662nobodyさん
2010/11/06(土) 21:23:28ID:???User Contributed Notesはユーザが勝手に追加するコメントだよ?
逆にいうとそこ載っているという事こそ、標準の使い方でないことの証明。
しかも数十件ある中で1件しかそんなこと書いてないからPHPユーザの中でもそんなことしてるのはマイナーと思われる。
0663nobodyさん
2010/11/06(土) 21:43:07ID:???>逆にいうとそこ載っているという事こそ、標準の使い方でないことの証明。
なんねーよw
func_get_argsが直接バグを生み出す訳では無い
・関数の内部処理を見ないとパラメータの扱いが解らない
・タイプヒンティングが使えない
・IDEによる補完機能が使えない
・バージョンによる挙動の違い
という制約が結果的に潜在的なバグを生み出しやすいって事だよ。
それらを踏まえて、単に複数パラメータを渡すだけならarrayを使い、
オーバーロード的な振る舞いを行いたい時にfunc_get_argsを使えば良い。
で、頑なに配列渡しを拒む理由は何なの?
0664nobodyさん
2010/11/07(日) 21:13:27ID:???いくつか見た感じ、ZFではオーバーロード的な振る舞いを狙った使い方はしてないかも?
ただ >>663 の
>単に複数パラメータを渡すだけならarrayを使い、
>オーバーロード的な振る舞いを行いたい時にfunc_get_argsを使えば良い
はわりと同意。
0665nobodyさん
2010/11/09(火) 09:47:23ID:???ありがとう。
検索してみたけど、確かにオーバーロード的な使い方はしてないね・・・(sprintf系が多い?)
個人的にIDEに洗脳されつつあるので、可変引数は毛嫌いしてたけど、
ちょっと引き出しが増えた気分だよ。ありがとう。
0666nobodyさん
2010/11/09(火) 17:16:52ID:bQQ5pU57$ret = $db->query("insert〜〜");
$rowCount = $ret->rowCount();
$errCode = $ret->errorCode();
if($rowCount == 1 && $errCode="00000"){//クエリは成功しました}
自分は普通、Zend_dbで単純なinsert処理とかをする場合は上記のようにクエリの成功/失敗を判別してるけど
トランザクション処理の場合、以下のようにやってます。
try{
$db->beginTransaction();//トランザクション開始
$lastInsertIdAry = array();
for($i=0; $i<$n; $i++){
$db->query(
"INSERT INTO `{$table}`(id,uType) VALUE(:id,:uType)",
array(':id'=>0, ':uType'=>$uType)
);
$lastInsertIdAry[$i]=$this->_dbConn->lastInsertId();
}
$db->commit();
return array('status'=>'success', 'insertIdAry'=>$lastInsertIdAry);
}catch (Zend_Db_Statement_Exception $e){//トランザクション失敗A
$db->rollBack();
$msg = $e->getMessage());
return array('status'=>'errorA', 'errorMsg'=>$msg);
}catch (Exception $e){//トランザクション失敗B
$msg = $e->getMessage();
return array('status'=>'errorB', 'errorMsg'=>$msg);
}
もっと効率的なやり方ないですか? またそもそもこの方法に穴はないでしょうか。
発生したエラーをログに残すのに効率的な方法を探してます。
0667nobodyさん
2010/11/09(火) 23:37:52ID:???あと何のDB使ってるか知らんけどidに0入れてauto incrementになるのかい
効率的といってもコード量なのかメモリ量なのか実行速度なのか可読性なのか開発効率なのか保守性なのか
何を重視するのかによる
0668nobodyさん
2010/11/09(火) 23:49:24ID:???> ・関数の内部処理を見ないとパラメータの扱いが解らない
> ・タイプヒンティングが使えない
> ・IDEによる補完機能が使えない
それって全部arrayでも同じじゃないの?
0672nobodyさん
2010/11/10(水) 00:22:28ID:???0673nobodyさん
2010/11/10(水) 00:31:38ID:???>・関数の内部処理を見ないとパラメータの扱いが解らない
これは少々語弊があるね・・・
パラメータの扱いではなく、必要なパラメータが関数の宣言を見るだけで解る。
(func_get_argsにすると内部処理を見ないとわからない)
(PHPDocに書けば別だが、IDEは認識出来ない)
>・タイプヒンティングが使えない
arrayは使える
>・IDEによる補完機能が使えない
引数定義しておけばパラメータ補完機能が働く
以下コード例
function hoge(array $array) {}
function hoge() { $array = func_get_args(); }
0674nobodyさん
2010/11/10(水) 14:17:57ID:JflIvKmc$referer = urlencode("http://www.yahoo.co.jp");
$this->_redirect('/hoge/user/taro/referer/'.$referer);
↑の方法でリダイレクトさせたら404 Not Foundが返ってきて困ってる
($refererを空欄にするとちゃんとリダイレクトできる)
$refererをurlencode()しなければリダイレクトは成功するけどrefererの値がhttp:になってしまうし
もしかしたらZend以前の問題かも知れないけどアドバイスお願いします
0676nobodyさん
2010/11/11(木) 19:52:34ID:???引数が多くなってきたらハッシュで渡すのが、メソッドオーバーロードのないスクリプト言語での常套手段だと思う。
0677nobodyさん
2010/11/11(木) 21:00:10ID:???0678nobodyさん
2010/11/12(金) 11:04:01ID:???ページのエレメントではないチェックボックスやテキストボックスの状態を
ページ移動後も維持したいのですが、
方法が分かりません。ページ移動すると初期状態にもどります。
Zend frameworkに何か仕組みはあるのでしょうか?
0679nobodyさん
2010/11/12(金) 12:11:24ID:???クライアント側で変更したなら当然Javascript使わなきゃだよ。
0680nobodyさん
2010/11/12(金) 12:21:47ID:???viewscript内のhrefって基本は自分で書くようになってるやん。
維持するのもリセットするのもあんた次第。
維持する項目が多くてPC用ならセッション使うのが普通。
0681nobodyさん
2010/11/12(金) 13:54:05ID:wenK3AdPBootstrapで初期処理を行うクラスとみて大丈夫でしょうか。
また、Bootstrap.phpで
protected function _initTest() {
$this->foo = 'var';
}
と変数を格納した場合、
class TestController extends Zend_Controller_Action
public function indexAction()
{
var_dump($this->foo);
}
}
のように、コントローラ側に値を渡すにはどうすれば良いのでしょうか
0682nobodyさん
2010/11/12(金) 16:52:02ID:???$this->getInvokeArg('bootstrap')->foo
0683nobodyさん
2010/11/12(金) 18:01:38ID:???いちいち必要なモジュール読み込んで
手続き書いていくだけでおなかいっぱいだよ・・
0685nobodyさん
2010/11/13(土) 01:50:36ID:???0686nobodyさん
2010/11/13(土) 09:44:11ID:YYAlO5qeちょっと違う
ブートストラップは、リソースを初期化してコンテナに保存する所なのよ。
つまりこう
protected function _initTest() {
$test = new stdClass;
$test->foo = "bar";
return $test;
}
とやるとtestという名前でコンテナ(レジストリ)に保存されるから、
あとはコントローラでもモデルでもビューでもどこからでも
ZendRegistry::get('test')->foo;
てやれば取り出せる
フロントコントローラとかビューとかDBとか良く使うリソースは、それ用のプラグインがあって、
初期値だけiniファイルで与えてやればコード書かなくても勝手に作られるようになってる。
0687nobodyさん
2010/11/13(土) 10:24:40ID:???/* @var $name ClassName */
を駆使すりゃどうにでもなるだろ
まぁ無駄なコードは増えるが
0688nobodyさん
2010/11/13(土) 10:47:24ID:???だからハッシュだとか可変引数だとかの議論はナンセンス
0689nobodyさん
2010/11/13(土) 10:54:25ID:???0690nobodyさん
2010/11/13(土) 11:35:43ID:???それはタイプヒンティングでは無い。
>>688
そんな事は名言されていない。
思想時に無かった故に、継ぎ足しされてカオスなコードになっているだけ。知ったか乙。
0691nobodyさん
2010/11/13(土) 12:00:49ID:???縛られてなんかないよ。
PHPでもやろうと思えばできる、やってもいいしやらなくてもいい、
ただ元々の設計思想が違うんだからJavaと同じようにできるわけがない、だからPHPがどうとかJavaならどうとかいう議論自体が無意味。
むしろ、OOP的に書かねばならないという方が凝り固まっているよ。
>>690
明言されてたら無条件に従うのか?w
思想時って何かよく分からないけど、上述の通りスタートが違うんだから仕様が違って当然。
カオスになって付いていけない?Perl的な書き方もC的な書き方もJava的な書き方もできるようにしましょう、ってだけの簡単な話だと思うが。
別に使うか使わないかはユーザの自由だよ。
0692nobodyさん
2010/11/13(土) 12:22:25ID:???議論の価値そのものを否定してるわけではないだろうし
そうしてる間にも俺はオナ禁してるわけで
0694nobodyさん
2010/11/13(土) 14:09:27ID:YYAlO5qeそんなことよりzendの話しようぜ。
>>686 たいぶ間違ってた、みんなごめん。ZendRegistry::set()/get()も簡単で悪くないと思うけど。
リソースが保存されるのはブートストラップの中にあるZend_Registryインスタンスだった。
だからアクションでtestリソースを得るには、
$this->getInvokeArg('bootstrap')->getResource('test')->foo
モデルとか外部から呼ぶときは、やっぱフロントコントローラのインスタンスからブートストラップを
とってくんのかな・・なんかまわりくどいような。
quickstartでDBアダプターどうなってんだろうと思って調べたら・・・!なんとで、Zend_Db_Tableの
staticなクラス変数にデフォルト値としてアダプタのインスタンスを突っ込んでたw
たしかブートストラップのリソースプラグインあたり
0695nobodyさん
2010/11/13(土) 17:25:56ID:YYAlO5qeZend_Applicationを使うときの話です。
リソースプラグインを書かず、一般に俺々リソースを注入するには
まず application.ini に
oreore.foo = bar
Bootstrapで、
protected function _initOreore()
{
$oreore = new Oreore($this->getOption('oreore'));
//または
$oreore = new Zend_Config($this->getOption('oreore'));
//または
$oreore = $this->getOption('oreore');
// または
Oreore::setDefaultOptions($this->getOption('oreore'));
return $oreore;
}
アクションコントローラで、
$this->getInvokeArg('bootstrap')->getResource('oreore')->foo
モデルで使うには、
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('oreore')->foo
またはアクションコントローラでモデルをnewするときに、
$this-_oremodel = new Oremodel(
$this->getInvokeArg('bootstrap')->getResource('oreore')
);
0697nobodyさん
2010/11/13(土) 17:30:24ID:???むしろ、フレームワークって凝り固めてブレを減らすためのツールじゃないの?
0698nobodyさん
2010/11/13(土) 18:43:11ID:???リードオンリーなら2番目の
return new Zend_Config($this->getOption('oreore'));
禿げしく推奨
0699nobodyさん
2010/11/13(土) 21:54:53ID:???検証を行うアクションを別にするとどうもしっくり来ない
検証エラーがあった場合に表示させることを考えると同じメソッドにした方が楽だけどそのへんどう?
0700nobodyさん
2010/11/14(日) 12:36:29ID:cYG57qWr0702nobodyさん
2010/11/14(日) 21:38:53ID:???$this->bootstrap('Request');
がなぜ使えないという事を聞いてるんですか?
普通に $_GET や $_POST 使えばいいのでは
0706nobodyさん
2010/11/15(月) 16:55:25ID:5FHMT34S最後にデータベースに格納したauto_increment_idを取得する場合、
last_insert_id()に値する関数はありますか?
(ちなみにZend_Dbを使っております)
0707nobodyさん
2010/11/15(月) 17:07:49ID:???こんなふうに DbTable でやっています。
$this->insert($data);
return $this->_db->lastInsertId();
0708nobodyさん
2010/11/15(月) 19:35:02ID:tul9B6Yrエラーの質問ですが
An error occurred
Application error
と出てエラー内容が出ないのですが、どこで設定できるのでしょうか
宜しくお願いします
0709nobodyさん
2010/11/15(月) 22:49:00ID:???insertの戻り値でもプライマリキー取れるよ。
>>707
http://framework.zend.com/manual/ja/learning.quickstart.create-project.html
Configurationの項目見る、環境変数はhtaccessで設定するようになってたと思う
0710nobodyさん
2010/11/16(火) 07:53:24ID:Rh5mS6i1あちがとうできました!
お陰でエラーの原因を突き止めやすくなりました
0711nobodyさん
2010/11/16(火) 09:45:32ID:???.htaccessかhttpd.confに
SetEnv APPLICATION_ENV development
0713nobodyさん
2010/11/19(金) 19:11:59ID:???該当モジュールにルーティングされようとなかろうと、
常に全モジュール初期化されるって仕様はどうなの。
モジュール別にPlugin動かしたりしたいのにわけわからなくなるだろ・・・
意味なくね?
0714nobodyさん
2010/11/19(金) 19:21:11ID:???豪にイラズンバゴウに従え。
0715nobodyさん
2010/11/19(金) 21:29:39ID:???というかZend_Controller系全般が微妙
0716nobodyさん
2010/11/21(日) 15:42:08ID:???亀ですまんが、モデルからFrontController参照するのは筋が悪いと思う。
モデルの単体テストが難しくなる。
サービスロケータでも作ってモデルインスタンス取得を初期化し、
そこでセットしてあげるのがいいんじゃないかな。
単体テスト時はsetUpでセットしてあげれば良いし、
モックをセットするようなことも簡単になる。
0717nobodyさん
2010/11/22(月) 11:29:12ID:???だいたいこうやっときゃ齟齬ないよってのが知りたいだけなんだけど。
たしかにモデルからFrontController参照するのは都合悪そうですな。
やっぱモデルのコンストラクタに必要なリソースを入れるのが普通ですかな。
0718nobodyさん
2010/11/22(月) 16:21:21ID:???Bootstrapでリクエストオブジェクトを使うには、自分でリソース化しなきゃだめ。
やり方はリファレンスガイドのZend_Applicationあたり参照。
リクエストオブジェクトってリソースって扱いじゃないみたい。
フロントコントローラで作られて、ルーター、ディスパッチャやコントローラーで共有してるって感じ。
0719nobodyさん
2010/11/24(水) 15:59:17ID:???htmlやjavascript並にちゃんと表示されて動けばいいジャンで終わってるし。
0720nobodyさん
2010/11/24(水) 16:08:32ID:???どっかに日本語で講義してるサイトとかあればいいなぁ
0721nobodyさん
2010/11/25(木) 23:18:34ID:???シングルトンだと思ってたらinitが何度も呼ばれてたりしてよくわからん。。
0722nobodyさん
2010/11/27(土) 01:59:15ID:???0723nobodyさん
2010/11/27(土) 15:01:11ID:PanI73UWpublic function init(){
echo $this->view->render('index/header.phtml');
exit();
}
正しくheader.phtmlは出力されるのですが、
$this->_helper->layout->header =$this->view->render('index/header.phtml');
として、
レイアウトスクリプトの中で、
<?php echo $this->layout()->header; ?>
としても何も出力されません。
なぜ出力されないのでしょうか?
0724nobodyさん
2010/11/27(土) 15:23:52ID:???0725nobodyさん
2010/11/27(土) 15:38:07ID:PanI73UWしかし、何も表示されないです・・・・。
0726nobodyさん
2010/11/27(土) 23:57:44ID:???<?php echo $this->header; ?>
0728nobodyさん
2010/11/29(月) 22:14:24ID:???基底クラスからコントローラー付きの_forwardが使えないのって仕様なんでしょうか?バグなんでしょうか?
require_once APPLICATION_PATH . '/controllers/AbstractController.php';
class IndexController extends AbstractController
{
public function adultAction()
{
die("adult");
}}
require_once APPLICATION_PATH . '/controllers/AbstractController.php';
class TestController extends AbstractController
{
public function init()
{
$this->setup();
}
public function indexAction()
{
// action body
}}
class AbstractController extends Zend_Controller_Action
{
protected function setup()
{
// $this->_forward("adult", "index");
$this->_forward("adult", "index");
//$this->_redirect("/index/adult");
}}
0729nobodyさん
2010/11/30(火) 10:35:10ID:???_forwardはinitじゃなくてpreDispatchで使う仕様。
無駄を省くためわざとそうなってんのかな。
0730nobodyさん
2010/11/30(火) 15:54:28ID:???そこまでして…という気がしなくもなくなってきたんですがまあせっかくなんで。
[command-line : production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.error_repotring = -1
phpSettings.log_errors = 1
resources.frontController.throwExceptions = 1
resources.frontController.noErrorHandler = 1
resources.frontController.noViewRenderer = 1
resources.frontController.disableOutputBuffering = 1
resources.layout.layoutPath =
resources.layout.layout =
↑残念ながらiniの値はunsetすることができずlayoutは作られてしまう。
どこかでdisableLayout()する必要がある。
あとはindex.phpのようなやつから以下のようにアプリケーション起動
My_は空っぽのやつを作る必要がある。たしかレスポンスのsendHeaders()は空メソッドでオーバーライド
Zend_Layout::startMvc()->disableLayout();
$application->bootstrap()
->getBootstrap()->getResource('FrontController')
->setRequest(new Zend_Controller_Request_Simple($action, $controller, NULL, $params))
->setRouter(new My_ZendControllerRouterRouteCli())
->setResponse(new My_ZendControllerResponseCli());
$application->run();
0731nobodyさん
2010/11/30(火) 16:28:36ID:???既存のアプリケーションのリソースやコントローラーを利用して
コマンドラインからほげほげするというものです。
0733728
2010/12/03(金) 19:24:14ID:zaEZnwnp0734nobodyさん
2010/12/03(金) 19:48:49ID:???0735nobodyさん
2010/12/03(金) 20:39:31ID:???0736nobodyさん
2010/12/04(土) 10:56:51ID:???zf固有の質問でなくて申し訳ないが、WEBアプリの一般的なロジックとして、
投稿時に投稿内容と投稿者キーをDBに挿入する為には投稿者キーはcookieで保持し続けるのだろうか?
0737nobodyさん
2010/12/04(土) 12:26:29ID:???0740nobodyさん
2010/12/06(月) 13:16:53ID:???736だぜ!!
Zend_Authですべて解決した。
よい子はちゃんとドキュメントを読むように!!
以上だ
0741nobodyさん
2010/12/07(火) 17:17:46ID:???頼むからそんなんで解決とかやめてくれ…
フレームワークは楽をする為のものであって
原理知らずに出来ちゃう便利な道具じゃないんだよう
せめて、Zend_Authの挙動を理解してから使ってくれよ
>>738
最近は暗号化してCookieに全部放り込むのもありだな
ガラケー死ぬけど
0742nobodyさん
2010/12/08(水) 10:39:51ID:???って言うんだったらお前がさっさと教えてやれよ
0743nobodyさん
2010/12/08(水) 11:19:43ID:???0744nobodyさん
2010/12/08(水) 16:45:27ID:???まあ落ち着け。
0745nobodyさん
2010/12/08(水) 17:11:03ID:???そういうレスは煽りって言うんだぜ低脳
0746nobodyさん
2010/12/08(水) 21:32:11ID:???0747nobodyさん
2010/12/09(木) 12:13:32ID:Z4PxvFs5catchでエラー処理すんのもめんどくさい
0748nobodyさん
2010/12/09(木) 15:20:40ID:???最初は俺もZend_Auth継承したクラスつかったりしてたけど、
Zend_Authあんまり意味ないよね。
今は独立したクラスで実装してるわ。
0749nobodyさん
2010/12/09(木) 21:35:22ID:???そういう箇所に限ってプロジェクト毎に処理ロジックが変わったりするし、
結局自作の認証/権限クラスを作るのがベストだと思った。
0751nobodyさん
2010/12/15(水) 09:01:50ID:rTeq7LP8できれば小中規模のもの
0752nobodyさん
2010/12/15(水) 09:23:09ID:???0753nobodyさん
2010/12/15(水) 16:16:05ID:???0754nobodyさん
2010/12/18(土) 13:33:22ID:???クラス設計が素直で自然であり、メソッド等の名前が判りやすく、品質の高さを
感じました。
ZFを知り、CakePHPが糞だってことに気づきました。
あ〜早めに気づいてよかった!
0755nobodyさん
2010/12/18(土) 15:52:16ID:???0756nobodyさん
2010/12/19(日) 03:41:25ID:???0757nobodyさん
2010/12/19(日) 10:03:56ID:???0758nobodyさん
2010/12/20(月) 10:28:03ID:???0759nobodyさん
2010/12/20(月) 19:04:35ID:BA8UBi3nhttp://localhost/Hoge/fuga/に
ブラウザからアクセスをするとApacheのエラーログに
PHP Notice: Use of undefined constant nul - assumed 'nul' in (ZFをインストールしているディレクトリ)/Zend/Controller/Dispatcher/Standard.php on line 262
と出力されてしまいます。
当該箇所には
$controller = new $className($request, $this->getResponse(), $this->getParams());
と記述されているだけなので、'nul'というのがどこから来ているのか検討もつきませんでした。
$classNameにはHogeが入って来ていました。。。
Noticeが出る原因は何が考えられますか?
よろしくお願いします。
0760nobodyさん
2010/12/20(月) 19:36:44ID:???(PHPは使えますがフレームワークは初めてです)
田舎なので立ち読みできず、AmazonのZF関係の
コメントなども少ないので・・・
0761nobodyさん
2010/12/20(月) 20:05:05ID:???http://framework.zend.com/manual/ja/
0762nobodyさん
2010/12/20(月) 22:24:17ID:???公式のマニュアルを見たのですが、プラグインを有効にする方法などが載っていませんでした。
検索したところ、海外のブログでいくつか見つかるくらいで、正しい方法がわかりません。
一応自分の見つけた情報をまとめておきます。
http://framework.zend.com/manual/ja/zend.controller.plugins.html
公式のマニュアル、プラグインをどこに登録するのか等がわかりませんでした。
http://codezine.jp/article/detail/2341?p=3
MVCを使ってない例
http://doremi.s206.xrea.com/zend/etc/plugin.html
正常に動作しない例
http://www.waysoflife.be/general/zend-front-controller-plugin-redirect-after-login-2/
プラグインをapplication.iniに書いて使う方法
http://blog.ekini.net/2009/06/04/registering-your-custom-plugins-in-zend-framework-18/
http://spokefire.co.uk/blog/2010/4/how-to-create-a-zend-controller-plugin
プラグインをbootstrapに書いて使う方法
application.iniに書く方法とbootstrapに書く方法は一応正常に動作しますが、
公式のマニュアルとはまったく違う方法でプラグインを読み込んでるので、これが本来の正しい方法なのかわかりません。
よろしくお願いします。
0763nobodyさん
2010/12/20(月) 22:48:41ID:???0764nobodyさん
2010/12/20(月) 23:07:07ID:???newを書くファイルって何が相応しいんでしょうか?
あとZend_Controller_Front::getInstanceを書く場所もわかりません。
0766nobodyさん
2010/12/20(月) 23:39:02ID:???0767nobodyさん
2010/12/21(火) 11:55:55ID:???実装次第でパフォーマンスや効率も変わってくるだろうし。
ただ、何も考えずルールに則って作りたい場合にはどうしても不向きだね。
あと使う人によって実装が異なってくるから、ルール作らず複数人で開発してしまうとごちゃごちゃする
(ZFに限った話じゃないけど)
0768nobodyさん
2010/12/21(火) 23:26:15ID:???0769nobodyさん
2010/12/22(水) 00:16:15ID:???0770nobodyさん
2010/12/22(水) 10:31:49ID:???(TemplateMethodに法った場合)
その場合ってmodel扱いでいいんですかね
class UserTable extends Zend_Db_Table
{
protected $_tableName = "user";
}
0771nobodyさん
2010/12/22(水) 23:20:20ID:???0772nobodyさん
2010/12/23(木) 15:14:15ID:8j0z9BIKpublic function indexAction(){
$form =new Zend_Form;
$form->clearDecorators();
$form->addDecorator( 'FormElements' )
->addDecorator( 'HtmlTag', array( 'tag'=>'dl', 'id'=>'controlPane' ) )
->addDecorator( 'Form' );
$form->setMethod('post')->setAction('/regist/add');
$form->setAttrib('id', 'registForm');
$form->setElementDecorators( array( 'ViewHelper', 'Label', array( 'HtmlTag', array( 'tag' => 'dt' ) ) ) );
$counroty =new Zend_Form_Element_Select('country');
$counroty->setLabel('言語');
$counroty->setDescription('<p>test</p>');
$counroty->addDecorator('Label', array('tag'=>'dt', 'class' => 'controlTitle' ) );
$form->addElement( $counroty );
$this->view->assign( 'form', $form );
}
今はこうなっています。
$counroty->setDescription('<p>test</p>');
で所用を達成できるかと思ったらうまくいきませんでした。
どうすればいいでしょうか?
0774nobodyさん
2010/12/23(木) 16:27:38ID:8j0z9BIKお返事ありがとうございます。
出かけないといけなくなりました。
後ほど正しく動作するコードが書けたら報告いたします。
0775nobodyさん
2010/12/24(金) 15:05:03ID:qkiZtUnD.htaccessを設定する必要がありますが、ここで質問があります。
この場合セキュリティが心配なのですが、どのようにhttpd.confを設定すればいいのでしょうか?
自分は基本的に.htaccessを使いたくない為に<Directory />、<Directory "/usr/local/apache2/htdocs">内で、
AllowOverride None
を設定しているので、本やネットに載っていなかった為に自分で勝手に
<Directory "/usr/local/apache2/htdocs/zf">
Options -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride all
Order allow,deny
Allow from all
</Directory>
と、ZFを使用するには設定せざるを得ませんでした。
ZFがapplicationディレクトリ以下をどのように使用するのかを詳しく分からない為にAllowOverride allにしましたが、
これではAllowOverride all等セキュリティに不安が残るような気がします。
現に、公開フォルダ外に置いたはずの/application/ディレクトリ内のファイルのパスの指定の仕方でさえも(自分には何故作用するのか仕組みが分かりませんが)rewriteエンジンが作動しているようで、offにするとZFが働かずエラーになります。
つまり公開フォルダ外の/application/ディレクトリにも.htaccessが作用しているとなるとセキュリティ上一体どう設定すればいいのか分かりません。
皆さんはどのようにして設定されているのでしょうか?
また、ZF使用時のApache関連の設定方法を詳しく説明しているサイト等ありませんでしょうか?
SymLinksIfOwnerMatchを設定しているのは、
[error] [client 127.0.0.1] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /usr/local/apache2/htdocs/zf/controller/request
等と出たために、FollowSymLinksは絶対に指定したく無かったために加えました。
0776nobodyさん
2010/12/24(金) 15:31:58ID:???0778759
2010/12/24(金) 16:59:30ID:lpwJZIX8結局わからずじまいでした。
どなたか何か思い当たる節があれば
アドバイス頂けないでしょうか。
0779nobodyさん
2010/12/24(金) 17:26:11ID:???0781775
2010/12/25(土) 16:06:14ID:???rewriteエンジンが非公開ディレクトリまで及んでいるようですが、ZFで公開するディレクトリ、そして公開しないWebコンテンツのアプリケーションディレクトリの為の
httpd.confの設定はセキュリティの観点から皆様はどのように設定していますでしょうか?
パーミッションは一応設定していますが、上記に書いた自分の設定ではどうも不安なのですが、セキュリティ的に大丈夫なのでしょうか?
0782nobodyさん
2010/12/25(土) 16:08:58ID:???そういうことなら
http://framework.zend.com/manual/ja/project-structure.rewrite.html
0783nobodyさん
2010/12/26(日) 17:27:17ID:A6fFNaADデフォルトではフォームはdlタグで囲まれ、ラベルはdtタグで囲まれ、コントロールはddタグで囲まれると思いますが、ddタグの中にテキストボックスとセレクトボックスなど複数のコントロールをいれたいと思っています。
ラベルは一つです。
生年月日:[テキストボックス]年 [セレクトボックス]月 [セレクトボックス]日
このようなイメージです。
Zend_Form_Decorator_Abstract派生クラスを用意して、
private $_element2; /* 二つ目の要素 */
private $_element3; /* 三つ目の要素 */
public fuction setElement2( $element2 ){/* 割愛 */} /* 二つ目のフォーム要素をセットする */
public fuction setElement3( $element2 ){/* 割愛 */} /* 三つ目のフォーム要素をセットする */
public function buildInput(){
/* 割愛 コントロールを三つ並べてddタグで囲む */
}
このようなデコレーターを作るのかな・・・と思ってはいるのですが、、、
Zend_Form->addElement(XXX)する際、三つのコントロールを同時にaddする方法がわかりません。
どのようにすればいいでしょうか?
0784nobodyさん
2010/12/31(金) 13:53:33ID:???Bootstrap内に変数を宣言しておき、それを
コントローラのメソッド内から参照したいのですが、方法がわかりません。
どうしたら良いのでしょうか?
0785nobodyさん
2010/12/31(金) 13:58:04ID:???0786nobodyさん
2011/01/02(日) 12:33:50ID:???ダウンロードしてオフライン利用できる便利なもののがあったんですね!
http://framework.zend.com/docs/translations
APIマニュアルも、英語だけどオフライン用。
http://framework.zend.com/docs/api
知らなかった・・・
0787nobodyさん
2011/01/02(日) 13:18:40ID:???0788nobodyさん
2011/01/02(日) 14:36:43ID:???検索しても同じリファレンスマニュアルの中途半端なコピーが山のように上位ヒットするし迷惑してる人多いと思う
0789nobodyさん
2011/01/02(日) 18:42:46ID:???0790nobodyさん
2011/01/08(土) 21:37:05ID:???0791nobodyさん
2011/01/08(土) 21:39:49ID:???0792nobodyさん
2011/01/09(日) 09:34:24ID:???ZFのモジュール設計は素晴しいと思う。
Cakeより100倍わかりやすい。
しかしQuickStartとAPIマニュアルだけでは、俺みたいな初学者には少々敷居が高いと感じました。
そこで、TIPS集みたいな情報があれば、大助かりです。
Webサイトの情報をあちこちかき集めれば自分なりのTIPS集ができるかもしれないけど、
初学者はかき集めた情報の正誤を判断することができないし、個々のTipsのドキュメント品質
を統一できないので、やはり本家本元のHPにTips情報があればいいなぁ・・・と思った次第です。
ぜいたくかな?
0793nobodyさん
2011/01/09(日) 10:52:06ID:???なんと言っても説明が下手くそだよな、それが解りにくくしている一因になってる
0795nobodyさん
2011/01/10(月) 02:57:48ID:???何がわからないのか、どこで躓いているのか、を明確にしておくれ。
FW自体に細かいルールが無く、
良くも悪くも自由に扱えるライブラリ群って感じなので、
自分のコーディング方法が正しいのか否かを判断するのは難しい気もする。
>>793
入門者向けに1から10まで説明が乗ってるリファレンスより遙かに情報をくみ取りやすいと思うが・・・
リファレンスでクラス概要を調べて、詳細はソースを読めばいいと思うよ。
0796nobodyさん
2011/01/10(月) 04:20:02ID:vXLRlMCo任意のエラーを返したいと思っています。
例えばウィジェットのためのアクションで、
メインアクションにてActionStackに追加->
最終的に任意のレイアウトセグメントに表示するなどして使うといった目的のものです。
自分の場合、ほとんどは放っておいてもActionの実行時エラーとなるのですが、
preDispatchなどの段階で制御したいです。
直接アクセスとその他(ActionStackで実行された等)を判別するには
どのような方法が考えられるでしょうか。
0797sage
2011/01/10(月) 12:43:35ID:???相変わらず「誰か」がやってくれるものだと思っている。
オープンソースなんだから足りないと思ったところはどんどん自分で参加して改善すればいい
0798nobodyさん
2011/01/10(月) 13:14:55ID:???addDecorator()はどのように書けばいいでしょうか?
0799792
2011/01/10(月) 22:06:24ID:???オープンソースだから足りないものを要求するのではなく、
そのコミュニティに参加し貢献すべきというのは、仰るとおりです。
しかしZFを理解できず挫折する方々も多いと思う。
私は残念ながらTipsを作成するだけ習熟していないが、習熟していない
が故に、初心者向けのドキュメントの不備(?)を指摘することで
微々たる貢献をしたつもりです。
つまりTips集があれば、多くのZF初心者を救えるのではないか、と思った次第。
ZFのコミュニティは上記のようなスタンスも許されないものなのでしょうか>797
0800nobodyさん
2011/01/10(月) 22:23:23ID:???279 :名無しんぼ@お腹いっぱい :2010/09/04(土) 08:48:29 ID:n1Pb5Cs90
>>274
世の中に男は三種類しかおらぬ
形は何であれ勝負に挑む勇敢な者。その勝者と敗者…
そして一生勝負に出ない腰抜けだが…
三つ目は論外だ。語るに値せん
295 :名無しんぼ@お腹いっぱい :2010/09/05(日) 21:24:40 ID:H9tr5CHz0
>>279
何かに似てると思った
これ思い出した
「薩摩の教え・男の順序」
一、何かに挑戦し、成功した人
二、何かに挑戦し、失敗した人
三、自分では挑戦していないが、挑戦する人を手助けした人
四、何もしない人
五、何もしないが、他人の批判だけをする人
0801nobodyさん
2011/01/10(月) 23:46:42ID:???>ZFのコミュニティは上記のようなスタンスも許されないものなのでしょうか
ZFに限らず、大抵の技術系コミュニティに言える事だけど、
何が解らなくて、何が足りないと思うのかを具体的に示さない限り、
学ぶ気も無い教えて君と認識されてスルーされるのがオチだよ。
単に「難しい」「理解し辛い」ってだけなら、基礎知識が足りてないだけだろうから、
PHP、プログラムの基礎、デザインパターンあたりのから学ぶべきだろうね。
余談だけど俺の周りにはそのタイプが多い、
基礎が出来てないけどFW導入すれば開発楽になるんでしょ?って人。
0803nobodyさん
2011/01/11(火) 11:39:37ID:+Q2uG4Ipアップロード後、http://www.youtube.com/watch?v=XXXXXXのXXXXXXの部分を取得することは出来たのですが、
変換処理が完了しているかどうかを識別するのはどうすればいいのかを教えていただけませんか。
やってみたことは下記でexceptionに入った場合はエラーになるという方法です。
===============================================
$yt = new Zend_Gdata_YouTube();
try{
$videoEntry = $yt->getVideoEntry("XXXXXX");
}catch(Exception $e){
//動画が存在しない
}
===============================================
しかしこれでは変換中のものはExceptionに入りませんでした。
よろしくお願いします。
0804nobodyさん
2011/01/11(火) 21:54:36ID:???UPしてからしばらくかかるとかあんの?
どちらにせよXMLの中身に出てくるんじゃないのか
0805797
2011/01/11(火) 22:44:01ID:???もし今まで誰も気づいていなくて、君が初めて指摘したことだったらもっと価値があったと思う。
でも、いままでマニュアルについてはいろいろな「指摘」がなされてきているから、残念なことにもう目新しい話じゃないんだ。
同じ要望を持つ人がどれだけいるかという投票にはなるけどね。
今の問題点はむしろ、「何が必要か」じゃなくて「誰がそれをやるか」だと思う。
なので、問題点の指摘にとどまらず、それを形にするところもリーダーシップを取って進めたらすばらしいことだと思う。
ちなみに zendframework.vla.jp こういうことをやっている人もいるのを見つけているので、ここにみんなで肉付けしていくのでもいいんじゃないかな
0806nobodyさん
2011/01/17(月) 22:59:36ID:???いつからダウンロードするのにログイン登録しなきゃいけなくなった?
マジうざいんですけど・・・
0807nobodyさん
2011/01/17(月) 23:02:06ID:???0808nobodyさん
2011/01/17(月) 23:06:33ID:???http://www.zend.com/community/downloads
ここからZipを取ろうと思ったらログイン画面に飛ばされましたけど
どうにかしてログインしなくても済むのですか?
0809nobodyさん
2011/01/17(月) 23:12:11ID:???http://framework.zend.com/download/latest
ここから落とせるよ
0811nobodyさん
2011/01/17(月) 23:31:02ID:???皆さんはprepare()→execute()等でSQL文を書いていますか?
それともZend_Db_Tableクラスによるメソッドチェーンを利用していますでしょうか?
インピーダンスミスマッチの問題、動的な抽出条件、セキュアを意識しなくても良い等を考えればZend_Db_Tableクラスを利用した方がいいのかもしれませんが、
O/Rマッピングによるパフォーマンスの低下と、自分の思ったようなSQL文が書けるのか?と思うとどっちがいいのか分かりません。
確かに、一般的なSELECT文等であればZend_Db_Tableクラスの方がいいのかもしれませんが、複雑な連結とかした場合や、
また、パフォーマンスチューニングをZend_Db_Tableクラスで作った文で出来るのかな?と思うと普通にSQL文を書いた方がいいのかな、とか思ったりします。
ただ、記法の楽さやコードの変更時等は圧倒的にメソッドチェーンの方が楽そうですけど。
実際ZFで運用している方はどちらの記法で運用していますでしょうか?
0812nobodyさん
2011/01/17(月) 23:32:06ID:???0813nobodyさん
2011/01/18(火) 00:42:18ID:???いや、そういうわけではなく、使いにくそうな気がして、実運用上で使用されているのかな?よ思いまして
確かにif文やforeachから動的に入れ込み、色々と楽に出来るのは分かるのですが、SQLとしてはどうなのかなと
ま、商品管理からするとblogシステムとかではさほど難しいSQLもないので大丈夫かもしれませんが
0814nobodyさん
2011/01/18(火) 00:45:13ID:???理由はSQL書くの好きだからです。
0815nobodyさん
2011/01/18(火) 13:22:00ID:???quickstartのGuestbookMapper見て使いづらそうだったんで。ちょっとかっこいいとは思うんだけどw
Zend_Dbを素で使うときはprepareじゃなくてqueryだったような。
条件によってSQLを変えたいときはZend_Db_Selectが便利ですよん
0816nobodyさん
2011/01/18(火) 17:53:24ID:???ゲロコードになる
が、複雑なセレクト、サマリ更新、式やサブクエリ含むアップデートは結局手でゴリゴリ書かないとむずかしい
queryとTable系でトランザクション違うのか混ぜるな危険を感じた事があった
今時リファレンスが無い()笑とか言われるかも知れないけど多分最新の安定バージョンなんだorz
0818nobodyさん
2011/01/19(水) 09:21:24ID:???自分はSQLの書き方が分かりにくくなるので使っていません
後、純粋なSQL文に慣れているので
逆に、Zend_Db_Tableを運用上で使っている人に意見を聞いてみたいなぁ
自分には知らない便利な活用法なんかあるかもしれないからね
0819nobodyさん
2011/01/19(水) 13:34:46ID:???1つのテーブルに対する単純なCRUDにはZend_Db_Table使ってる。
select()等のメソッドチェーンは使っていないが便利だよ。
// テーブル定義のキャッシュ使う
Zend_Db_Table::setDefaultMetadataCache($zendCache);
// テーブルのO/Rマッパ作成
$table = new Zend_Db_Table(array(xxxxxx));
$row = $table->find($id)->current(); // キーで検索
$row = $table->createRow(); // 新規行の作成
// 行を更新して保存
$row->fieldName = "fieldValue";
$row->save();
// 行を削除
$row->delete();
こんな感じに書ける。
Zend_Db_Tableインスタンスを取得するショートカットメソッド定義しておけば、
$row = getUserTable()->find($userId)->current();
$row->fieldName = "xxxxxx";
$row->save();
と数行で書ける。
>>817
>queryとTable系でトランザクション違うのか混ぜるな危険を感じた事があった
トランザクションはDb_Adapter単位なので、意識してれば混在しても問題無いよ。
0820nobodyさん
2011/01/19(水) 14:32:35ID:???せっかちな人はモデルからfetch結果(Zend_Db_Table_Rowset)を返してそのままviewに突っ込めばいいのか。
quickstartのこの実装はいったい何だったんだw 生真面目?
DB → Application_Model_DbTable_Guestbook → Application_Model_GuestbookMapper → Application_Model_Guestbook → view
0822nobodyさん
2011/01/21(金) 13:54:46ID:???Zend_Db_Tableを利用してるのにもかかわらず、さらに自前でMapper書いてるというとこでしょ。
0823nobodyさん
2011/01/21(金) 14:41:21ID:???DB ←Application_Model_Guestbook(Zend_Db_Tableを継承、もしくは内包) ← Controller
くらいが妥当だよな。
0824nobodyさん
2011/01/21(金) 15:02:52ID:???Skinny Controller Fat Model を表現したかったんだろうけどプロジェクトが小さすぎて
かえって違和感がでてしまったんじゃなかろうか。
0825nobodyさん
2011/01/21(金) 17:36:26ID:???自分はフロントコントローラ、DB、その他って位しか主に使ってないんだけど・・・
例えばValidateなんかも何かめんどくさくて、自分で実装した方がいいような気がしたり
0826nobodyさん
2011/01/21(金) 17:53:03ID:???0827nobodyさん
2011/01/22(土) 00:10:22ID:???WEBサービス系のクラスもいざって時に役に立つ。
0828nobodyさん
2011/01/22(土) 00:32:46ID:???アレはほんと便利。
Zend_Db_Tableが複雑なSQLを書くとき〜云々の件は、普通にView書いたりすれば
記述する方もある程度すっきりしたりするのではないの?
0829nobodyさん
2011/01/22(土) 18:46:55ID:???0830nobodyさん
2011/01/22(土) 18:48:09ID:???0832nobodyさん
2011/01/22(土) 23:12:35ID:???0833nobodyさん
2011/01/22(土) 23:28:16ID:???すみません。
背景を説明します。
Zend_Formの派生クラスを作ってまして、その派生クラスをアクションクラスの中で使っています。
アクションクラス内では$this->getRequest()->getParams()で取得できますが、Zend_Formの派生クラスの内部でgetRequest()する方法はないでしょうか?
0834nobodyさん
2011/01/22(土) 23:49:19ID:???0835nobodyさん
2011/01/22(土) 23:53:51ID:???$form =new MyZend_Form( $this->getRequest());
として、MyZend_Formのコンストラクタに渡すとエラーがでます。
0836nobodyさん
2011/01/23(日) 00:02:50ID:???0837nobodyさん
2011/01/23(日) 04:08:35ID:???Zend_Controller_Front::getInstance()->getRequest()
じゃだめなの?
0838nobodyさん
2011/01/23(日) 11:24:33ID:???あだ名付けようぜ、今日からお前「グダ質」な
お前相当仕事でストレスたまってんだろ
はっきり言って見苦しいぞ
スレにケチつける暇あったらコード書け
0841nobodyさん
2011/01/23(日) 13:42:14ID:???0842nobodyさん
2011/01/23(日) 15:24:06ID:???$request = Zend_Controller_Front::getInstance()->getRequest(); でもいいし、
$request = new Zend_Controller_Request_Http(); でもいいし、
$request = Zend_Registry::get("REQUEST"); でもいいし、
$request = $_POST; でもよい。
0843nobodyさん
2011/01/23(日) 18:41:07ID:???ZFでエラーが起きた行を表示してくれる機能などあるのでしょうか?
0844nobodyさん
2011/01/23(日) 18:54:57ID:???0845843
2011/01/23(日) 18:57:36ID:???自動で行ってくれないかなと思って質問しました
0846nobodyさん
2011/01/23(日) 18:59:06ID:???0847nobodyさん
2011/01/24(月) 02:13:32ID:???開発環境にxdebug入れてるが、自動でエラートレースしてくれて便利だよ。
それが無理なら、
エラーと例外のハンドラ作って、var_dump(debug_backtrace()) とでも書いとけ。
0848759
2011/01/24(月) 19:25:07ID:???その後の報告ですが、
やっと原因がわかりました。
Hogeクラスの親クラスのプロパティの初期値に
nullと設定すべきところを
nulとしていたのが原因でした。
お騒がせいたしました。
0849nobodyさん
2011/01/24(月) 21:15:03ID:mS3EM73vclass IndexController extends Zend_Controller_Action{
public function indexAction(){
a
}
}
ってするとパースエラーが表示されますが、
class IndexController extends Zend_Controller_Action{
public function indexAction(){
$this->hoge();
}
}
ってするとエラーハンドラにキャッチされてerror.phtmlが表示されてしまいます。
エラーハンドラを無効化しようとBootstrap::_initView()に
$front=Zend_Controller_Front::getInstance();
$front->setParam('noErrorHandler', true);
と書くと、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><META content="IE=5.0000" http-equiv="X-UA-Compatible">
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>
という書いたことのない謎のソースが表示されてしまいます。
ふつーにUncaught Exceptionって表示させたいだけなんですがどうすればいいのでしょうか。
0850nobodyさん
2011/01/25(火) 02:21:16ID:???Bootstrap::_initView() に
$front->throwExceptions(true);
または
$front->setResponse(new Zend_Controller_Response_Http())
->getResponse()->renderExceptions(true);
ソースは以下
Zend_Controller_Front::dispatch()
} catch (Exception $e) {
if ($this->throwExceptions()) {
throw $e;
}
$this->_response->setException($e);
}
Zend_Controller_Response_Abstract::sendResponse()
if ($this->isException() && $this->renderExceptions()) {
0851nobodyさん
2011/01/25(火) 02:50:09ID:???Zend_Applicationを導入する優位性を教えてくれないか?
煽りとかでは無く、
アプリケーションの起動処理って、分岐の無いロジックかつ、アプリケーション固有処理が入る事が多いので汎用クラス(Zend_Application)を使うメリットが感じられないんだ。
0852nobodyさん
2011/01/25(火) 10:44:20ID:???してくれる。やってることはZend_Applicationを使わない場合でもそう変りないはずだよん。
むしろ一番フレームワークらしい気がする。
0853nobodyさん
2011/01/25(火) 11:05:16ID:???自分でカスタマイズするときは、application.iniでパラメーター変更したり、クラス名変更したり、
Bootstrapで自分でnewするんだす。
0854nobodyさん
2011/01/25(火) 12:15:31ID:???ありがとう!
やっぱ基本的な初期化処理とかを行うクラスみたいだね。
元々BootstrapもApplicationも無いバージョンから使ってて、
独自クラスで実装してたんだけど、乗り換えてもあまり大差なさそうだ・・・
暇を見つけて乗り換え検証してみるよ。
0855nobodyさん
2011/01/25(火) 21:14:33ID:Mp2xKR4sできた!さんくす
…Zend_Applicationは巨大すぎて把握しきれんわ
あとvar_dumpしたら至る所に*RECURSION*って出てくるんだが大丈夫なんだろうか?
0856nobodyさん
2011/01/25(火) 21:22:58ID:???0857nobodyさん
2011/01/25(火) 23:20:26ID:???大丈夫。
リファレンス値が入っていると無限階層になっちゃうから、
そういう変数はRECRUSIONと表示される。
0858nobodyさん
2011/01/29(土) 00:59:18ID:gRK6VmbLZend_Application使ってるとき、
・ビュー内で$this->baseUrl()するとindex.phpまでのパスが取得できる
・コントローラ内で$this->view->baseUrl()するとindex.phpまでのパスが取得できる
でも、
・ブートストラップ内で
$view = new Zend_View();
$view->baseUrl();
ってやってもNULLになります。
アプリ全体で使うものについて
protected function _initView(){
$view = new Zend_View();
$view->headScript()->appendFile($view->baseUrl() . 'js/jquery.js');
}
とかやりたかったんですが普通はどこらへんでやるものなんですかね?
0860nobodyさん
2011/01/29(土) 01:55:56ID:gRK6VmbL0861nobodyさん
2011/01/29(土) 01:58:15ID:???0862nobodyさん
2011/01/29(土) 03:40:53ID:???$request = new Zend_Controller_Request_Http();
$baseUrl = $request->getBaseUrl();
0863nobodyさん
2011/01/29(土) 06:44:22ID:???デザインも複雑な場合(チェックボックスの最初の1個だけラベルが二つとか)、
Zend_Form_Elementを使ってフォームの要素を出力しようとすると、フォームの要素の部分がすげーめんどくさいんだが、
なんとか楽にやる方法ないかな?
0864nobodyさん
2011/01/29(土) 11:49:18ID:???0865nobodyさん
2011/01/29(土) 23:04:56ID:???Locale/Data/ja.xml に和暦のデータ(calendar[@type="japanese"])
が入っていたので扱えるのかと思ったんですが、
Zend_DateのtoString('GGG')などとしたときのコードを追っていくと
使うデータが calendar[@type="gregorian"] 決め打ちみたいで
「紀元前」と「西暦」しか出てきません。
Zend_Dateを継承して自分で日本のものを作らないとだめでしょうか?
0866nobodyさん
2011/01/30(日) 03:02:00ID:???0867nobodyさん
2011/01/30(日) 11:13:05ID:Mz9WohIAZend_View
これ以外で覚えたらいいの教えてください
0868nobodyさん
2011/01/30(日) 13:07:07ID:???覚えたらいいのってのも漠然だけど
Zend_Layout
大抵使う
Zend_Date
Zend_Log
Zend_Cache
Zend_Mail
Zend_Session
この辺は手軽に使えるから試すのも楽
腐れ実装もあるけど
Zend_Application
Zend_Config
Zend_Db
Zend_Form
フレームワークとして使い込む度合いで
この辺りも
他は需要と実装に応じて
0869nobodyさん
2011/01/30(日) 13:13:17ID:???0870nobodyさん
2011/01/30(日) 13:15:42ID:???自前のクラス使ったままだったわ
でも、確かにZend_Formやら使う時は必須ね
0871nobodyさん
2011/01/30(日) 13:46:43ID:???cakephp|CIと,ZFを使い分けるべきって
どういうケースにcakephp|CIを利用してどういうケースにZFを使うんですか?
0873nobodyさん
2011/01/30(日) 15:27:59ID:???0876nobodyさん
2011/01/30(日) 18:15:38ID:7lsYYH4G逆にその先輩だか同僚だかに使い分けの理由を聞いて結果をここに晒してくれ。
0878nobodyさん
2011/01/31(月) 06:55:28ID:???複合主キーをもつDBのシステムを作るときはZF、単一の主キーだけで構成
されるDBを扱う場合はCakePHP、とか言いそうだなそいつ。
どちらかに統一したほうが、スキル習得コストの面でも作成するコードの品質面
でも将来のメンテナンスの面でも、いいよ。
似たようなスキルを分散するのは、良くない。
てか、その先輩はそんな事は承知の上で言っているんだろうから、単に両方使
えますと威張りたいだけ。
そんな人の言葉を真に受ける必要はないと思うよ。
0879nobodyさん
2011/01/31(月) 09:15:17ID:???上でZend_Formの事書かれてるけど、皆アレ使ってるんだ・・・
俺はマニュアル見て「何だコレ、めんどくせぇ」と、逆にぐちゃぐちゃになりそうだったから止めたんだけど
単純なフォームを作成するだけでもかなり長いコードになりそうな気がしてるんだけど結構使い勝手いいものなの?
もしそうだったら学習しなおそうかな
0880nobodyさん
2011/01/31(月) 09:55:25ID:???0881nobodyさん
2011/01/31(月) 12:59:08ID:???普段はsymfony使いだけどzendでやるところに呼ばれたらzendもできるし、cakeでやる人に呼ばれたらcakeでやる。
俺俺のところに呼ばれたらその俺俺を学習して使ってみせるよ。
0882nobodyさん
2011/01/31(月) 13:19:04ID:???トップページ
お問い合わせ
会社紹介
求人
製品紹介
各製品のページ(5ページ程度。デザインは使いまわし)
0883nobodyさん
2011/01/31(月) 13:24:47ID:???0884nobodyさん
2011/01/31(月) 15:27:51ID:???既製のもので適わないなにかあるなともかく
0886nobodyさん
2011/01/31(月) 19:09:35ID:???Firefoxだと一番下にチェックつけると一番上にもチェックがつく。
IEとChromeだと一番下にチェックつけると一番上が一瞬選択状態になる。
あとチェックを解除するためにチェック済みの項目をクリックするとチェックがはずれないことがある。
フォームはViewに手書きしてValidateを手動で使うのが良さそう。
Zend_Formは概要を理解するまでがはてしなくめんどくさい。
理解しても細かいとこを覚えきれないから結局これどうやんだっけって調べるはめになる。
ちょっと機能詰め込みすぎて逆に使いにくい。
うまいこと分割していけば使いやすい物になると思う。
0887nobodyさん
2011/01/31(月) 22:00:47ID:???所詮HTMLを出力するだけなのに、学習コストが高すぎる。
Validateは基本英語ってのが微妙だし、
自分で一度作ってしまえば延々使い回せるものなので使いやすいクラスを自作している。
(Zend_Validateを扱えるAdaptorも一応用意してある)
逆に一度覚ると楽で手放せないのは、
Zend_Session、Zend_Cache、Zend_Dbくらいかなぁ・・・
Zend_Log、Zend_Mailは俺俺クラスで一枚ラップしてやらないと微妙に使いにくい気がする。
0888nobodyさん
2011/01/31(月) 22:10:12ID:???自力開発能力ほんとないのな
0889nobodyさん
2011/01/31(月) 22:44:21ID:???日本語だってBootstrap.phpで対応可能で、
カスタマイズするのも元があるから簡単よ。
public function _initValidate()
{
$lang = 'en';
$locale = new Zend_Locale();
if ($locale->getLanguage() === 'ja')
{
$lang = 'ja';
}
$translater = new Zend_Translate(
array(
'adapter' => 'array',
'content' => APPLICATION_PATH . '/../resource/languages',
'lang' => $lang,
'scan' => Zend_Translate::LOCALE_DIRECTORY
));
Zend_Validate_Abstract::setDefaultTranslater($translater);
}
0891nobodyさん
2011/01/31(月) 23:15:07ID:???CMSって使ってる?
俺使ったことないんだけど
どんなの使ってるの?
xoopsとか?
というかさ、CMS使ったら別に俺たち要らなくなるような気がするんだよな
0892nobodyさん
2011/01/31(月) 23:16:29ID:???複数項目チェインさせたり、条件分岐させる場合に使いにくいと感じたなぁ。
コードをZFで統一する美しさには惹かれるけど、
いちいち調べてカスタマイズして・・・ってやる程のモノでも無いと感じたから、自分で書いちゃった。
>>888
車輪の再発明したのに、自己開発能力無いと言われるとは思わなかったわw
>>889
ありがとう。試してみるよ!
0893nobodyさん
2011/01/31(月) 23:18:49ID:???0894nobodyさん
2011/01/31(月) 23:24:18ID:???大抵のプログラムは再発明を得てブラッシュアップされていくものだ。
多分、今君が書いてるプログラムも、世の中探せば既存コードがある。
探す手間をかけるか、自分で書いて理解を深めるか、好きにすればいい。
0895nobodyさん
2011/01/31(月) 23:25:19ID:???0896nobodyさん
2011/01/31(月) 23:54:50ID:???ありがとう!できた!
一体どうやって調べるんだこういうの!
ただそのままリクエスト引き回そうとしたら
$request->getParams()がNULLだった。
Smartyでいう$smarty.request的なものってViewにありませんか?
Viewでvar_dump($this)ってしたかぎりではそれっぽいものは見あたりませんでした。
とりあえずコントローラのinitで
$this->view->request = $this->getRequest()->getParams()って
やったんだが、もっと汎用的な方法ってあるよね?
0897nobodyさん
2011/02/01(火) 01:31:02ID:???Zend_View(_Abstract)自体には、Requestを保持する機構は無いみたいなのでそれでOKかと。
もしくはgetRequestを実装した、Zend_View継承クラスを使うとかかね。
__get / __set マジックメソッド使ってるからvar_dumpでは解読出来ないよね・・・
IDEとか使ってソースコード追うのが一番早いよ。
0898nobodyさん
2011/02/01(火) 01:34:01ID:???$router = new Zend_Controller_Router_Rewrite();
$request = $router->route(new Zend_Controller_Request_Http());
var_dump($request->getParams());
っていう意味?
つーか、ここまでやっちゃうともうZend_Controller_Front::dispatch()丸パクリだから
本当にそこでする必要があるのか悩んでみてもいいかも。
調べるのはZend Frameworkのソースをgrepで検索してる。
0899nobodyさん
2011/02/01(火) 10:04:22ID:???色々と議論されていますが、
皆さんどれくらいの規模のシステムを開発されてますか?
フレームワークの選定権とかもたれているのですか?
0900nobodyさん
2011/02/01(火) 10:37:13ID:???Zend_Validateの派生クラスを生成するクラスを作っておけば、使い回しもできて便利だと思うのだけど。
0901nobodyさん
2011/02/01(火) 11:22:37ID:???特にForm
Layout、MVCとかと一緒にすると自分には逆に混乱してしまう
0903nobodyさん
2011/02/01(火) 14:25:39ID:???<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
0904nobodyさん
2011/02/01(火) 16:11:09ID:???大した事してないのにコード追うのが面倒になるので使ってねーや。
(というかちょっと前のバージョンには存在して無かった)
疎結合で好きな機能だけ使えるのもウリなのに、
最近は兎に角あるものは極力ZFを使うべきって流れになってて嫌だなぁ
0906nobodyさん
2011/02/01(火) 16:29:11ID:???setting.php
$a="ヘッダ";
$b="メイン文章";
$c="フッタ";
index.php
<?php
include "setting.php";
echo <<<HTML
<div id="header">$a</div>
<div id="main">$b</div>
<div id="footer">$c</div>
0907nobodyさん
2011/02/01(火) 17:23:30ID:???デザインとロジックを分けるためだけにFWを導入するわけでは無い。
それ以前に君の例だと、
ViewからController(?)であるsetting.phpを呼び出している時点でMVCのなんたるかすら理解していないと思われる。
基礎からお勉強してきなさい。
0908nobodyさん
2011/02/01(火) 18:31:42ID:???setting.php
$a="ヘッダ";
$b="メイン文章";
$c="フッタ";
include "index.php";
index.php
<?php
echo <<<HTML
<div id="header">$a</div>
<div id="main">$b</div>
<div id="footer">$c</div>
略
0910nobodyさん
2011/02/01(火) 18:56:17ID:???自分がついていけないから、必死でフレームワークの存在を否定したいんだよ。
クラス設計とか全く出来なそうな臭いがするな。
0911nobodyさん
2011/02/01(火) 19:01:27ID:???まぁ、それ以前の問題だけどドヤ顔で>>908を出しちゃうあたり微笑ましい。
専門学校生以下。間違っても職場にいたら足を引っ張るタイプ。
0912nobodyさん
2011/02/01(火) 19:09:19ID:???jsonファイルやxmlファイルやcsvファイルはどこにドキュメントルートの外に置く場合は置いたらいいですか?
0913nobodyさん
2011/02/01(火) 19:23:37ID:???データとかなら data/resources とか好きにディレクトリ作ればいいと思うよ。
推奨プロジェクト・ディレクトリは良くも悪くも冗長で、時として管理し辛い。
0914nobodyさん
2011/02/01(火) 19:31:34ID:???0915nobodyさん
2011/02/01(火) 20:59:45ID:???<li>メニュー1</li>
<li>メニュー2
<ul>
<li>サブリンク1</li>
<li>サブリンク2</li>
</ul>
</li>
<li>メニュー3</li>
</ul>
これをZend_Navigatorで表示したいのですがどなたか教えてください
0916nobodyさん
2011/02/01(火) 22:53:14ID:???0917nobodyさん
2011/02/02(水) 01:22:54ID:???http://framework.zend.com/manual/ja/zend.navigation.containers.html これの
「例7 Converting a container to an array」で$container = Zend_Navigationうんちゃらをコピーする。
フロントコントローラを使っているなら、
Bootstrap.phpにpublic function _initNavigation()作ってそこに貼り付けて、
Zend_Registry::set('Zend_Navigation', $container); しておく。
表示は view/scripts/ にあるphtmlのなかで
<?php echo $this->navigation()->menu(); ?> とする。
使ってないなら
$container->toArray()から作るのかなぁ?
0918nobodyさん
2011/02/02(水) 03:21:43ID:???素朴な疑問なんだが、なんでHTMLを書こうとせず、壁にぶつかってまで自動生成しようとするの?
後々カスタマイズとか非常に面倒な気がするんだが・・・
慣れると手書きよりカスタマイズ性と運用性が上がるとか?
0919nobodyさん
2011/02/02(水) 03:28:13ID:???0920nobodyさん
2011/02/02(水) 09:31:38ID:???Zend_Frameworkde作られたWebサイト、Webアプリなどのソースコードを出しているようなサイトとかCMS等は何かありませんか?
マニュアルとかの断片的なものではなく、実際どのように製品として組み立てているのかとかを学びたいのですが
0921nobodyさん
2011/02/02(水) 09:52:56ID:???TomatoCMS http://www.tomatocms.com/
SetucoCMS http://sourceforge.jp/projects/setucocms/
Live Commerce ! http://www.live-commerce.com/
有名所だと、こんぐらいかね。
Xoops本家の次期版が採用って聞いた気もする。
0922nobodyさん
2011/02/02(水) 11:01:32ID:???<link type="text/css" rel="stylesheet"href="http://example.com/style.css">
っていうタグを全ページに入れたいのですが???Cntroller.phpのfunction ???Action(){〜}で一つ一つアサインしてます
これだとstyle.cssを書き換えると手間がかかってしまうのでいい方法ありませんか?
0923nobodyさん
2011/02/02(水) 11:02:21ID:???×前頁
○全ページ
0924nobodyさん
2011/02/02(水) 11:34:25ID:???Zend_Layoutは、そういう用途のためのもの。
取り敢えず、全体に1回でいいから目を通したほうがいいよ。
0925nobodyさん
2011/02/02(水) 13:50:05ID:???俺はZend_Controller_Actionを継承した中間クラスを作って、init()でアサインするという手でやってる。
0927nobodyさん
2011/02/02(水) 14:53:36ID:???俺はSmartyを連携させて使ってる。俺はこっちの方が楽だ。
0928nobodyさん
2011/02/02(水) 16:07:58ID:???ありがとうございます
0930917
2011/02/02(水) 19:53:18ID:???正直、手書きも含めて自作しちゃうのが簡単だとは思うw
あえて利点を挙げるなら、パンくずリストとサイトマップにも
変換可能ってところかな。
0931nobodyさん
2011/02/03(木) 05:28:20ID:???なじみの無い人には
「パッと見のコードは綺麗だし、IDEとの親和性も良いが、実際使うには冗長な気がする。
疎結合なのは良いが、ドキュメントやサンプルが無いとその関連性が理解出来ず苦労する。」
と、あまり評価がよろしくないw
結局自作クラス群を更にラップするクラス群を作る事になっている件・・・orz
極例だけどStringクラスがあったとして
A) $str = String::create("xxx")->convertEncoding("utf-8")->convertKana("KV")->toUpper()->toString();
B) $str = String::convert(array(options));
C) $str = String::convert($str, "utf-8", "KV", "UP");
AとBは面倒らしい。
パラメータや処理が増えた時はC)の引数を増やせば良い、と・・・。
0932nobodyさん
2011/02/03(木) 07:28:11ID:???普段はCakeを使うことが多いが、個人的には引数増えるよりBの方法が楽だと思う。
というか引数の順番をいちいち記憶するのが面倒。
array(
'val' => $str,
'encoding' => 'utf-8',
'convert' => array('KV', 'upper')
)
とかすれば引数の順番覚えなくてすむし。
Cakeを触りすぎたせいかもしれないが
Aのようなメソッドチェーンの引き回しはPHPの文法に向いてないと思う。
("->"と"."の違いは心理的に大きい)
0933nobodyさん
2011/02/03(木) 09:39:49ID:???意見ありがとう!
A)は冗長だけど、エラーハンドリングのしやすさとか、処理の順番とかキッチリしていて扱いやすいとは思う。
コードは冗長だけど、補完の優秀なIDE使えばタイプ数は、Bよりタイプ数が少なくてすむよ。
B)案だと、配列のキー名のタイポが発生したり、IDEのコード補完が使えないのが辛いよねぇ・・・
かといって引数をクラス化すと途端に冗長と言われるし。
適材適所なんだろうけど、皆の意見をもっと聞きたいっす。
0934nobodyさん
2011/02/03(木) 10:46:00ID:???B型にしとけば良かったよと後悔するタイプだな
0935nobodyさん
2011/02/03(木) 21:13:17ID:???Cはなんとなく気持ち悪いかなぁ。。
その例でいうなら
Number::convert()作ったときに引数が違ってくるよね?
0936nobodyさん
2011/02/03(木) 21:30:04ID:???日本では流行ってないけど時間が立てば流行るよぐらいすごいんだけど
それにZFが使われてた
んで、megentoをダウンロードするとZFが含まれているんだけど、最新のZFにアップグレードするのはファイルの上書きだけで大丈夫か教えて欲しいのです
0938nobodyさん
2011/02/04(金) 10:27:21ID:???ttp://www.magentocommerce.com/
0939nobodyさん
2011/02/04(金) 11:40:19ID:???0940nobodyさん
2011/02/04(金) 13:57:58ID:???ここはそのmagentocommertceのスレじゃないぞ
0941nobodyさん
2011/02/04(金) 14:07:29ID:???ZendFWはディレクトリ丸ごと差替えるだけでバージョンアップ出来る。
magentocommertce自体が別のZendFWバージョンに対応しているかは別の話。
0943nobodyさん
2011/02/05(土) 03:35:47ID:???以下のURLで'.html'を取り除いて、アクション名を受け取りたいのですが、
ルーティングではどのように設定すれば良いでしょうか?
http://domein.com/controller/action.html
以下のようにすると、’action’には'action.html'が格納されます。
----
$route = new Zend_Controller_Router_Route_Regex(
':controller/:action\.html'
);
$router->addRoute('route', $route);
----
どなたかご教示頂ければ幸いですmm
0944nobodyさん
2011/02/05(土) 10:08:36ID:???Zend_Layout は、 有名な「ツーステップビューパターン」を実装したものです。 開発者は、アプリケーションのコンテンツを別のビューの中に埋め込むことができます。 この「別のビュー」は、通常はサイトのテンプレートとなります。
0945nobodyさん
2011/02/05(土) 10:31:07ID:???0946nobodyさん
2011/02/05(土) 11:08:20ID:S6HoVMWFどう書き直したらいいですか?
■application/controllers/IndexController.php
<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this->_helper->layout->setLayout('footer');
}
}
■application/views/index/index.phtml
<html>
<head>
<title>タイトル</title>
</head>
<body>
<h1>トップページ</h1>
</body>
</html>
■application/layout/footer.phtml
<div id="footer">フッター</div>
■起動スクリプト
<?php
include "Zend/Controller/Front.php";
include "Zend/Layout.php";
Zend_Layout::startMvc('../application/layouts/');
Zend_Controller_Front::run('../application/controllers');
0947nobodyさん
2011/02/05(土) 13:22:33ID:???レイアウトは共通するのでlayout.phtmlを作成しそこで$this->headMeta()->setCharset('UTF-8');を書きました。
ブラウザでみると<meta name="keywords" content="キーワード" >が最初に来て<meta charset="UTF-8"> が後に来ます。
文字化けの原因にもなるので<meta charset="UTF-8">を<meta name="keywords" content="キーワード" >の前に持って生きたいのですが良い方法ございますでしょうか?
layout.phtmlに
0948nobodyさん
2011/02/05(土) 14:24:02ID:???$item = new stdClass;
$item->type = 'charset';
$item->charset = 'UTF-8';
$item->content = null;
$item->modifiers = array();
$this->headMeta()->prepend($item);
無駄に長くなるね。
0949nobodyさん
2011/02/05(土) 14:25:31ID:???0950nobodyさん
2011/02/05(土) 17:55:32ID:???0951nobodyさん
2011/02/06(日) 03:42:21ID:???Smartyとかと連携した方がいいと思うよ。
0953nobodyさん
2011/02/06(日) 15:19:01ID:???0954nobodyさん
2011/02/06(日) 16:25:28ID:???上にあるようなheadMetaとかheadSctipt(だっけ?)とか無駄に色々あるのを
使わなければ単に変数assignするだけだし敷居も低くない?
viewでPHP関数をそのまま利用できるのは有りだと思うよ。
Smartyの知識+独自のライブラリとかがすでにあるならSmartyでもいいかもしれないけど。
むしろSmartyと連携するメリットがまるでわからない。
0955nobodyさん
2011/02/06(日) 16:35:18ID:???テンプレートエンジンにフィルターとかキャッシュは必須だと思っている。
ZF導入にあたってViewの乗り換えを検討し、同様の事をZend_Viewで行おうとしたけど、
Smartyより難しい印象だったなぁ・・・
PHP構文使えるのはメリットにもデメリットにもなるので、なんとも。
0956nobodyさん
2011/02/06(日) 16:37:32ID:???重いじゃん
0957nobodyさん
2011/02/06(日) 16:42:56ID:???<script type="text/javascript">
alert(1);
</script>
をコントローラから追加したいのですが下記のようにアクションに書いてもエラーページに繋がってしまいます
ページ毎に異なるjavascriptを埋め込みたいので直接VIEWスクリプトには書かないでコントローラから操作できるようにしたいのですがお知恵を拝借させてください
public function indexAction()
{
$this->headScript()->captureStart(); ?>
alert(1);
<?php $this->headScript()->captureEnd();
}
0959nobodyさん
2011/02/06(日) 16:57:57ID:zdEuJ7Gl$this->view->headScript()->offsetSetFile(100, 'test.js');
}
で読み込ませているのですが特定のアクションだけ読み込ませない方法ってありませんか?
0960nobodyさん
2011/02/06(日) 17:52:22ID:???いや、同じ事は出来ると思う。
性能の優劣とでは無くて、ゼロから学ぶならSmartyの方が楽な印象がしたのさ。
ZendFW自体、疎結合で好きな部分だけ使えるようになってるんだから、
Viewには慣れ親しんだSmartyとかでもいいのかな、と。
0961nobodyさん
2011/02/06(日) 20:51:49ID:???WP使えるのにZFまぜる必要ってある?
0962nobodyさん
2011/02/07(月) 01:58:53ID:???0963nobodyさん
2011/02/07(月) 04:15:06ID:X/yGRmJEターミナルでのコマンド入力で一気にコンポーネントの追加したりって可能かな?
それと、リモートのサーバで動いてるzendFWのバージョンアップさせようと思ったら
1)新バージョンのFWをブラウザでローカルにダウンロード
2)リモートのサーバにアップロード
3)sshで既存のFWに上書き
って流れでやるしかないの?
一発で実現できるコマンドってないのかな
0964nobodyさん
2011/02/07(月) 10:29:45ID:???0966nobodyさん
2011/02/07(月) 11:51:29ID:???HTML直書きと比べての話です
0967nobodyさん
2011/02/07(月) 12:32:05ID:???「zend_formもjsとの組み合わせとかやりづらいし、zend_varidatorも
自前の検証クラスに比べて冗長でややこしい一方だしろくなことねーぞ!」って感じ
まあ使ってみなよ
結局使う人の感性次第だ、俺はあわなかったな
0968nobodyさん
2011/02/07(月) 18:44:44ID:???日本語使いたいんですけどttcって使えないですか?
0969nobodyさん
2011/02/07(月) 19:35:31ID:???ttp://yuubiseiharukana.blog.shinobi.jp/Entry/455/見てもよくわかんない
0970969
2011/02/07(月) 19:45:19ID:???0971nobodyさん
2011/02/07(月) 20:01:54ID:???>新しいコンポーネントがリリースされた時に、そのコンポーネントだけ追加することって出来る?
何らかの方法で差分を取得すればいい。(SVNリポジトリ見ればいいと思う)
>ターミナルでのコマンド入力で一気にコンポーネントの追加したりって可能かな?
バッチ組めばOK。俺はSVN UPで済ましちゃってるけど。
>一発で実現できるコマンドってないのかな
リモートサーバが外部にアクセス出来るなら、バッチ処理書けばいい。
0973nobodyさん
2011/02/07(月) 21:21:10ID:???TTCなんてきもい実装への対応をOSSに求めんなよ
自分で調べて分割しろ
あとライセンスは気をつけろ
0978nobodyさん
2011/02/09(水) 11:48:44ID:???0979nobodyさん
2011/02/09(水) 13:10:38ID:???0980nobodyさん
2011/02/09(水) 13:29:55ID:aJnPZ9zMhttp://www.example.com/sample
という風にモジュールで分けたいので以下のようにディレクトリを作成しました
/application/default/
/application/sample/
(各モジュール内にcontrollers,models,viewsディレクトリも入ってます)
(各モジュール内にcontrollersにはIndexController.php、viewsにはindex/index.phtmlとerror/error.phtmlが入ってます)
public_html/index.phpには以下のように書きました
<?php
include 'Zend/Controller/Front.php';
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory('../application');
$front->dispatch();
これで
http://www.example.com/とhttp://www.example.com/defaultで/application/default/の内容が表示
http://www.example.com/sampleだとエラーページが表示されます。(エラーページは/application/default/views/error/error.phtmlのものです)
モジュール別に分けて制作したいのですがどこを修正したらよろしいでしょうか?
0981nobodyさん
2011/02/09(水) 14:09:32ID:???修正したテンプレだけ張っておきます
公式
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 Part4
http://hibari.2ch.net/test/read.cgi/php/1265721684/
0982nobodyさん
2011/02/09(水) 15:17:33ID:???なんかコントローラのクラス名の命名規則があってモジュール名_IndexControllerって書かないといけなかったようでした
ggって見つけたものなのでマニュアルのどこに書いてあるのかよくわからないのでこれで良いのか分かりませんが・・・
0983nobodyさん
2011/02/09(水) 16:02:02ID:S6y2j2QGアプリケーションのURLを踏む(http://hoge.com/twitter_app/)
↓
「あなたのTwitterアカウントへログイン」(http://twitter.com/oauth/authenticate?oauth_token=***)
↓
認証&callback
↓
callback先のページ(http://hoge.com/twitter_app/callback/)
↓
Service_Twitterの各メソッドで何か処理。
が、どうにも一番下のメソッドの実行部分で失敗します
例:
$response = $twitter->status->update("APIから日本語で投稿");
$response = $twitter->status->update("post with API by testuser");
var_dump($response);//両方ともエラーメッセージ「Could not authenticate you.」になる。PHPエラーはなし
$response = $twitter->status->userTimeline();
var_dump($response);//エラーメッセージ「This method requires authentication.」。PHPエラーはなし
何が原因で認証失敗のエラーが出てるんでしょうか?
callback後、あらかじめ別ウインドウで開いてたtwitterのトップページを更新すると、
ユーザー(testuser)のトップに移動するので認証は成功してるはずなんですが…
zendFWのバージョンは1.10.3です。よろしくお願いします
0984nobodyさん
2011/02/09(水) 17:45:22ID:???Zend_Service_Twitterは使った事ないけど、
OAuthで受け取ったアクセストークンの設定とかはしてる?
0985nobodyさん
2011/02/10(木) 12:44:36ID:B6xb9mKaレスどうもです。
原因わかりました
ZendFWのバージョンがOauth認証に対応してませんでした
1.10のマニュアルを見ると対応してるように書いてるのに、
実際には(自分のは?)対応してなかったという…
意味わからないですが、ありがとうございました
0986nobodyさん
2011/02/10(木) 16:41:11ID:???レイアウトからheaderとcontentsとfooterを呼び出している
0987nobodyさん
2011/02/10(木) 16:43:10ID:???いや、よく考えたらキャッシュ使いまくりだから、あんまり感じないだけなのかも
何にせよキャッシュは大事だよ
0988nobodyさん
2011/02/10(木) 16:45:33ID:???0989nobodyさん
2011/02/10(木) 18:31:27ID:???好きにZend_Cache使いなさい、
ってのがこのフレームワークのスタンスなのよ
Zend_Cacheは簡単だし、粒度もそれなりに設計できる
0990nobodyさん
2011/02/10(木) 23:30:56ID:2I2O4kI9いつもincludeパスが通った所に置いた利用しかしてなかったので分かりません
0991nobodyさん
2011/02/11(金) 04:01:23ID:???どこに置こうがZFを呼び出せるということは、
include_pathの通った場所(例えば".")に置いてるということなので
PHP視点でZFを使うための追加の設定は不要
ただ、ZFに限らずライブラリ系置くなら外部からHTTPアクセスはできないようにしておく方が無難
0992nobodyさん
2011/02/11(金) 04:05:19ID:???Zend Framework Part5
http://hibari.2ch.net/test/read.cgi/php/1297364669/
0993nobodyさん
2011/02/11(金) 12:42:29ID:???htaccessの修正なくてもOK?
0994nobodyさん
2011/02/11(金) 12:44:32ID:???0995nobodyさん
2011/02/11(金) 12:46:04ID:???http://framework.zend.com/manual/ja/zend.controller.quickstart.htmlのこと
0999nobodyさん
2011/02/11(金) 12:54:09ID:???1000nobodyさん
2011/02/11(金) 16:51:20ID:g4d041We10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。