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

Zend Framework Part3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/10(金) 08:35:00ID:???
公式
http://framework.zend.com/

マニュアル
http://framework.zend.com/manual/ja/

(有力翻訳者のm-takagiさんのver)
http://www.m-takagi.org/docs/php/zend/

バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa

API
http://framework.zend.com/apidoc/core/

前のスレッド Zend Framework Part2
http://pc11.2ch.net/test/read.cgi/php/1204726884/
0160nobodyさん2009/05/14(木) 12:38:07ID:???
それがphpクオリティだろ
0161nobodyさん2009/05/14(木) 23:01:56ID:???

別にクラス名変えるくらいなら問題ねーよ。
ファクトリーパターンで開発してりゃいいだけだし。
0162nobodyさん2009/05/14(木) 23:04:57ID:???
うっわ…
0163nobodyさん2009/05/15(金) 01:37:25ID:???
デザインパターン覚え立ての素人発言にしか見えないのは俺だけ?w
0164nobodyさん2009/05/15(金) 17:16:12ID:???
いや、本当にファクトリで問題ないぐらい凄腕なのかもしれない
是非見せてほしいよな
0165nobodyさん2009/05/15(金) 21:49:09ID:???
うっわ…
お前らZFでハードコーディングしちゃってるの?
0166nobodyさん2009/05/15(金) 22:00:19ID:???
>>163
クラス名が変わっただけでてんぱってるなら、デザインパターン覚え立ての素人未満だな
>>164
常に適当に自作したクラスの静的メソッドから呼び出せばいいだけじゃん。
そんなことの何処が凄腕なの?
0167nobodyさん2009/05/16(土) 04:14:54ID:???
全てのZend_xxxを自作クラスでラップしてるの?
凄腕というか無駄骨というか…一度コード見せて欲しいです><

最悪アダプタかませば良いと思ってる俺は素人ですねすみません。
0168nobodyさん2009/05/16(土) 11:02:40ID:SaZzzxwN
Zend_Session使っているんだが

<?php
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('mySess.ini', 'development');

require_once 'Zend/Session.php';
Zend_Session::setOptions($config->toArray());

とっても便利だなぁ〜
0169nobodyさん2009/05/16(土) 11:39:53ID:???
>>167
クラス名変わる程度で困ってる方が明らかに時間の無駄だろ。
ZFなんてクラス名どころかメソッド名変わったりもするし。
むしろクラス名変更で困っちゃうコードを見せてくれよ。
0170nobodyさん2009/05/16(土) 11:46:19ID:???
そもそもZFで使うクラスなんて知れてるのに、
全てラップとか言ってる>>167はどんな頭してるんだろう
0171nobodyさん2009/05/16(土) 12:03:54ID:???
>>168
Zend_Loader使えよ
0172nobodyさん2009/05/16(土) 15:29:41ID:???
実装しやすくすることが目的なのに
特定の実装に拘るのが目的になるのは本末転倒だと思う
0173nobodyさん2009/05/16(土) 15:50:33ID:???
全置換で何か問題ある?
0174nobodyさん2009/05/16(土) 15:53:04ID:???
全置換で問題ない
秀丸とかEmacsとかでやってる奴は辛いんだろうけど
IDE使ってる奴は一発だからなどうせ
0175nobodyさん2009/05/16(土) 16:20:58ID:???
>>174
わからんぞ。秀丸つかってる連中でも、全置換なんか外部ツールでも
PHPでスクリプト書いてでもできるし。

置換じゃ対応できないようなおかしなクラスの呼び出し方してんじゃない?
クラス名と全く同じ変数名つかってるとかw
0176nobodyさん2009/05/16(土) 16:35:27ID:???
俺の場合、
Zend_Jsonはphp_json使用時SJISを正しく処理できない。
Zend_Pdfは昔日本語を処理できなかった。
Zend_Service_AmazonはDom使ってるせいで遅い。

これらの都合で拡張して使うのが当たり前になったわ。
一から作るよりはぜんぜん楽ではあるから、重宝してるけど。
01771732009/05/16(土) 18:53:44ID:???
>>174
そうか。全置換使ってるとよく恐くないか聞かれる。(何が??)
一応プレビュー通すし、ユニットテストあれば確認だし、万が一にも問題あれば(まあ無いけど)svnで戻すだけだしこれまで全然問題ない。
0178nobodyさん2009/05/16(土) 18:59:01ID:???
全置換は秀丸でもEmacsでもできるし、スクリプトで色々できるけど、
プレビューして確認しながらOKしていく安心感はIDEじゃないと無理だからな。
まぁテキストエディタでも脳内構文チェックしてOKしてけばいいけどw
0179nobodyさん2009/05/16(土) 18:59:04ID:???
>>168
require_once からの卒業〜
http://d.hatena.ne.jp/Bayside/20080513/p1
0180nobodyさん2009/05/16(土) 19:29:08ID:???
>>170
単に>>166を皮肉りたかっただけです。
「常に適当に自作したクラスの静的メソッドから呼び出せばいいだけじゃん。」にカルチャーショックをうけました。
0181nobodyさん2009/05/16(土) 20:09:33ID:???
>>179
ちょ
その記事、ZF 1.5.1 ?
最新の1.8.1ならZend_ApplicationのBootstrapでほぼ全自動だよ
DIコンテナだし
0182nobodyさん2009/05/16(土) 21:42:14ID:dQ/L5rav
>>161発言への対応が面白い。
>>161 = >>166 はプロ
>>167は素人
ファクトリ以外でクラス名をハードコーディングする
馬鹿がいるのか。
0183nobodyさん2009/05/16(土) 21:57:21ID:???
クラスによるだろ…Zend_SessionとかZend_ConfigとかZend_Registryとか、そのまま使う事も多いと思うが・・・。
たとえ数カ所の記述でも、プロジェクト数が増えると結構な影響がでる。

基本問題が無い限りFW自体をアップデートしねぇからいいけど。
0184nobodyさん2009/05/16(土) 22:53:41ID:???
日本語が変です
0185nobodyさん2009/05/17(日) 03:08:16ID:???
>>182
こういう決めつけ馬鹿ってメンバーにいると面倒だよな
0186nobodyさん2009/05/17(日) 03:10:46ID:???
新しく入ったあいつ良く解ってないですよねー
打ち合わせであの用語のこと勘違いしてたじゃないですかー
みたいな感じかw
確かにいるな
0187nobodyさん2009/05/17(日) 07:45:17ID:???
もしくはコード品質を気にしない日曜プログラマでしょw
複数人開発になれば、クラス名の変更がどれだけリスキーか一瞬で理解できると思うが・・・
0188nobodyさん2009/05/17(日) 09:07:03ID:???
うーん、どっちもどっち
名前だけ変わるなんてことないでしょ。問題は振る舞いの変更

BCに縛られて停滞していったプロジェクトがいくつもあるからな。
変更を恐れるようならZFを使う意味ない。
アップデートのリズムが速すぎると感じるなら、ついていけないのは設計の問題。
0189nobodyさん2009/05/17(日) 09:55:38ID:???
問題無く稼働している場合はFW自体をアップデートする必要無い
0190nobodyさん2009/05/17(日) 18:03:28ID:???
>>187
日曜プログラマが複数人集まってりゃそうなるわな
0191nobodyさん2009/05/17(日) 18:47:27ID:???
誰にも告げずにこっそり変更するならリスキーだけど
告知した上で影響範囲を調査して変更なんてのは仕事のプロジェクトでも普通にあることだろ
なんか危なさそうだから変な名前だけどそのまま置いておきましょうか?ってやって
あとで痛い目に遭うよかマシだぜ
0192nobodyさん2009/05/17(日) 23:14:17ID:???
多人数だと結構あるけどな。
クラス名に綴りミスがあって、結構後から気付いたりとか。
でも修正に困ったことなんて無いけど。
変なクラス名を使い続けるよりはずっといいと思う。
0193nobodyさん2009/05/28(木) 19:56:38ID:fG8WN6gS
Zend_Mail使ってみたんだけど、メールの文字化けが発生するらしい。
しかし、自分のメールアドレスに送ってみたけど、文字化け確認できず。
大至急、直せって言われてるんだけど、どこが原因だか、わからない。
同じ経験した人います?
0194nobodyさん2009/05/28(木) 20:16:38ID:???
頻出だけど、ZFのバージョンはいくつ?
0195nobodyさん2009/05/28(木) 20:31:03ID:???
送信文字コードや、MIMEタイプ、対象のメーラーあたりの情報が無いと何とも。
0196nobodyさん2009/05/28(木) 20:48:13ID:fG8WN6gS
>>194-195
大変、失礼しました。
バージョンは最新の1.8系です。

送信文字コードはUTF-8で、MIMEタイプは未指定です。
対象メーラーはOEとThunderbirdです。
問題なのは、本番環境で自分のメールアドレス宛にいろいろメールを
送ってみたけど、全く、問題なかったこと。
文字化けしたと訴えてる人のメーラーもOEなので、わけわからん状態で。

0197nobodyさん2009/05/28(木) 21:25:19ID:???
>>196
メーラーのバージョン、OSはどうなの
0198nobodyさん2009/05/28(木) 22:09:57ID:???
Contant-type と Content-tranfer-type を指定すれ。
受信したメール本文を見て、ヘッダと内容がMIME的に正しいかチェックすれ。
0199nobodyさん2009/05/28(木) 22:34:59ID:???
OutlookとOutlookExpressの区別がついてない人もいるからそこはもっと突っ込んで聞いておくべき

あとISO-2022-JPで送る方が無難だと思う
0200nobodyさん2009/05/28(木) 22:42:33ID:fG8WN6gS
>>197
メーラーのバージョンはOE6.00.2900.180

>>198
Content-typeとContent-tranfer-typeを指定ってどうすればいいの?
MIME的に正しいかどう判断するんでしょう?
0201nobodyさん2009/05/29(金) 00:12:05ID:???
>>200
自分のとバージョンも一緒ってこと?
0202nobodyさん2009/05/29(金) 04:14:28ID:???
>>200
MIME系の知識はZFの範疇外、WEB PGとしての基礎知識なので追々学べばいいよ。

ただ具体的に何が文字化けしてるかわからないと、詳細な原因は特定できないよ。
件名?本文?半角カナ文字?

とりあえず、ヘッダとボディをBase64化してみれ。

Zend_Mail::setEncodingOfHeaders(Zend_Mime::ENCODING_BASE64);
Zend_Mail::setBodyText($txt, "utf-8", Zend_Mime::ENCODING_BASE64);
0203nobodyさん2009/05/29(金) 08:09:01ID:???
setEncodingOfHeaders はdeprecated扱いなので代わりに
setHeaderEncodingを使ってちょ
0204nobodyさん2009/06/01(月) 12:02:39ID:???
>>193
件名が長くなると化けるんじゃなかったっけ
もう修正されてたらごめん
ttp://nonn-et-twk.net/twk/node/155
02051932009/06/01(月) 13:28:19ID:VRCsDIyG
結局、原因はわからずでしたが、
$mail->setBodyText($body,"UTF-8")を
やってみたら、文字化け報告はなくなりました。

お騒がせしてすいません。
0206nobodyさん2009/06/01(月) 18:27:00ID:???
原因がわからずでしたで済ませちゃうのか…PGとしては最低だな…。
MIMEの基礎から学んでこいや。
0207nobodyさん2009/06/01(月) 19:14:02ID:VRCsDIyG
だって、ほとんどの環境で文字化け確認できないだもん。
社内向けのものだし、まぁ、いいんじゃね?みたいな。
で、一応、setBodyText($body,"UTF-8")でその人の文字化けも直ったしw
0208nobodyさん2009/06/02(火) 00:17:42ID:???
次の質問予想

社内のサイボウズで文字化けします
どうしたらいいですか?
0209nobodyさん2009/06/02(火) 01:16:44ID:???
まっとうなWEB PGなら、setBodyText($body,"UTF-8")で治った時点で原因が理解出来ると思うがなw
君はPGに向いていない、PGの能力の差は大抵がデバッグ能力の差だよ。

setBodyTextメソッドすら使いこなせてなかった時点で、素人以下ってのは明白だがw
0210nobodyさん2009/06/02(火) 01:40:06ID:???
1.8の話題にしようぜ
人を叩くのは良くないですよ
02112072009/06/02(火) 13:04:23ID:IL6uVg+K
>>209
てへへw
0212nobodyさん2009/06/03(水) 10:05:42ID:???
まあ、そんなカッカすんな。
取りあえず動けばいいって言う考え方はWEBなら悪くないと思うぜ。
0213nobodyさん2009/06/03(水) 22:14:24ID:???
ゆとり世代はこえぇなぁ・・・
0214nobodyさん2009/06/03(水) 23:06:32ID:???
とりあえず動くだけじゃ駄目だから
Webシステムは簡単にサイト落ちたりクラックされたりするんじゃないのか
0215nobodyさん2009/06/04(木) 03:00:03ID:???
PHPは基礎知識なしでとりあえず動いちゃうからね・・・ゆとりの巣窟になるのも仕方無い。

と自分に言い聞かせている。
職場の部下だったら小一時間説教もんだけどw
0216nobodyさん2009/06/04(木) 14:55:40ID:hOup5cX3
>>215
んな事言ってるおまえがひどいコード書いてるかもなw
0217nobodyさん2009/06/05(金) 16:57:04ID:???
ひどくないコードってどんなコード?
0218nobodyさん2009/06/05(金) 20:52:18ID:???
>>217
おまえの書くコードじゃね?
0219nobodyさん2009/06/07(日) 06:22:41ID:???
画面遷移が多かったり、フォーム項目が多かったり、Controllerの処理が長くなりそうな時ってどうしてる?
ファイル分割したいんだけども、ZFに命名規約が無いから迷ってるんよ。
0220nobodyさん2009/06/07(日) 07:28:29ID:???
それはもうプロジェクトの裁量で外に追いやっていくしかない
0221nobodyさん2009/06/07(日) 11:34:03ID:???
ディレクトリ階層が複雑になると管理が面倒になりませんか?
controllersの中に適当に掘りまくっていいのかな…
0222nobodyさん2009/06/07(日) 11:39:35ID:???
具体性がないから、何がしたいかわからないんだよな。

一応言っとく、
コントローラーは同一階層でのサブ化と、階層を掘ったサブ化で
コントローラー名の命名規則あるからね。
camelcaseでサブ化すると同一階層、_で区切るとディレクトリ
0223nobodyさん2009/06/07(日) 11:47:24ID:???
クラスの命名規則はしってるよ。
リファレンス通りのディレクトリ構成で作った場合にコントローラ内の一部ロジックを外だしにしたいんだ。

たとえば、
IndexCotroller内の処理が冗長になりそうなので、一部のロジックを外部に出したい場合とかね。
0224nobodyさん2009/06/07(日) 11:55:35ID:???
modelsがそれじゃないの?
0225nobodyさん2009/06/07(日) 12:09:19ID:???
modelはもう少し汎用的なものなイメージがあるけど、それでいいのかな。
0226nobodyさん2009/06/07(日) 12:50:15ID:???
他のコントローラや他のプロジェクトでも使うならアクションヘルパにするし
モノによってはプラグインにする。
Zendの規則に従わずに普通にライブラリディレクトリ作ってincludeしても
別におk。モデルにした経験は無いな。
0227nobodyさん2009/06/07(日) 12:50:24ID:???
たとえば、どんなロジック?
0228nobodyさん2009/06/07(日) 16:54:10ID:???
symfonyの場合はPeerメソッドにある程度突っ込んだりするけどな
0229nobodyさん2009/06/11(木) 14:08:50ID:v8Ky+P1J
Actionのinitでエラーが発生したときエラーページに_forwardしてるんですが
すぐ処理が転送してくれません。

例えばController_Actionのメソッドとして、init(),とloginAction()
があるとします。
init()でDBの接続処理を行い、接続できなかったときにエラーページに
飛ばしたいのにloginActionが実行されてしまいます。
#_forwardにはreturn をつけて書いてます。
init()からすぐ別コントローラに飛ばすにはredirectじゃないとだめなんでしょうか
みなさんどうしてますか
0230nobodyさん2009/06/11(木) 14:46:49ID:???
まず、_forwardとredirectは別ね。
で、おれなら、DB接続エラーはコントローラーにはハンドルさせないで例外を投げる。
initは初期化処理のみにしておけば、通常処理用のエラー処理は入ってこないはず。
が、どうしても、アクション前条件判定でエラーコントローラーに飛ばすなら、
preDispatchで_forwardする。
0231nobodyさん2009/06/14(日) 17:33:28ID:???
1.8.3 使ってたら
exception 'Zend_Cache_Exception' with message 'cache_dir must be a directory' in /virtual/monabase/library_test/Zend/Cache.php:208
っていうのが出るようになったんですけど
キャッシュとか使わなくていいんで
どうにかなりませんか?
0232nobodyさん2009/06/14(日) 19:06:28ID:???
どうにかしたかったら、backtraceぐらい晒してくれ。

おれは1.8.3だけどそんなエラー出ない。
0233nobodyさん2009/06/14(日) 19:48:51ID:???
Zend_Locale::setCache();したら直った
Zend_Date使ってるのが影響したんだろうと思うんですけど
0234nobodyさん2009/06/16(火) 20:50:22ID:hxQFGTlU
マニュアルの日本語化って今どうなっとるんです?
0235nobodyさん2009/06/16(火) 22:08:21ID:???
>>234
あなたも翻訳に参加しよう

http://d.hatena.ne.jp/satoruyoshida/20090603/1244035139
0236nobodyさん2009/06/17(水) 12:14:05ID:???
1.8.0からRADツールが追加されたと聞いてやってきました。

再度ZendFrameworkを触ってみようと思います。

皆さんよろしくお願いします。
0237nobodyさん2009/06/17(水) 13:55:51ID:lVB38oSh
Zend Studio Serverはなくなったんでしょうか?
04WebServerとの組み合わせで使用していました。

今出ているZend Server?を試してみましたが、Apache前提みたいです。
0238nobodyさん2009/06/17(水) 17:22:47ID:???
http://framework.zend.com/docs/quickstart/create-a-model-and-database-table
このページで

モデル→データマッパ→ZendDbTable
となってるんですが、

モデルやデータマッパをスクリプトから自動生成する機能はないんでしょうか?
0239nobodyさん2009/06/17(水) 21:25:41ID:???
>>237
公式サポート窓口へドーゾ
0240nobodyさん2009/06/18(木) 20:04:08ID:5iF8/wzr
最近zendfw始めたんですが、imgフォルダとかcssフォルダはどこに置いてどう管理したら良いんですか?
普通にdocumentroot以下に置いて、phtmlには src="/img/hoge.gif"とかすべき?
0241nobodyさん2009/06/18(木) 22:14:24ID:???
>>240
管理し辛いとか、認証をかけたいとか、特別な理由が無い限りはそうなるかと。
0242nobodyさん2009/06/18(木) 23:20:18ID:???
>>240
documentroot以下は同じだが、
俺も最初はそのsrc=のように絶対指定していたのだけど、
<base href="http://www.example.com/..../" />
ってして、相対指定にした。
でないと、開発環境と本番環境の相違を吸収しにくい。
baseタグなんてそれまで使ったことなかったから、すっかり忘れていたわ。
0243nobodyさん2009/06/19(金) 00:54:44ID:???
>>241,242
ありがとうございます
>>242
そのbaseタグ使う方法良さそうですね
もしくは基準のパスを定数でもたせるのも変更時便利かもしれない
ありがとうございました
0244nobodyさん2009/06/19(金) 11:55:12ID:DHeb1GYG
ValidatorのStringLengthって文字数じゃないのね
UTF8だと日本語が思いっきり3でカウントされる
0245nobodyさん2009/06/19(金) 12:16:16ID:???
エンコード設定すれば?
0246nobodyさん2009/06/20(土) 13:15:25ID:???
www.hoge.com/にあるリンクタグが<a href="/sample">リンク</a>ってなってるとき、
これはsampleコントローラ中のindexアクションを実行するわけで、
そのときブラウザのURL欄は www.hoge.com/sampleになるわけですよね?

どういうわけか、クリックしても www.hoge.com/に戻って来てしまいます。
どんな原因が考えられますか? 

なお、sampleコントローラ中のindexアクションには、こういう結果を出すリダイレクト処理は
書いてありません。(単純に、helloを表示するだけです)
www.hoge.com/の.htaccessは
RewriteEngine on
RewriteBase /
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php です
何が原因でしょうか、情報不足かもしれないですが、よろしくお願いします
0247nobodyさん2009/06/20(土) 13:17:33ID:sayu7hyr
しまった、、あげさせてもらいます
すみません
02482462009/06/20(土) 13:56:55ID:sayu7hyr
今確認したところ、indexコントーローラ中のhogeアクションは実行できます
→ www.hoge.com/index/hoge/ は表示する
別のアクションコントローラを表示できないようです
なぜだろう。。
0249nobodyさん2009/06/20(土) 17:52:12ID:???
/sample/index

でアクセスした場合はどう?
02502462009/06/20(土) 18:03:33ID:sayu7hyr
>>249
ご回答ありがとうございます
試してみましたがダメでした。以下変でしょうか?

SampleControllerの中身は
<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action{
public $aisatsu = "hehehe";
public function init(){ //通常のクラスの __construct()に該当します
echo "これはsampleです";
}
public function indexAction(){
$this->view->result = $this->aisatsu;
} //不要な場合は、メソッドの中は空でも構いません
}

view用ファイルは
views/scripts/sample/index.phtmlがあります
0251nobodyさん2009/06/20(土) 18:08:33ID:???
クラス名がIndexControllerになってるけどもw
02522462009/06/20(土) 18:15:23ID:???
>>251
うああああああ!!
大変失礼しました!できた、感動した!
0253nobodyさん2009/06/22(月) 13:48:28ID:???
Smarty組み込んで利用してるんだけど、{foreach}が使えない。そういうもん?
0254nobodyさん2009/06/22(月) 13:55:24ID:???
お前は何を言ってるんだ
http://smarty.net/foreach
0255nobodyさん2009/06/22(月) 15:51:12ID:???
>>253
http://www.php-seed.net/blog/archives/370
こういう問題でもなく?
0256nobodyさん2009/06/23(火) 17:52:02ID:fbX2StFR
質問です、以下のコードをindexController.phpで実行すると
「自動転送がループしています」と出ます
<?php
require_once 'Zend/Controller/Action.php';
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('config.ini',null);

class IndexController extends Zend_Controller_Action{
public function init(){ //通常のクラスの __construct()に相当
// $dbConnect = new dbConnect();
}
public function indexAction(){
$this->view->result = $this->aisatsu;
}
}

require_once('Zend/Config/Ini.php');と$config = new Zend_Config_Ini('config.ini',null);を
コメントアウトすれば動いてviewの表示まで行ってくれるんですが、なぜ上記の2行が
問題なのかがわかりません。
apacheのエラーログには何も出ません。すみませんがアドバイスお願いします。
ZFWは1.83、apacheは2、phpは5.2.6、OSはcentOS5.3です
0257nobodyさん2009/06/23(火) 22:49:32ID:U9kBq3jC
異なったコントローラで同一のZend_Formを持ち回りたいんだけど何か良い方法ありませんか?
Bootstrapに入れるのは何か違う気がして、、
0258nobodyさん2009/06/23(火) 22:52:11ID:???
ZendRegistryは?
0259nobodyさん2009/06/23(火) 23:19:57ID:U9kBq3jC
レジストリに入れるのもブートストラップ的なところに記述する感じになるのがちょっと

他のコントローラの関数を参照する関数があればいいんですが
IndexControllerから
TestController::getForm()を参照したいです
02602562009/06/23(火) 23:33:48ID:fbX2StFR
256ですが、どういう問題か教えてもらえないでしょうか?
ZendFW以前の問題で話になんね、って感じなんでしょうか?
それならそれで、ご指摘いただけると有り難いです。
一方的にすみませんがよろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています