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

ZendFramework Part2

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2008/03/05(水) 23:21:24ID:???
公式
http://framework.zend.com/

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

m-takagi ver(↑よりたぶん新しい)
http://www.m-takagi.org/docs/php/zend/

API
http://framework.zend.com/apidoc/core/
0809nobodyさん2009/02/14(土) 15:08:04ID:???
クッキーを受け取ったかどうかが知りたければ、
Zend_Http_CookieJar
0810nobodyさん2009/02/14(土) 15:10:30ID:???
ん、ていうか君たち、$_COOKIEの代替だと思ってない?
0811803,806,8082009/02/15(日) 00:18:09ID:???
>>809
さっぱり判んねぇっす。

>>810
ち、違うんですか。

すみません、どなたかクッキーの使い方の簡単なコード書いてもらえないでしょうか。
公式のマニュアルだけでは、すみません、
未熟な者でよく判らないです。

例えば >>803 みたいにカウントさせて、
有効期限切れたら0からスタート、みたいな・・・。

つーか、何回もすみません。
ほんっと、どうしたら良いか判らなくて。
0812nobodyさん2009/02/15(日) 00:50:34ID:???
未熟な者なら地道に勉強すべし。急がば回れ。
0813nobodyさん2009/02/15(日) 07:50:07ID:???
>>811
クッキーを受け取る(アクションコントローラー内)
$this->getRequest()->setParamResource(array('_GET', '_POST', '_COOKIE');
としておくか
$this->getRequest()->getCookie('hoge',false);
みたいな。

クッキーの発行は標準関数のsetcookie

掲示板の入力項目の記憶ならZend_Sessionで、覚えててねフラグを立てる。
短いセッションを別に作りたいときは、Zend_Sessionのnamespaceを使う
0814nobodyさん2009/02/15(日) 13:32:31ID:???
徹底入門見てすげー興味わくけど、いざやろうとすると手が止まるわ。
08158112009/02/15(日) 23:27:17ID:???
>>813
ありがとうっす!!
できました!!!

Zend_Http_Cookieにばかり目がいってしまい、
リクエストオブジェクトのgetCookie見落としてました。

発行もZF専用のがあるかと思ったんですが、
setcookieでいけるんですね!!

前やった時できなかったので、
なんか間違えてたのかもしれません。
$_COOKIEもちゃんと入ってました。

おかげ様でスッキリ爽快!!
これでバリバリ勉強できます!!!!

>>813さんは良い人!!!!!
ありがとうございました!!!!
0816nobodyさん2009/02/16(月) 18:56:57ID:???
ZF使いは変態だって話は本当ですか?
0817nobodyさん2009/02/16(月) 20:05:34ID:???
何故過去形なのか
0818nobodyさん2009/02/16(月) 20:06:04ID:???
誤爆スミマセン
0819nobodyさん2009/02/17(火) 14:02:49ID:???
1.75でたみたいです。
ここにいる人はコマンドからインストールだろうけど
ウェブからやっちゃう人向けにスクリプト書いてみました。

<?php
include_once 'Archive/Zip.php';

define('ZEND_ARCHIVE', './ZendFramework-1.7.5.zip');
define('INSTALL_DIR', '/php/includes/');

$path = basename(ZEND_ARCHIVE, '.zip') . '/library/';
$param = array(
'by_preg' => '#' . $path . 'Zend/#',
'add_path' => INSTALL_DIR,
'remove_path' => $path
);

$zip = new Archive_Zip(ZEND_ARCHIVE);
$zip->extract($param);
echo $zip->errorInfo();
08208192009/02/17(火) 14:06:50ID:???
1.7.5ですね。
by_pregにはi修飾子つけないと一部のファイルが抜き出せないみたいです。
#' . $path . 'Zend/#i
0821nobodyさん2009/02/17(火) 23:39:53ID:???
FirePHPのプラグイン良いな・・
0822nobodyさん2009/02/18(水) 00:28:23ID:???
なんに使うの?
0823nobodyさん2009/02/18(水) 01:25:20ID:???
デバッグ以外の何に使えと
http://framework.zend.com/manual/ja/zend.wildfire.html
画面に出すデバッグメッセージより制約が無くて便利じゃないか
0824nobodyさん2009/02/18(水) 01:30:40ID:???
大分前に試したら、標準出力のエラー拾えなかったんだけど、parse errorとか拾えるの?
0825nobodyさん2009/02/18(水) 01:51:37ID:???
それは無理じゃない?
任意のデバッグメッセージやSQLトレースをクライアントに送りつけるものであって、
そういうのは対象じゃないと思うんだけど
0826nobodyさん2009/02/18(水) 13:24:49ID:OeM2TrBc
Zend_Db_RowのfindParentRowはすごく便利なんだけど、単一行しか帰ってこない。
複数で取得するにはどうすればいいか教えてくれ。
0827nobodyさん2009/02/18(水) 13:45:55ID:???
マニュアル嫁
0828nobodyさん2009/02/18(水) 16:09:55ID:???
>>826

rowを返すものなんだから、やりたいことと使い方が違うんじゃない?
0829nobodyさん2009/02/18(水) 21:32:31ID:???
徹底入門も買った。一通りDBと連携したアプリを作れるようになった。
ZFは疎結合とか言われてる割に、シンプルなMVCとして使えることも分かった。

ただ、ZFって提供してくれる実際の機能の少なさの割りに
工程数がアホみたいに掛かっててどうしょうも無く重い。

しかも、その工程数が、おかしな挙動と
(個々のコードではなくクラス全体の)見通しの悪さに繋がっている。

まるでたらい回しにされたあげく、大した事もしてくれず
時間とコストばかり掛かる日本の地方のお役所みたいなFWだと思う。

コードが綺麗だから一見、しっかりしてそうに騙されるんだけど
体裁だけ整えた役所のレポートと同じで内容が駄目だよ。

ドキュメントも量ばかり多くて重要なところが省かれてるし
英語の方のドキュメントの質もアスペルガーの人がわめいてる並に
分かり難いから翻訳者が困ってるのが見て取れる。
0830nobodyさん2009/02/18(水) 22:05:10ID:???
>英語の方のドキュメントの質もアスペルガーの人がわめいてる並に
>分かり難いから翻訳者が困ってるのが見て取れる。

ってどの辺?
0831nobodyさん2009/02/18(水) 22:54:08ID:???
>>830
脳内の翻訳者
0832nobodyさん2009/02/19(木) 19:04:32ID:aKK5Rtx4
Zend_Db_RowクラスのfindManyToManyRowsetを使って、
selectオブジェクト渡せるらしいだが、使い方がわからん。
そのテーブルに対するselectになるの?joinも書かないとダメなの?
0833nobodyさん2009/02/19(木) 22:32:45ID:???
ManyToManyが設定されてるなら普通join書かないと思うけど。
0834nobodyさん2009/02/19(木) 22:37:20ID:aKK5Rtx4
findManyToManyRowsetで一応は、取得してこれた。
だけど、そこから条件指定したり、並び替えしたりしたくて、selectオブジェクト使いたいんだけど、
どうやって使えばいいかわからない。
第5引数のselectは一体、どうやって使うのかわからないんだ。
どのテーブルに対してのselectオブジェクトを渡しても、期待通りの動きをしてくれない。
0835nobodyさん2009/02/20(金) 01:02:36ID:???
>>829にわりと同感だな。
ZFは好きなんだ。
MVCモデルで作っていくのはいいんだけど、重さはいかんともしがたい。
Zendの有料ソフトをそろえたら少しはマシになるの?
大規模なプロジェクトの場合には、その辺が簡単に解決できるのかな?

ZFで作るとMVC設計の考え方がわかるので、
そこで理解した設計法を元に、オブジェクト指向(的も含む)スクリプトを書くのが
いいんじゃないかと思う。

そんなのが許されるのがPHPだし、
もしかしたら、それがPHPを一番活かせるのでは?と思ってしまう。
ビシっとガチっと設計したいなら
ほかの言語とフレームワークの方がいいのでは?と思ってしまう。
間違ってますかね・・・?
0836nobodyさん2009/02/20(金) 01:24:33ID:???
工程数が多い
徹底入門はイケてる書籍
MVCの参考サイトはhttp://zendframework.com/

このスレでは定説。
0837nobodyさん2009/02/20(金) 02:15:17ID:???
自由度が高いFWなんだから工程数が多くて当たり前なのでは
作業少しでも減らしたいならCakeでも使えばいい
0838nobodyさん2009/02/20(金) 02:26:32ID:???
てか工程数を少なく出来る程度にカスタマイズしてから使うのがZF
0839nobodyさん2009/02/20(金) 08:13:11ID:???
そのカスタマイズの工程が半端ないのがZF
0840nobodyさん2009/02/20(金) 08:38:29ID:???
お膳立てがセルフサービスなんだよな、要は
見た目は綺麗な箸とか食器とか並んでるけどさ

隣の席じゃ美味そうにケーキ食ってる奴がいて
じゃあ俺も、と食ってみるけど
いかんせん不味いんだな

向こうの席じゃヘッドフォンで楽しそうに音楽聴いてる奴がいて
何聴いてるのか尋ねると「クラシックだ」って言うんだけど
どう聴いてもパンクなんだな

参ったな
0841nobodyさん2009/02/20(金) 09:00:44ID:LxVU4MGc
コントローラの粒度ってどうなってる?
入門書を読めば機能(例えば会員管理とか)ごとにコントローラ
を作成して複数アクションを定義しているみたいだけど機能が増え
たときにすごい大きくなりそうだし1画面1コントローラにしたほう
がよいのかなあ。。
0842nobodyさん2009/02/20(金) 09:19:35ID:???
そんなのあなたの自由
0843nobodyさん2009/02/20(金) 10:34:33ID:???
>>834
取得してくるのはrowsetだし、selectを渡すのはmatchTableに対してだから、
たぶん、あなたの思い通りにはならないかと。
関係テーブルをSELECTでいじりたいなら、ベタにSQLでやったほうがよいと思います。
0844nobodyさん2009/02/20(金) 10:46:25ID:???
>>842
正しくこれだよな。
Frameworkって言っても、型にはめてもらえず、
右往左往してる内にとても面倒と感じてしまう。
俺はつまみ食いできるところが気に入ったんで馴染めたけど、
名前から期待する姿とのギャップに、ヘコタレる奴が周りにめっちゃいる。

スカッフォルドなりと、標準的な設計パターンのドキュメント充実したら、
良いと思うんだけどな。
0845nobodyさん2009/02/20(金) 10:54:43ID:???
まぁ、そういう意見はよくある。
Zend_Applicationとか。そういう意図なんだと思うけど、
結局これがリリースされると、好きに使ってくれっていうスタイルじゃなくて、
こういう風に使うのが王道みたいになると、オレオレなオレにはちょっとさびしい。
0846nobodyさん2009/02/20(金) 11:03:19ID:???
まさに指示されないと何もできない日本人と創造力のある欧米人の違いだな
0847nobodyさん2009/02/20(金) 15:03:08ID:???
>>846
本気でこう思ってるなら、アホすぎる
0848nobodyさん2009/02/20(金) 15:26:22ID:???
既存のベタ書きやオレオレフレームワークからの置換にはかなり重宝する
DBとか運用中のがあってそれに合わせないといけない場合とか
0849nobodyさん2009/02/20(金) 21:00:38ID:???
>>847
なんでだよ もっともだ
0850nobodyさん2009/02/21(土) 02:56:45ID:???
>>848
PEAR代替を考えるとそれが正解かもな
正解って言い方も変だが
0851nobodyさん2009/02/23(月) 02:15:47ID:???
Zend_Db_Adapter_Abstractのdeleteメソッドって
なんでプリペアードステートメント使わないでwhere句が直実行なんだろ?

あとreplace構文がないのは仕様なのか
0852nobodyさん2009/02/23(月) 21:06:56ID:???
プリペアドなんて糞プログラマーが使うものだからだろ
0853nobodyさん2009/02/23(月) 21:12:36ID:???
PHPプログラマ以外はみんな普通に使ってる機能なんだぜ
0854nobodyさん2009/02/24(火) 00:57:20ID:???
携帯サイトでZF使おうと思ったんだけどDocomoの糞仕様のせいでセッションが使えないけどなんなの?
未だにSID引き回せってこと?
最近だとiモードIDとかいう固定識別番号とDB連動でセッション管理するのが普通?
しょっちゅうDB覗きに行くのはなんだかなぁ・・・
0855nobodyさん2009/02/24(火) 01:07:00ID:???
Zend関係なくそれが普通だよ
0856nobodyさん2009/02/24(火) 01:16:46ID:???
全然ZF関係ねーw
0857nobodyさん2009/02/24(火) 01:41:36ID:???
>>854
iモードIDは後から出来た規格だからSSL領域で送信されない
よって、SSLでのログイン等が必要ならiモードIDだけでセッション管理は無理
というか、他のキャリアの端末でも識別番号はHTTPでも送信されちゃってるから、
Amazonみたいな仮ログインぐらいにしか使えないよ

> しょっちゅうDB覗きに行くのはなんだかなぁ・・・
Zend_Session_SaveHandler_Interface実装したMemcachedアダプタとかどうよ
0858nobodyさん2009/02/24(火) 03:06:14ID:???
Zend_Db使うくらいなら、PDOに自作クラスをかぶせる方が早くて軽くてメシウマな気がする。
Zend_Sessionとか思想はいいんだけど実装が重すぎるのが気になるよね。
0859nobodyさん2009/02/24(火) 10:11:40ID:???
>>854
つかえるよ。セッションじゃなくて使えないのはクッキーだアホ。
勉強しなおせ。
0860nobodyさん2009/02/24(火) 10:49:14ID:???
>>859
> Docomoの糞仕様のせいでセッションが使えないけど
> 未だにSID引き回せってこと?
↑ドキュモがCookie使えないから、URLかHiddenにセッションIDくっつけて引き回さないとセッション使えないって意味としか見えないが
0861nobodyさん2009/02/24(火) 19:07:39ID:???
Zend_Dbを使うとSET NAMESで文字コード変換しかないのか。
mysql_set_charsetとか使えんのかね。そもそもSET NAMESってセキュリティ
的に大丈夫なのかな
0862nobodyさん2009/02/24(火) 19:10:53ID:???
Zend_Dbではじめてのデータベース入門なんだけど
やっぱり別々に覚えるべき?
0863nobodyさん2009/02/24(火) 19:23:31ID:???
文字コード変換しないのが普通じゃないのか
連鯖でEUCとかやってるところがカスなだけで文字コード変換なんて文字化けの原因にしかならん
0864nobodyさん2009/02/24(火) 20:10:59ID:???
sqlの勉強は面白くないから実際にやりたいこととセットにしたほうがいいと思うよ。
0865nobodyさん2009/02/25(水) 02:21:28ID:???
>>858
> PDOに自作クラス

さーせん!こないだそれで済ませちゃいました。
正直ORMとか利点が理解できてません!さーせん
だれかおしええt
0866nobodyさん2009/02/25(水) 03:21:37ID:???
>>865
SQLインジェクション対策とかキャッシュ機構とか。
インピーダンスミスマッチの解消ってのは実際にはそんなに意味がない場合が多い。
あとEFやLINQ、SubsonicならIntellisenseが効くとか。
0867nobodyさん2009/02/25(水) 03:48:08ID:???
>>866
丁寧にありがとう。
小規模チームが多いせいか、あんま要らね。って思っちゃうなぁ。
でもキャッシュを隠蔽するにはいいかも。もしかしてZFにもあるの?
ちょっとマニュアル読んでくる。
0868nobodyさん2009/02/26(木) 16:43:37ID:z2y5dmsn
Zend_Controllerで共通のヘッダーを出力したいんだけどなんか良い方法無い?
できればdispatchするファイルに設定しちゃいたい。
0869nobodyさん2009/02/26(木) 16:57:38ID:???
Zend_Layoutかビューヘルパーで echo $this->partialが普通っぽい
やりたいことがいまいち読めない
0870nobodyさん2009/02/26(木) 16:58:47ID:???
ヘッダーってHTTPレスポンスheaderのこと?
それならレスポンスオブジェクトの範疇だけど
0871nobodyさん2009/02/26(木) 17:23:49ID:z2y5dmsn
後付けで申し訳ない。
header()のことです。

モジュールが増えてきてさらに各コントローラごとにinit()で出力いているので効率が悪いです。
できればZend_Controller_Frontをdispatchするあたりで設定したいです。
0872nobodyさん2009/02/26(木) 17:28:50ID:???
フロントコントローラーでやっていいんなら、bootstrapでやっちゃえば?
プラグイン書くほどじゃないし。
アクションコントローラーのスーパークラスとか書いてないの?
0873nobodyさん2009/02/26(木) 21:57:21ID:z2y5dmsn
>>872
どうもです。
bootstrapってのはbootstrap.phpなりを作ってインクルードってことでしょうか?
というかそもそもの設計が間違えている気がするんですが、
通常は各コントローラごとにヘッダを設定するものなんでしょうか?
0874nobodyさん2009/02/26(木) 22:07:31ID:???
ZFはuse-at-will だからね。どう設計しようが自由。
$response->setHeaderでセットしてるよね?
逆に言えば、$responseに干渉できる場所ならどこでも好きな場所でやればいい。

実際、generator ZFってぐらいならbootstrapでもいいわな。
共通なものは基底クラスのinitでもいいし、
個別コントローラーでセットするものがあってもいいんじゃない?
0875nobodyさん2009/02/26(木) 22:33:02ID:z2y5dmsn
>>874
はい。
$this->getResponse()->setHeader()でセットしてます。

class Header extends Zend_Controller_Action{}に__autoload
というのを作成して
class IndexController extends Test{}
で継承していく形にします。
0876nobodyさん2009/02/26(木) 23:03:36ID:???
>>875
後半がよく分からない

Zend_Controller_Actionを継承した俺俺コントローラ作って
そこのinitメソッド中に書くとかではだめなの?
0877nobodyさん2009/02/26(木) 23:14:34ID:z2y5dmsn
>>876
失礼しました。
autoloadではなくinitですね。
init使えるの忘れてました。

フロントにheader()使いたくなってきた。。
0878nobodyさん2009/02/26(木) 23:15:37ID:???
HeaderとTestって何?誤記かな?
フロントにheaderって?$this->getResponse()->setHeader()で駄目なの?
0879nobodyさん2009/02/26(木) 23:20:37ID:z2y5dmsn
あーそこも間違いで。

dispatchするファイルの先頭あたりに直接header()で出力した方が楽な感じ勝手ことです。。
0880nobodyさん2009/02/27(金) 01:40:29ID:???
BaseControllerのinitに書くのがベターな気がする。
bootstrapに書くのは気持ち悪すぎる。
0881nobodyさん2009/02/27(金) 03:04:34ID:???
気持ち悪いとかそういう個人的主観はいいから、
納得できる説明しような
0882nobodyさん2009/02/27(金) 08:06:09ID:???
起動ファイルに共通処理書いちゃだめだろ
例外的にその共通処理をさせたくない場合に面倒
ましてやレスポンスヘッダの処理を
bootstrapに書くとかありえないだろ

BaseになるControllerに書いとけば
その例外的なControllerのinitで
共通処理をしないように上書きするだけだ
これで納得できるか?
0883nobodyさん2009/02/27(金) 09:36:32ID:???
アプリケーションに依存した入力チェック関連のクラスってみなさん
どこに格納してる?models?それともviewsの下?
0884nobodyさん2009/02/27(金) 10:16:53ID:???
入力チェックをなぜにviewに入れるんだ?
0885nobodyさん2009/02/28(土) 19:04:24ID:???
>>881
別に気持ち悪くないなら、bootstrapに書いてもいいわけだし、
気持ち悪いからって評価基準は普通だと思うが。
0886nobodyさん2009/02/28(土) 19:12:28ID:???
気持ち悪いからって文字通り気分的な問題だと思ってるのか?
0887nobodyさん2009/02/28(土) 19:29:47ID:???
気持ち悪くてもいいからってのを突き詰めていくと
フレームワークじゃなくてもいいじゃんみたいなことになってしまう
0888nobodyさん2009/02/28(土) 22:09:51ID:???
>>886
気分的じゃない問題があるの?
たとえば、サーバー情報をheaderに入れるっていう方針ならbootstrapでもいいんじゃね?

気分以外の理由があるんなら知りたいなぁ
0889nobodyさん2009/02/28(土) 22:21:53ID:???
ぐぐれ
0890nobodyさん2009/02/28(土) 22:23:13ID:???
>>885
>別に気持ち悪くないなら
>>886
>気持ち悪いからって
>>887
>気持ち悪くてもいいからって

なんか>>887とか完全に意味を穿き違えちゃってるよな。
面白い。
0891nobodyさん2009/02/28(土) 22:30:14ID:???
>>879
symfonyでPDF、ajax、html、svg、csv、ファイルダウンロードを扱ってるが、
こういったファイル形式でヘッダ変えたい場合不便だぞ。そんなことすると。

任意の場所でシングルトンでレスポンスオブジェクト呼び出して、いじくり
まわせる便利さを体験するといい。
0892nobodyさん2009/02/28(土) 22:31:17ID:???
>>882は起動ファイルとbootstrapが一緒なのか。
基底クラスマンセーって気持ちいいの?
0893nobodyさん2009/02/28(土) 22:33:30ID:???
>>891
そういうケースもあるってだけよな
だいたい、headerの処理を1か所でまとめてやらんでもいいわけで。
まさか、header追加したらすぐにheaderが飛ぶと思ってるわけでもないんだろうけど。
0894nobodyさん2009/02/28(土) 22:35:03ID:???
bootstrapは「自力で生きる手段」という意味だぞ。
何でも詰め込むのが正しい。
0895nobodyさん2009/02/28(土) 22:36:13ID:???
>>893
headerメソッドは追加したらすぐ飛ぶ仕様だけどな
0896nobodyさん2009/02/28(土) 22:41:42ID:???
>>893
>だいたい、headerの処理を1か所でまとめてやらんでもいいわけで。
これはないわ…
0897nobodyさん2009/02/28(土) 22:42:46ID:???
>>895
header関数の話は関係ないでしょ。>>874-875 みてるか?
0898nobodyさん2009/02/28(土) 22:44:15ID:???
>>896
kwsk
0899nobodyさん2009/02/28(土) 23:02:14ID:???
前提条件が示されてないんだから、気分次第で好きなように書けとしか言えんよな。

個人的にはbootstrapには最低限のコードしか書かないけどね。
0900nobodyさん2009/02/28(土) 23:03:28ID:???
headerの処理ってのは、単純に情報の通知にも使われるし、
ダイジェスト認証やリダイレクト、キャッシュの有無やら、OpenID認証やら、
もし、コンテンツヘッダのみならコンテキストスイッチでいいだろうけど。
こいつらひっくるめて一か所で処理はまず無理。
0901nobodyさん2009/02/28(土) 23:16:01ID:???
>>900
「headerの処理」?
ごめんheaderの処理ってのが、出力のことなのか、
吐き出す内容の決定のことなのかで全然回答が変わってくる。
0902nobodyさん2009/02/28(土) 23:17:26ID:???
cache-controlだけは一括で出力したい
0903nobodyさん2009/03/01(日) 06:56:58ID:???
>>901
$response->setHeader()をどこでやるかっていう話なんだから、
どこで内容をセットするかってことでしょ、普通
0904nobodyさん2009/03/03(火) 08:29:52ID:???
1.7.6リリース!
ところで、こういうマイナーバージョンの変更点をダウンロードせずに
ウェブから確認できるページってありますか?
0905nobodyさん2009/03/03(火) 08:42:58ID:???
あるじゃん
http://framework.zend.com/download/latest
0906nobodyさん2009/03/03(火) 08:52:05ID:???
おぉ、READMEをクリックすると出るんだw
0907nobodyさん2009/03/03(火) 09:12:52ID:???
ほんとだ。気づかなかったよ
分かりにくすぎ…
0908nobodyさん2009/03/03(火) 11:09:39ID:???
Zend_LogのFireBugへの書き出しってどんな風に使ってる?
例外とかはErrorControllerでキャッチしてるし
実行時間なんかはFireBug自体で計測できるし・・・
変数の中身を見たいとき用とか?
レス数が900を超えています。1000を超えると表示できなくなるよ。