ZendFrameworkってどうよ?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/07(土) 02:49:15ID:6wQ8r0Dcこれってどうよ?
PHP5に移行したほうがいいのかな
0155nobodyさん
2007/03/25(日) 02:34:38ID:07q9VATM奇遇だね。今日おれも同じコトやってたw
Actionが見つからない場合はは__callが呼ばれるので
そこで404ページを出せばOKだけど
問題はControllerだよね。
省略された場合はデフォルトコントローラー(index)が呼ばれて、
ないコントローラーが呼ばれた場合デフォルトでは何も起こらない(本当は例外が投げられてるけど)じゃないですか?
Dispatcherまわりをもっとよく調べれば簡単な解決策あるかもしれないけど、とりあえず強引に解決してみた。
まずZend_Controller_Frontで
$controller->setParam('useDefaultControllerAlways',true);
で、ないコントローラーが呼ばれた場合もデフォルトのコントローラーが呼ばれるようにして
indexControllerのinit()で
$controller_name=$this->getRequest()->getControllerName();
$request_params=$this->getRequest()->getParams();
if($controller_name != $request_params['controller']){
$this->__call();
}
とかやって実際にリクエストされたコントローラー名と呼ばれたコントローラーが違った場合は
__callを呼んで404ページを呼び出すようにした。
こんな感じじゃ駄目ですか?
もっと簡単な方法あったら伝授お願いします。
どうもDispatcherっていうのが馴染みがないせいか、イマイチよくわからなくて・・・
0156nobodyさん
2007/03/25(日) 02:45:08ID:???404くらいデフォルトでなんとかなるようにしてくださいよ!
フレームワークあんだから!
0157nobodyさん
2007/03/25(日) 12:06:39ID:???デフォルトのコントローラを404コントローラにする
んでアクションが無い場合(__call)もそっちにforwardしてやるとか
何事にも気が利かないのはZFのデフォルトの仕様
rails:設定より規約
ZF:規約よりおまえが書け
0158nobodyさん
2007/03/25(日) 13:20:21ID:07q9VATMそれするとコントローラー省略したときも404が出ちゃわない?
ttp://www.yahoo.co.jp/
みたいにドメインだけ入力したとき。
省略された場合と、存在しない場合で動き変えられれば簡単に解決なんだけど・・
0160nobodyさん
2007/03/25(日) 15:33:13ID:UfKh4Z0S0161nobodyさん
2007/03/25(日) 15:50:16ID:???コントローラごとにオーバーライドするのは面倒くさいと見るか、コントローラごとに分けることができて便利と見るか・・・。
いざとなったら、404用のabstractなコントローラを用意して、継承しまくるとか。
0162nobodyさん
2007/03/25(日) 15:58:06ID:???0163161
2007/03/25(日) 16:49:33ID:???ついでに最新バージョン落としてソースを追ってみたけど、
useDefaultControllerAlwaysをfalseにしておけば、コントローラが存在しない場合にZend_Controller_Dispatcher_Exceptionが投げられるから、これをcatchして404出せばいいんじゃないかと思った。
あと、アクションが存在しない場合はZend_Controller_Exceptionが投げられるっぽい。
さすがにZend_Controller_Exceptionだと、その名前から察するに別の状況でも投げられそうな気がするから、少し微妙かもしれない・・・。
とりあえず、>>155の言ってる、
>Actionが見つからない場合はは__callが呼ばれるので
>そこで404ページを出せばOKだけど
ってのがどういう意味かよくわかんなかったんだけど、__callを自分のアクションでオーバーライドして処理するってこと?
0164nobodyさん
2007/03/25(日) 18:22:22ID:???そう、旧バージョンのnoRouteActionを__callでどういう風にするのかは
http://framework.zend.com/manual/ja/zend.controller.migration.html#zend.controller.migration.fromzerosix
ここの一番下に載ってる
まとめてみる
コントローラが見つからなかった場合、どっちでもいけると思う
useDefaultControllerAlways=falseなら>>163のように
Exceptionをcatchして404にforward or redirect
useDefaultControllerAlways=trueなら>>157のように
デフォルトコントローラを404のハンドリングに使う
ルーティングが '' (ドキュメントルート)の場合にも
404にハンドリングされてしまうのでRouterに最優先で
'' の場合はIndexControllerにルーティング
あと個人的にActionが見つからないのをハンドリングするためだけに
__callを使うのはもったいない(__callを使った拡張ができない)ので
Zend_Controller_Actionのdispatchをオーバーライドして
自前でアクションが見つからなかった場合の処理を実装して
__callを自分で使えるようにしておいた方がいいと思う
こんな感じかな?
0165161
2007/03/25(日) 19:58:28ID:???なるほど。APIが禿しく変わったと思ってたけど、けっこうちゃんとマニュアルに書いてあるんだな。
404の処理方法も正式バージョンではドキュメント化されるかもね。
ひとまず当面は>>164のやり方しかないんだろう。
0166nobodyさん
2007/03/25(日) 23:02:53ID:clpaUIjl0167157
2007/03/26(月) 10:29:04ID:jn+p2f5Cすっかり頭から抜け落ちてた。
getRequest()->getParams()['controller']とgetRequest()->getControllerName()
を較べるのはまずいっぽい。_forwardしたときに呼ばれちゃう・・・
例外キャッチにしようかな
まあ、どっちにしても1.0までには指針を示してくれるのだろうか?
ところで、Validateチェーンって
$breakChainOnFailure を true にしなければgetMessages() で全てのエラーメッセージを配列で受け取れる仕様じゃないんでしょうか?
どうも期待通り動かなくて、ソースを見たところ
$this->_messages = $this->_messages + $validator->getMessages();
となっています。
こういうのってarray_merge使わないとだめだったようなきがするんですけど勘違いでしょうか?
それとも最初エラーメッセージだけ帰ってくるのが動き的にあってるのでしょうか?
話は違いますが
0.9.1がでてますね。早く正式リリースされないかな
0168nobodyさん
2007/03/26(月) 11:28:00ID:B9eaVhyg今までは自前でセッションとリクエスト比較して来たんですが。
0169nobodyさん
2007/03/26(月) 11:55:36ID:???0171nobodyさん
2007/04/01(日) 11:53:09ID:sAfc6g3U例えばあるviewにスタイルシートを埋め込むとき、
Frontを起動したindex.phpから見たパスになるんじゃないんでしょうか?
相対パスで
<link href="styles/hoge.css" rel="stylesheet" type="text/css" />
とやっても認識されず、
<link href="/styles/hoge.css" rel="stylesheet" type="text/css" />
と、ドメインを省いた絶対パス指定じゃないと認識しないのですが、これしか方法ないのでしょうか?
それとも、相対パス指定が間違ってますでしょうか?
絶対パスでも良いんですけど、dreamweaverで認識しないので、ちょっと面倒かなと・・・
0172nobodyさん
2007/04/01(日) 12:01:18ID:???0174nobodyさん
2007/04/01(日) 15:41:17ID:sAfc6g3U.htaccessは
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
となっています。
変わったのでしょうか?
0175nobodyさん
2007/04/01(日) 18:23:36ID:???思ったんだけどcssだから大丈夫か
相対パスはindex.phpからのであってるよ
0176nobodyさん
2007/04/01(日) 19:08:42ID:+UiPUal0画像やスタイルシートはドキュメントルートからのパスになるだろ?
0177171
2007/04/01(日) 19:14:37ID:sAfc6g3Uレスサンクス
どうやらリクエストしたURLの階層から見た相対パスになってるみたいです。
たとえばURLが
http://www.hoge.jp/foo/bar/
だとして、ドキュメントルートにstylesフォルダがあるとすると
スタイルシートは
<link href="../../styles/foobar.css" rel="stylesheet" type="text/css" />
で認識しました。
formのactionも、foo/bar/とすると
http://www.hoge.jp/foo/bar/foo/bar/
にpostします。
これは挙動としておかしいってことでしょうか?
なにか、設定が間違ってる?
baseUrlあたりがくさいと思い、var_dumpしてみたら
["_baseUrl:protected"] => string(1) "/"
になってます。
他のみなさんも
>>175さんのご指摘どおり
index.phpからのパスになってるのでしょうか?
でも、そうじゃないと、アクション省略したときと、指定したときで、めんどくさい事になりますよね?
ちなみに0.9.1です
0178nobodyさん
2007/04/01(日) 20:18:45ID:???でいいんじゃないの?
0179nobodyさん
2007/04/01(日) 20:47:16ID:???0180nobodyさん
2007/04/01(日) 22:32:21ID:sAfc6g3Uほうほう、そのタグ知らんかった・・・
サンクス
<base href="http://www.hoge.jp/" />
で、いけました。
しかし、他のmod_rewriteを使ってURIを置き換えるようなフレームワークも
みんな、絶対パスか<base href="">を使ってやるモンなのでしょうか?
たしかに、いたってデフォルトの動きっぽいですけど。
0181nobodyさん
2007/04/01(日) 22:56:18ID:???baseタグ使うとかバカげてる
ほんとにrewrite効いてるのか?
0182nobodyさん
2007/04/02(月) 00:22:58ID:???遅レスだけど、単純に
$front = Zend_Controller_Front::getInstance();
$front->run("/path/to/controllers");
$res = $front->getResponse();
if ($res->isException()) header("Location: http://localhost/");
とかじゃダメ? 話が違う?
header のところを 404 を出す処理にでも変えればいいような気がする。
0183180
2007/04/02(月) 08:46:24ID:UNZvnAmNまじですか?
適切なコントローラとアクションに振り分けられるので
たぶんrewrite自体はは聞いてます
ちなみにindex.phpのコードをさらすと
$controller = Zend_Controller_Front::getInstance();
$config=GomoConfig::getInstance();
$controller
->setControllerDirectory('path/to/controller','default')
->throwExceptions(true);
try{
$response = $controller->dispatch();
} catch (Zend_Controller_Dispatcher_Exception $e) {
$controller->setDefaultControllerName('notfind');
$controller->setParam('useDefaultControllerAlways',true);
$response = $controller->dispatch();
}
こんな感じです。
apacheの設定関連でしょうか?
mod_rewriteの設定でRewriteBaseというのがあったので
ドキュメントルートのパスを設定したり、"/"のみを設定してみましたが、駄目でした。
どの辺を見直せば良さそうですかね?
ご意見ありましたらよろしくお願いします
0184180
2007/04/02(月) 10:01:33ID:YVop49f1違ったらすいませんが、
もしかして
>>178さんみたいに"/"から指定してないですか?
<link href="/styles/foobar.css" rel="stylesheet" type="text/css" />
それならうごくんです。というか、絶対パスだし。
う〜ん、ちょっとsymfonyのスレで確認してみます。
0185nobodyさん
2007/04/02(月) 18:45:53ID:???どっちのスレで答えるか迷ったけどsymfonyで自動生成されるタグは
絶対パスになってる。
CSSとか画像へのリクエストはクライアントのブラウザがリクエスト
するものだからブラウザに表示されてるURLからの相対パスで
不思議じゃない。
0186181
2007/04/02(月) 19:11:38ID:???相対パスで試したら余裕で無理だったなんか勘違いしてた
よくよく考えたらURLをrewriteする場合に
相対パスでリソース指定なんてした事なかった
今は反省している
普通絶対パス指定だな
あとdreamweaverはサイト設定したら
認識してくれるもんじゃないかね
0187184
2007/04/03(火) 00:18:05ID:3FiNTxl4レスありがとうです。
symfonyのほうでもレス頂きましたが、すっきりしました。
>>186
いえいえ、そんなに反省しなくてもw
勘違いは誰にもあるし
サイト設定はすっかり忘れてました
試してみます
サンクス
0188nobodyさん
2007/04/07(土) 17:33:25ID:???http://www.zend.co.jp/events/
これはノーパソもくれるってことなのかな
0189nobodyさん
2007/04/07(土) 18:19:08ID:???0190nobodyさん
2007/04/07(土) 19:39:02ID:???0192nobodyさん
2007/04/07(土) 21:22:05ID:???0193nobodyさん
2007/04/08(日) 04:50:22ID:???0194nobodyさん
2007/04/08(日) 07:05:34ID:???まあゼンドエンジンを無料で使っておいて、いまさらゼンドを馬鹿にできる立場じゃないだろうが。
他のPHPエンジンを選択して使えれば良いのにな。
0195nobodyさん
2007/04/08(日) 07:11:17ID:???ゼンドジャパンがあまりレベル高いと思えないのは俺だけ?
0196nobodyさん
2007/04/08(日) 09:58:31ID:???レベル高いの
0199nobodyさん
2007/04/08(日) 22:55:44ID:???会社がお金を出してくれるんでなかったら、自分じゃ行ってないな
0200nobodyさん
2007/04/08(日) 23:06:45ID:???0201nobodyさん
2007/04/09(月) 00:24:50ID:???http://www.blackhat.com/html/bh-japan-07/bh-jp-07-jp-reg.html
0202nobodyさん
2007/04/09(月) 00:29:53ID:???0204nobodyさん
2007/04/09(月) 02:02:12ID:???0205nobodyさん
2007/04/14(土) 23:56:03ID:6HoqK2AI日本語どうしてます?
$mail = new Zend_Mail('iso-2022-jp');
でインスタンス化してmb_convert_encodingでiso-2022-jpにした文字を
addしていってもエンコードがquotedprintableだから本文文字化けしちゃいます。
エンコードをBASE64に切り替える方法って解りますか?
mb_convert_encoding も面倒だからsend時のtransportを
mb_send_mailを使った物に変えちゃおうかとも思ったんだけど
エンコードで引っかかりますね。quotedprintableはダメよって。
あと、 iso-2022-jpを文字コードに指定するな、みたいなエラーも出てたけど
mb_send_mailはheaderに文字コード指定しちゃいけないのかな?
0206nobodyさん
2007/04/15(日) 00:57:32ID:???Zend_Mail関連は少し前のバージョンでちょっと使ってみたけど
UTF-8で長いサブジェクトのメールだとなんかうまくいかなくて
さんざんソース追いまくった挙句どうもバグっぽかったので
結局mb_encode_mimeheaderで自前でBASE64エンコードしたのを
セットするっていうこれじゃビルトインのmail()使ってんのとかわんねー的な
方法に落ち着いた記憶があるw
今昔のソース見てみたら
$mail = new Zend_Mail('UTF-8');
・・・
$mp = $mail->setBodyHtml($html);
$mp->encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE;
こんな感じだったのでこれをBASE64にすればいけるんじゃないかな
正直ZendのMail関連はまだ色々安定してない感じがした
枯れてるという意味でまだPEARのMailライブラリの方が
素直に動いて安定はしている(E_NOTICE出るバグは残ってたけど、、)
今はどうかわからないけど参考までに
どちらにせよmb_send_mailは使わないかな
0207205
2007/04/15(日) 04:41:44ID:f7ZVC+MYレスありがとうございます。
携帯のメールで四苦八苦してたんですけど
本文は文字コードiso-2022-jpでエンコードは7bitみたいですね
勘違いしてました。私のメイン携帯のSoftBANKはcontents-type指定してやれば
UTF-8でも正しく表示されるのですが、ウィルコムとか、試してないけどたぶんDOCOMOとかって
iso-2022-jp 7bitじゃにとだめっぽいですね。
まあ、それはあんまり関係ないので置いといて^^;
206さんが試したときのバージョンだと>setBodyHtmlはZend_Mime_Partを返してたみたいですね。
0.9.2は
return $this;
になってるので、
$mail->setBodyText(mb_convert_encoding("日本語本文",'iso-2022-jp'));
$mp=$mail->getBodyText();
$mp->encoding = Zend_Mime::ENCODING_7BIT;
とやらないとだめっぽいのかな。
いちおうこれで文字化けしないでウィルコムいけました。
PCやSoftBANK(AUやDOCOMO試してないのでわかりませんが)ならUTF-8(内部エンコーディング)
で、ぜんぜん問題ないのでいいのでが、携帯も視野に入れると、いちいちmb_convert_encodingしなきゃならないので
面倒だから、mb_send_mailで出来ないのかなと思ったわけでして。
Zend_Mailもnewしたときの文字コードに全部自動変換してくれれば楽なのに・・・
自動変換するように拡張しようかな。
transporterをmb_send_mailに変えるよりその方がよさそうですね。
0208nobodyさん
2007/04/15(日) 13:38:18ID:???) ) ノ ノ
(((( > ̄ > )))) \(^o^)/ ((( < ̄< ))))
) )
((( > ̄ > )))) code igniterハジマタ
0209205
2007/04/15(日) 16:11:36ID:f7ZVC+MY問題はquotedprintableでエンコードしちゃうところ。
本文なんかは上の方法で変えられるけど、ヘッダーは強制的に
quotedprintableでエンコードされちゃう。
とりあえず、add、set系で日本語入れる可能性のあるものを
オバーライト(ド?)して自動的に文字コードを_charsetにしちゃうようにして
本文のsetはエンコードをENCODING_7BITに、ヘッダーはBASE64にしたら
だいたいOKな感じ。
まあ、まだベータだし今後に期待かな。
0210nobodyさん
2007/04/16(月) 12:14:45ID:l/zxgJIdおまえは何を言ってるんだ?
0211nobodyさん
2007/04/22(日) 00:02:52ID:???init使うってのも考えたんですが他にスマートな方法とかないでしょうか?
0212nobodyさん
2007/04/22(日) 08:57:19ID:xZDJWmeUZFを書き換える
0214nobodyさん
2007/04/23(月) 16:40:00ID:LAYu+KhNホームページ作成ソフトがあったらいいのに・・・。
もし、プロ並みにキレイなホームページが作成が出来たとしたら、
情報商材で一旗あげようと思っているあなたの人生は変りますか?
【早くも成功者続出!】起業サイトビルダー
http://www.infotop.jp/click.php?aid=16484&iid=5683
0215nobodyさん
2007/04/25(水) 08:36:25ID:Oh3IjITmこのペースだと1.0リリースは年内ぎりぎりいっぱいって感じ?
大丈夫か?この開発ペース。
0216nobodyさん
2007/04/25(水) 09:53:04ID:???0217nobodyさん
2007/04/25(水) 16:55:07ID:???オープンで利益が見込めない以上、待つしか無い。orz
0218nobodyさん
2007/04/26(木) 01:24:02ID:???0219nobodyさん
2007/04/27(金) 19:55:00ID:oQ0Q4Rp/1アクション:1コントローラ
みたいに出来ないの?
ttp://www.hoge.com/moge/mage
ttp://www.hoge.com/moge/hoge
ttp://www.hoge.com/moge/hege
みたいにしたい時に
コントローラを3つ用意したいと思ったら
わざわざindex.phpに切ってあげるしかない感じ?
zend自体に手いれないと無理?
0220nobodyさん
2007/04/28(土) 01:56:10ID:???0221nobodyさん
2007/04/28(土) 02:09:27ID:tgkVshtz>>172
にあるZFcheckDoublePostって今もうないですよね?
何か別の名前になってるのでしょうか?
二重投稿防止があるなら自作しないで使っちゃいたいんですけど・・・
0222nobodyさん
2007/04/29(日) 14:57:15ID:???Frameworkって、functionやclassの詰め合わせみたいなもんでいいのかな?
0223nobodyさん
2007/04/29(日) 19:25:27ID:???0224221
2007/04/29(日) 22:27:25ID:o45ltyhE「Don't call me, we. call you.」ってやつでしょうか?
ところで
もしかして二重投稿防止機能ってデフォでついてる?
フォームに入力した文字を何のヴァリデイトも無しに、単純にDB登録する物作って
submit連射してみたんですけど、一個しか登録されません。
Keep Aliveが切れるの待ってかなりいっぱい連射してみたけど登録されるのは一個だけです。
マニュアルにありますか?ちょっと探してみたけど見つからないのですが。
0225nobodyさん
2007/04/30(月) 12:42:34ID:xadrbgqlfunction hoge(){
$other_instance->foo='bar';
}
は普通に動きます。で、その変数を動的に変えたいとき
function hoge($name){
$other_instance->$name='bar';
}
これも動きました。
ところが$nameの部分をそのクラスのメンバにして、他のメソッドからも使いたいとき
function hoge(){
$other_instance->$this->name='bar';
}
にすると$thisの時点で展開され、stringに出来ませんって言われます。
__toString()を使うのもなんか違う感じがするし、
各メソッドで、
$name=$this->name;
と代入してやれば動くけど、メモリ無駄遣いしてる感じもするし。
なんかほかにいい書き方ありませんでしょうか?
お願いいたします。
0226225
2007/04/30(月) 12:43:47ID:???PHPのくだらねえ〜版に書くつもりで・・・
あっちへ行きます。
0227nobodyさん
2007/04/30(月) 14:12:02ID:???求めてるのはこれだろうか
$other_instance->{$this->name} = 'bar';
0229nobodyさん
2007/05/01(火) 19:09:51ID:???0.9.2で停止してるし。
0230nobodyさん
2007/05/01(火) 20:58:40ID:???0233nobodyさん
2007/05/01(火) 22:14:13ID:???PHP5の何以下だっけ?
たしかZFのソースの中に書いてあったんだけど
0234nobodyさん
2007/05/02(水) 01:31:49ID:???仕切り直しのZF2.0は何をベースにするのだろう?
日本人的にはちいたんなのか?(w
0235nobodyさん
2007/05/02(水) 01:43:14ID:???普及のための戦略製品じゃん、一応
0237nobodyさん
2007/05/02(水) 03:26:54ID:???0238nobodyさん
2007/05/02(水) 09:55:28ID:???おまえらに俺が釣られてるのか分からないが
普通に開発進んでるし0.9.3が5/4でcode freezeだよ
あとzend所属の人もいるみたいだけどZFは基本オープンソースだろうに
0239nobodyさん
2007/05/02(水) 15:43:01ID:???0240nobodyさん
2007/05/02(水) 16:55:25ID:CN0ZcYu0冨樫なんかと一緒にすんなよw
0241nobodyさん
2007/05/03(木) 00:13:22ID:B994S/bS後からシコシコ直せば。
どうせNew BSDライセンスだから,なんかあってもzendが責任負うわけじゃないしw
意外に?生真面目な会社なのかね?
というか、オープンソースって正式リリースは誰が決めるの?
0242nobodyさん
2007/05/03(木) 00:16:59ID:???オープンソースってコピーし放題なのにどうやって儲けるの?
ダウンロードできるのにインストールCD買うアフォって居るの?
0243nobodyさん
2007/05/03(木) 00:32:07ID:B994S/bS普及させて、ZendGuardとかStudioを売ったり、有料サポート(あるのか知らないけど)とか、セミナー?とかで設けるんじゃないの?
あと、Zendって会社名だって、PHPのおかけで業界じゃ知らない人いないし、宣伝費も浮く。
まあ、でも不思議だよね。オープンソースって。
0244nobodyさん
2007/05/03(木) 00:38:14ID:???PHPが普及すればするほど儲かる会社なんだから
というかZFなんかで金取る方がおかしいだろ常識で考えて
0245nobodyさん
2007/05/03(木) 01:52:21ID:???>オープンソースってコピーし放題なのにどうやって儲けるの?
>ダウンロードできるのにインストールCD買うアフォって居るの?
発想が貧困すぎ。
有料ソフトウェア会社が倒産して、オープンソース化して利益を得ている
Blender Foundationのケースでも勉強して出直してきなさい。
0246nobodyさん
2007/05/03(木) 16:35:15ID:B994S/bSここにあるサンプルソースをコピペすると、改行が全部除去されるのはうちだけでしょうか?
マジでめんどくさいんですけどOTZ
0247nobodyさん
2007/05/03(木) 16:54:10ID:???0248246
2007/05/03(木) 21:03:07ID:???今ちょっと思い立ってFirefoxでためしたら改行されなかった。
普段使っているSleipnirでは改行なくなる。IEでもなくなる。
なんかIEの設定っぽいけど
SleipnirのレンダリングエンジンをGekkoにしてお茶を濁します
0249nobodyさん
2007/05/07(月) 16:14:50ID:rh9t4bwF0251nobodyさん
2007/05/08(火) 00:38:50ID:???0252nobodyさん
2007/05/08(火) 02:59:08ID:???そんな文句言ってると、今度からバージョンの桁数さらに増やされるぞ。
0.9.3.0.0.1
0.9.3.0.0.2
0.9.3.0.0.4
0253nobodyさん
2007/05/08(火) 09:20:31ID:nxCKFKFF0254nobodyさん
2007/05/08(火) 09:40:42ID:???0255nobodyさん
2007/05/08(火) 10:36:32ID:???0.9.9.1
0.9.9.2
0.9.9.3
・
・
・
0.9.9.9.1
■ このスレッドは過去ログ倉庫に格納されています