トップページphp
983コメント361KB

Zend Framework Part5

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/02/11(金) 04:04:29ID:???
公式
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/
0202nobodyさん2011/06/15(水) 11:30:08.86ID:???
本を買ったら?
俺は最初本で学習したおかげで、公式のチュートリアルも理解できた。
02031842011/06/15(水) 17:02:31.99ID:???
>>197 >>202
はい。
ネットのドキュメントだとなさそうなので、あきらめて本を探しました。
洋書でZFの本がたくさんあったのでAmazon.comで2冊ほどぽちってみました。

ZFと違って、CodeIgniterのサイトは、ヘルプやチュートリアルがすごく分かりやすかった。
しかもVideo Tutorialまであったよ。
http://codeigniter.com/user_guide/toc.html

トップページにも、
CodeIgniter is right for you if you need clear, thorough documentation.
と書かれていたけど、ほんとにドキュメントしっかりしてるなー、と思った。


>>199
同じ感想の人いてよかった。
いちばんZFのドキュメントでいらついたのが、コードの部分をコピペしようとしたら
行番号まで張り付けられてしまうようになっていること。
0204nobodyさん2011/06/15(水) 17:24:31.33ID:???
洋書?って事は英語がわかるんだろう?
それなら本を買わなくても海外のブログ等から情報を得られそうだけど?
0205nobodyさん2011/06/15(水) 18:05:50.97ID:???
>>204
英語圏のサイトも探しましたけど、良書に匹敵するような
コンテンツはなかったです。
ブログはピンポイント解説どまりが多かったです。

よく使う機能を、体系的に、わかりやすく解説していて、
なおかつ内容が新しい、というのは見つからなかった。

Frameworkは、CodeIgniterだのCakePHPだの好みでいろいろ宗派が
わかれるから、ネットのコンテンツも少なくなるんではないかな、と思います。

Rob Allenのサイトにあるチュートリアルは英語圏では評価が高いみたい。
これは読みました。
http://akrabat.com/zend-framework-tutorial/

彼は、Zend Framework in Actionという本も書いているんだけど、
amazonの書評はあまりよくなかった。バグがおおいとか。
0206nobodyさん2011/06/15(水) 20:29:15.04ID:???
>>201
「Create A Layout」の具体的にどこが分からんの?
俺は解説を流し読みつつ載ってるコードを書いたら最後までスムーズに実行できたから
いまいち君の言ってることがピンと来ないんだけど
0207nobodyさん2011/06/15(水) 21:03:11.09ID:???
>>198
他人を当てにしないで自分がまずやらないと、ね
昔も IRC で言ったけれど、利用企業からすこしづつ人を出して分担して作業して欲しいな。
0208nobodyさん2011/06/15(水) 21:22:47.51ID:???
>>203
公式マニュアルを改善するリーダーとして活躍してみませんか?(英語必須)
0209nobodyさん2011/06/15(水) 22:11:01.59ID:???
本に載ってる情報は最新バージョンとの差異が多々あるので、あまりオススメ出来ない。
(特にZF1.9以前のバージョンの解説書)

簡潔なリファレンスとソースコードがあるのだから、
それを読めるようになるのが一番手っ取り早い。
英語が理解できるなら尚更コードコメント読む方が早い。

IDE使えばクラスツリーやコード補完までしてくれるゆとり仕様。
(CIやCakeはIDEとの親和性悪すぎる)
0210nobodyさん2011/06/15(水) 22:49:55.58ID:???
MappaerとかAuthとかを詳しく書いてほしいですな〜
0211nobodyさん2011/06/16(木) 14:19:10.00ID:???
CodeIgniter絶賛なら、CodeIgniterの子供になればいいのに。
zendには要らない娘。
0212nobodyさん2011/06/16(木) 19:42:52.98ID:5IgfNiWj
Zend_Authについてお聞きしたいんですが、以下について解る方いらっしゃいましたらぜひ力を貸してください。

defaultとadminの2つのモジュールがあると仮定して、adminモジュールで通した認証を、defaultモジュールからも参照した いのですが、どのようにすればいいかわかりません。

1. AdminモジュールのIndexController
$db = Zend_Db::factory('Pdo_Mysql', $params);
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'tablename', 'id', 'pass', 'md5(?)');
$authAdapter->setIdentity('hoge')
      ->setCredential('hage');
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter); // ここで認証を成功させる


↓続きは「本文が長い」と出て書き込めないので分割して書きます。
0213nobodyさん2011/06/16(木) 19:44:03.04ID:5IgfNiWj
続きです。

2. AdminモジュールのHogeControllerへアクセス
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
  die('OK'); // OKが出力される
} else {
  die('NG');
}

3. defaultモジュールのIndexControllerへアクセス
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
  die('OK');
} else {
  die('NG'); // NGが出力される。ここでOKを出したい
}

Admin - IndexControllerで認証した結果を default - IndexController で活用したいです。
上記のスクリプトで言えば、最後のdefaultモジュールのIndexControllerで"OK"を出力したいのですが、どうすればいいんでしょうか?
0214nobodyさん2011/06/16(木) 19:55:04.04ID:???
>>213
モジュール間でセッションは共有出来てる?

デフォルトでは認証結果をセッションで引き回す仕組みになっているので、
セッションが違うと認証を維持出来ないよ。

参考:Zend_Auth IDの永続性
http://framework.zend.com/manual/ja/zend.auth.introduction.html
0215nobodyさん2011/06/16(木) 20:51:38.65ID:???
>>214

ご指摘いただいた通り、モジュール間でのセッションの共有ができておりませんでした。
フロントコントローラの先頭に以下の1行を追記したところ、admin・default両モジュール間でセッションが共有できるようになりました。
> session_set_cookie_params (0 , '/', 'domain.tld');

ちなみにapplication.iniに
>phpSettings.session.cookie_domain = "domain.tld"
と書いてやってみましたが、こっちはうまくいきませんでした。
application.iniの方でも動作するまでやってみたいと思いますが取り急ぎ、ご報告まで。

本当に助かりました。
ありがとうございました。
0216nobodyさん2011/06/16(木) 20:53:50.81ID:???
※追記※

このケースではサブドメインでモジュールが分かれていました。
このことを先に書いておくべきでしたね。申し訳ありませんでした。
0217zfマニア2011/06/17(金) 00:14:33.17ID:???
今日鯖落ちしてたの知ってるか
0218nobodyさん2011/06/21(火) 13:48:32.80ID:???
今週末は毎月定例の Zend Framework Bug hunt day です。
今までずっと日本からの参加者がゼロまたは1名だけ、という状態ですが、
Zend Framework について一家言ある方はぜひ参加してみてください。
0219nobodyさん2011/06/21(火) 13:49:43.22ID:???
>>218
そのurl教えてください
0220nobodyさん2011/06/21(火) 14:48:19.94ID:zTIAULI/
日本語の本で、Zend Frameworkを使ってブログを作ろう、風の本はないでしょうか?
0221nobodyさん2011/06/21(火) 16:53:01.09ID:???
全部英語ですが、
今月のアナウンスはこちら。
http://devzone.zend.com/article/15563-Announcing-Junes-Zend-Framework-Bug-Hunt-Days

参加ガイダンスはこちら
http://framework.zend.com/wiki/display/ZFDEV/Monthly+Bug+Hunt+Days

1.x 系列で未解決の課題がこちら
http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=11385&sorter/field=issuekey&sorter/order=ASC

最近は カナダの Adam Lundrigan さんが頑張ってくれています。

コミッター用IRCがこちら
#zftalk.dev

本当は木曜日から開始ですが、だいたい金曜日の深夜から日曜にかけてにぎやかになります。
0222nobodyさん2011/06/21(火) 16:59:30.88ID:???
>>221
対応に感謝する
0223nobodyさん2011/06/21(火) 23:24:50.14ID:???
>>220
ZF徹底マスターのサンプルに簡易(?)ブログがあったような
0224nobodyさん2011/06/22(水) 00:22:31.74ID:???
バージョン古そうだけど大丈夫か?
0225nobodyさん2011/06/22(水) 23:03:25.40ID:02VI6IFU
XoopsCube、WordPress等のいくつかのCMSを見てきたのですが、ファイルサイズはZendFramework単体よりも小さいです。
独自のMVC構造を作った方がいいのでしょうが、大変なのでZFを使おうと思います。
その際、ZFの要らないコンポーネントを削除しても動作に影響は無いのでしょうか?
もし出来るなら、これは削除したらダメ、これは削除して使ってるというのがあれば教えていただけませんでしょうか?
0226nobodyさん2011/06/22(水) 23:07:07.08ID:???
別にZFは全てのライブラリをアップロードする必要ないんだよ
所詮ライブラリの集合体だから
MVCに使うならView,Controllerだけでおk
モデルをデータベースで管理するならDbも必要になる
0227nobodyさん2011/06/22(水) 23:08:43.20ID:???
容量が小さいのがいいならCodeIgniterでも使えば良い
俺は両方使い分けている
0228nobodyさん2011/06/23(木) 00:19:37.74ID:???
つか今のご時世にそんなに容量に縛られないといけない案件って大変だな。
前近代的。
0229nobodyさん2011/06/23(木) 03:18:23.45ID:???
レン鯖とかvps前提の儲からない案件なんだろう。よくあることだ。
データセンタに丸ごとさば置いちゃうよって提案すると確実に逃げられるしょぼい案件w

客にしてみればzf使うので数百メガ使います月額数万円ですって言われてもナットく出来ないだろうし。容量喰わずに住む方法無いの?って言われるのがをちw
手元のpcの数百ギガのハードディスク交換で数千円しか掛かってないのになんでそんなにぼったくられるんだって言われて涙目w
0230nobodyさん2011/06/23(木) 06:16:20.67ID:???
月500円の共用サーバですら10GB使えるご時世で
ZFの容量を気にしないといけない案件ってどんなだよ
0231nobodyさん2011/06/23(木) 07:17:38.50ID:???
数百メガ・・・?
0232nobodyさん2011/06/23(木) 08:17:38.71ID:???
>>229
別に実務経験あるふりする必要ないんだから
静かに見てるだけにしときなよ
0233nobodyさん2011/06/23(木) 09:20:46.13ID:???
小さいことはいいことだ
特にWeb系は
例えハードが進化したとしてもコードを出来るだけ小さくしよう、軽くしようと努力するのは当然
アクセスがデカくなればなるほど少しでも小さくしなければ
>>228-230こそ小さな案件しかしていないことが分かる
0234nobodyさん2011/06/23(木) 09:56:28.70ID:???
いや単にスペースを無駄に使いたくないケチなだけの人かもしれない
0235nobodyさん2011/06/23(木) 10:06:11.73ID:???
一例として、Zend_Locale_Data フォルダーの中身を削ると1メガバイト以上減るよ。
いろいろ削ってみたものを下記に置いてるので、試してみて

http://ramat.ram.ne.jp/
0236nobodyさん2011/06/23(木) 10:08:56.45ID:???
ZF使うから数百メガって何の冗談だよ
何使ったらZFより遥かに100MB単位で小さくなんの?
0237nobodyさん2011/06/23(木) 10:30:46.91ID:???
日本語
0238nobodyさん2011/06/23(木) 10:44:11.36ID:???
APCの制限だろJK
0239nobodyさん2011/06/23(木) 14:58:51.33ID:???
貧乏案件で食いつないでる香具師が釣れまくりなすれw
0240nobodyさん2011/06/24(金) 01:46:15.51ID:rVNWaX5H
顧客が気にするのはレスポンスタイムだろう
容量を聞いてくる顧客とか会ったこと無いわ
0241nobodyさん2011/06/25(土) 17:15:35.10ID:???
鯖の要件説明して何の疑問も持たない客しか相手にして来なかったのかw
なぜゼンドで作ってるのかすらり買いしてなさそうだなw
0242nobodyさん2011/06/30(木) 05:04:52.52ID:AvEAooUw
ちょっと恥ずかしい質問なんですが、zend_dbのfetchRowメソッドの返り値が
意図したデータがあったかどうかどうやって判定してますか?

$rtn = $db->fetchRow($query); だとして、、

自分は今、 if(is_array($rtn)) echo "該当データあり";
って感じにis_arrayで判定しています。
こんなので良いんでしょうか?
fetchAllの時もあわせて教えてもらえると助かります。お願いします
0243nobodyさん2011/06/30(木) 09:22:50.21ID:???
俺はこうしてる

$rows = $this->fetchAll($query);
if(!is_null($rows)) echo "該当データあり";
0244nobodyさん2011/06/30(木) 21:42:39.26ID:???
fetchするのはクエリ実行後だろ?
0245nobodyさん2011/06/30(木) 21:50:28.46ID:???
えっ
0246nobodyさん2011/07/02(土) 06:30:32.96ID:zLDecbT7
Zend_mail使っています。トランスポートの設定で、
$tr = new Zend_Mail_Transport_Smtp('server@example.com');とか
$tr = new Zend_Mail_Transport_Sendmail('-fapache@example.com');って設定がありますが、
上がsmtpサーバを指定してるのはわかりますが、下がわかりません
-fapacheの部分を何に変えても送信できてるんですが、下の引数は何を指定してるんですか?
0247nobodyさん2011/07/02(土) 10:29:03.05ID:???
>>246
envelope-fromの指定
0248nobodyさん2011/07/02(土) 10:35:16.84ID:???
http://framework.zend.com/manual/ja/zend.mail.introduction.html#zend.mail.introduction.sendmail

Return Path の指定。
0249nobodyさん2011/07/02(土) 11:15:24.89ID:???
サイトを構築するときによく使うクラスってViewとControllerとDBは三種の神器だと思いますが
それ以外にあなたが使うものってなんですか?
0250nobodyさん2011/07/02(土) 11:18:45.25ID:???
自分のアプリ用のオブジェクトかな
0251nobodyさん2011/07/02(土) 14:48:07.55ID:???
>>247,248
なるほど。zend以前の知識の問題ですね。すみませんでした
0252nobodyさん2011/07/02(土) 14:50:45.29ID:???
>>249
Cache, Log
0253nobodyさん2011/07/02(土) 15:18:26.45ID:???
>>249
ZFの中でよく使うクラスという質問?
0254nobodyさん2011/07/02(土) 16:22:44.17ID:???
Zend_Exceptionかな
直接は使わないけどね
0255nobodyさん2011/07/03(日) 16:28:15.22ID:EYOQv7h8
Zend_Filter_Word_UnderscoreToSeparator
Zend_Cloud_QueueService_Adapter_ZendQueue
0256nobodyさん2011/07/03(日) 21:51:49.81ID:???
Zend_Controller
Zend_Db
Zend_Cache
Zend_Log
Zend_Mail
Zend_Http_Client

よく使う順。
CacheとHttp_Clientは再発明するのがアホらしくなるくらい良くできてる。
0257nobodyさん2011/07/04(月) 06:47:38.56ID:???
Zend_Cache使ってる人、キャッシュレコード何に保存してる?memcached?
俺はZend_ConfigとZend_Sessionもよく使うなー
0258nobodyさん2011/07/04(月) 13:20:33.29ID:???
>>257
ちっこい案件ならfile

中規模以上は memchaced, sqlite
どっち使うかは対象の頻度見てチューニング
キャンペーンとかで山ほどアクセスありそうなら
最初からmemcachedとかそんな感じ
0259nobodyさん2011/07/04(月) 15:27:37.12ID:???
>>258
なるほどね〜
申し訳ないんだけど、参考までにmemcachedを使う規模のアクセスって
どの程度か教えてくれないですか
月間何万アクセス以上みたいな基準あるのかな、もちろんサーバの性能もあるだろうけど
0260nobodyさん2011/07/04(月) 15:39:19.17ID:???
150万アクセス
0261nobodyさん2011/07/04(月) 17:27:51.77ID:???
特に基準はなくて
memcachedサーバー立てる案件なら自然にって感じ
月間アクセス数より瞬間の方が気になるかな
イベント用の登録システムなんかだと
トータルでのアクセス数はたいしたことなくても
瞬間が恐ろしいことになったりするし

あとmemcachedは結構死ぬから
ものによってはsqlite -> memcachedって階層でキャッシュしてる

あんまりやりたくないけど
関数のキャッシュするのも楽なので嬉しい
0262nobodyさん2011/07/04(月) 20:02:38.88ID:???
>>261
>基準無し

そうなんですか
階層でキャッシュするというのがよくわかりません
factoryの段階で、sqliteとmemcachedの二通りを用意して、
save();がこけたら代替の方に保存する/引き出し時はその逆の処理ってことですか?
0263nobodyさん2011/07/04(月) 20:05:55.53ID:???
YES
0264nobodyさん2011/07/04(月) 20:21:16.38ID:???
引き出し時はその逆ってどういうこと?
代替から引き出すってこと?
0265nobodyさん2011/07/04(月) 20:34:02.57ID:???
そうなのか… 二通りキャッシュ用意するとその処理自体が重くなりそうだけど、
それでもやった方が良いってくらいの高負荷環境限定の処理ってことですよね
なるほど、いろいろ考えさせられるなぁ
0266nobodyさん2011/07/04(月) 20:35:56.77ID:???
memcachedて死ぬの?
ttserver使ってるで知らんかったわ
0267nobodyさん2011/07/05(火) 12:18:25.57ID:???
2段階で入れるのは念のためよ
もしmemcachedサーバーがこけてたらsqliteから読み込むだけ

生成がやたら重たくてキャッシュの効く処理で
しかも大量のリクエストがありそうな場合
キャッシュとしちゃmemcachedが一番だけど
memcachedは落ちることもあるので
フォローにsqlite使ってるって話

生成 -> sqlite と memcached にぶっこむ ってやって
memcachedでヒットしなかったり読み込み失敗したらsqliteで
sqliteでも駄目なら生成ってだけ
特に重たくないよ
0268nobodyさん2011/07/05(火) 14:24:55.38ID:7nMaxMXk
>>267
詳しい説明をどうもありがとう

キャッシュというのを考えたことがなく作ってきたんで、今の話凄く興味深いんだけど
関数(とかメソッド、クラス)をキャッシュと、ページ全体をキャッシュの使い分けはどうしたら良いのかな?

たとえばCDの紹介ページを考えると、曲目しか書いてないページならページ全体キャッシュでいいんだと思う。
(曲目なんて変わりようがないから)
でも、「ユーザのレビュー」や「このCDに興味のある人はこちらもおすすめリスト」が同ページに配置してる
構成だとどうしたら良いんでしょうか?
ページ全体をキャッシュするのは諦めて、CDの曲目を引き出す関数と「こちらもおすすめリスト」の関数の
2つをそれぞれ個別のキャッシュ化することになるんですか?

そうして考えると、mixiみたいなSNSや今どきのCMSの構成のサービスでページ全体キャッシュなんてありえるんでしょうか
0269nobodyさん2011/07/05(火) 15:20:19.35ID:???
ページキャッシュはページ単位でリアルタイム性を必要としない
例えばヘルプだとかFAQだとかトピックスだとかそういう用途に使う

と考えると使い所はそう多く無いように見えるけど
更新頻度にズレのある箇所はAjaxで取得すれば
9割がページキャッシュって事も可能
もちろんAjaxで取得するコンテンツの方も
関数だとかアウトプットだとかの断片的なキャッシュを使っておく

実態は断片的なキャッシュを行って組み合わせたのと大差無い計算量だけど
キャッシュ出来ない部分があってもjsonだので軽量なアウトプットで済むし
内容によっては要求そのものをせずに済むかもしれない
(レビューは「レビューを表示」ボタンが押されたら取得、とかで)

とにかく考慮するのは更新頻度と要求頻度で
CDの例で言えばユーザーレビューがどの程度更新されるのか
どの程度要求されるのかに応じて
どうキャッシュすべきかは全然変わってくる

毎秒更新される情報をキャッシュするのは
ミリ秒で要求が来る場合なんだろうけど
多分俺が関われる程度の機械性能じゃほぼ無意味

キャッシュでサーバーコスト削るのは楽しいよね
0270nobodyさん2011/07/05(火) 16:25:50.47ID:???
なるほどなるほど、凄く勉強になりました!
やっぱり今はサービス全体のベストエフォートを実現するにはajaxの機能を織り込んで設計しないと全然ダメですね!
jsやphpの本も言語ごとの「こんなことが出来る」って機能の説明だけじゃなくて
「サーバコスト対策」みたいなテーマを揚げて、言語やソフトを横断した本があれば良いのになぁ
>>269さんは何か参考にした本あるんですか?

と、いま考えたらcontrollerを携帯(ガラケー)と共有する場合ajax依存の設計は難しいですね
でもそういうのを考えるのも面白いですね
0271nobodyさん2011/07/05(火) 17:34:09.84ID:???
その辺の現場のノウハウは、文筆で飯喰ってるライタにはかけないだろうな。運用経験無いし。
0272nobodyさん2011/07/05(火) 17:50:23.50ID:???
いや書籍いっぱいあるんじゃないの?
システムの設計とか運用のだったら
多分そういう本にまだ意識が向いてないから
見つけてないだけじゃないのかな
Amazonで「システム 設計」とかやるだけでぼろぼろ出るし
俺は本苦手なのでほとんどWebです

スマートフォンはまだしも
携帯はせめてコントローラー分けておいた方が良いと思う
必要な最適化はかなり違うし
0273nobodyさん2011/07/05(火) 18:01:51.56ID:???
「サーバインフラを支える技術」とか、あの辺のシリーズに良いのがあるのかなー
でも大抵DBチューニングとかサーバ構成なんですよね

>携帯はせめてコントローラー分けておいた方が良いと思う

これは、そうですね。やっぱりまとめるのは無理がある… ありがとうございました
0274nobodyさん2011/07/05(火) 20:43:25.75ID:???
http://www.oreilly.co.jp/books/9784873113616/
新品は入手しにくいかもしれないけれど、オライリーの
「ハイパフォーマンスWebサイト――高速サイトを実現する14のルール」
はかなりためになるよ。

クライアントサイドの処理最適化とか、ファイルダウンロード順序とか。
0275nobodyさん2011/07/05(火) 21:04:46.31ID:???
ずっと買おうか買うまいか悩んでる本だ、買っちまうかな
zendと全然ズレてる話題続けて申し訳ないんだけど、
こないだmixiのアルバム機能のソース見てみたら凄かったわ
ページ全体の遷移なんてしてなくて、フォームの値だけを送信して
見た目の画面遷移はhtmlのなかにdisplay:none;で隠してるテンプレートを
jqueryで読み込んでシーンを切り替えてるのね。
バリデートも全部jqueryとajaxでやってるんじゃないかと…
使えるライブラリやコンポネントの数増やして満足とか問題外。
フロント側/サーバ側なんて区切りないもの、くじけそうになったw
0276nobodyさん2011/07/05(火) 21:28:06.32ID:???
何年前から来た人ですか?
0277nobodyさん2011/07/05(火) 21:51:05.77ID:???
いくらなんでも浦島過ぎると思う
さすがにbigpipeまでいくとやり過ぎだけど
体感速度の向上って必須になってるし

jquery.templateとか楽でいいんだけど
開発の管理的に面倒な部分も多いよね
素のデザイナも素のプログラマも
どんどん役立たずになってきてて
ほとんど兼任できる人間しか残らなくなってきてる
0278nobodyさん2011/07/05(火) 23:48:05.84ID:???
アフィうぜえ
0279nobodyさん2011/07/06(水) 00:15:35.40ID:???
>>278
どこ?w


0280nobodyさん2011/07/06(水) 17:57:15.87ID:???
Zend_Service_Amazonの結果をキャッシュしようとして、
↓のように書いたのですが、上手くいきません・・・

$frontendOptions = array(
'cached_entity' => new Zend_Service_Amazon(AMAZON_ACCESS_KEY_ID, 'JP', AMAZON_SECRET_ACCESS_KEY)
);
$backendOptions = array(
'cache_dir' => CACHE_DIR
);

$amazon = Zend_Cache::factory('Class', 'File', $frontendOptions, $backendOptions);

$results = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'PHP'));

2回目以降にアクセスするとエラーがでて止まってしまいます。
この場合、クラスキャッシュは使えないのでしょうか?
0281nobodyさん2011/07/06(水) 18:51:53.53ID:???
エラーの内容を書けよ
0282nobodyさん2011/07/06(水) 18:53:00.37ID:???
あとPHPのバージョンも
まさか5.2以下じゃないよね?
02832802011/07/06(水) 19:02:32.25ID:???
>>281
スミマセン;

Warning (2): DOMXPath::query() [function.DOMXPath-query]: Invalid XPath Context [〜/Zend/Service/Amazon/ResultSet.php, line 89]

いろいろvar_dumpしてみたのですが、原因がわかりません・・・

>>282
バージョンは5.2.4です。

オブジェクトを返すメソッドには対応してないんでしょうかね・・・?
itemLookupならちゃんと動いたんですが・・・
0284nobodyさん2011/07/06(水) 19:31:48.68ID:???
>>283
Invalid XPath Context でぐぐってみ。
zend.ze1_compatibility_mode=On にしてるとエラーが出るとかなんとか。
02852802011/07/06(水) 20:36:24.56ID:???
>>284
バグレポートみたいなのがヒットしましたが、いまいちわかりませんね;
1回目(キャッシュなし)だと大丈夫なんですが・・・
0286nobodyさん2011/07/06(水) 23:45:20.61ID:???
>>285
2回目以降ってのが謎だね・・・
フロントエンドの automatic_serialization を有効にしても駄目?
02872802011/07/07(木) 03:21:59.69ID:???
>>286
Zend_Cache_Frontend_Classのコンストラクタで自動的に
$this->setOption('automatic_serialization', true);
になってるみたいです。

メソッドの返り値がオブジェクトで、
さらにコンストラクタが呼ばれたりしているので、そこらへんがキャッシュしきれてないんでしょうかね?
0288nobodyさん2011/07/07(木) 03:46:17.62ID:???
>>287
挙動とエラー内容から推測すると、
キャッシュは出来てるけどunserializeに失敗してる感じだね・・・

試しに『DOMDocument serializable』でぐぐってみたら、
PHP組み込みのDOMDocumentはserializeableじゃない模様・・・(つA`

Zend_Service_Amazon_ResultSetもserializable実装されていないので、これが原因かも。
0289nobodyさん2011/07/07(木) 10:00:33.18ID:???
PHPで組み込みオブジェクトのシリアライズがサポートされたのは5.3以降だよ。
復帰に失敗してるんだから、2回目でエラーは正しいんじゃないの?
0290nobodyさん2011/07/07(木) 23:44:23.28ID:Q2g22JEq
Zend_Viewのescape()はどうやらENT_COMPATにてエスケープするようですが
ENT_QUOTESにしたい場合は、単に/View/Abstract.phpの906行め付近の
function escapeのreturn文をENT_QUOTESに書き換えればいいのでしょうか?
0291nobodyさん2011/07/08(金) 13:55:14.12ID:???
>>290
そうかもしれないけどラップした自前のクラス作っておいた方がいいんじゃない?
0292nobodyさん2011/07/08(金) 14:20:44.43ID:???
やっぱりスケルトンとして雛形作ってる?
0293nobodyさん2011/07/10(日) 16:38:13.67ID:???
横からすいません
Windows7 64pit とXamppの環境でZendFrameworkを使ってWebアプリを作っています
modrewriteを使用しています
ビュースクリプト内でアプリケーションのベースURLを得たいと思い、
ビュースクリプト内で
echo $this->baseUrl();と言うふうに
ヴューヘルパーのbaseUrl()メソッドを呼び出したのですが返り値が空です
$baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
この結果も空です
何がおかしいのか検討が付きません
何方か対策か代替案があったら教えてください。
0294nobodyさん2011/07/10(日) 17:23:54.44ID:???
バージョン書くのはそんなにいやか
0295nobodyさん2011/07/10(日) 17:54:38.36ID:???
PHPのバージョンは5.3
ZFのバーションは1.11.7です
0296nobodyさん2011/07/11(月) 18:06:00.05ID:???
$baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();

これが空なのは、baseUrlがRequestオブジェクトの処理後に生成されるからじゃねえの?

ってかControllerだろうがViewだろうがvar_dump()とかprint_r()に突っ込んでみたら?
0297nobodyさん2011/07/12(火) 16:53:52.49ID:???
ちょっと教えてください。

method="get"のフォームをサブミットしたときのURLはZFがデフォで取得できるパラメーターフォーマットには(当然)ならないんだけど、
method="get"でパラメーターを取得するためには、その都度Regexルーター作らないといけなんでしょうか?
0298nobodyさん2011/07/12(火) 18:43:36.73ID:???
$this->getRequest()->getQuery()で取得できるんだな・・・

しかし、、、
0299nobodyさん2011/07/12(火) 21:09:43.74ID:???
>>297
よくわからんけど、URLクエリの値($_GET)を取得したいなら>>298の方法が一般的。

Zend_Controller_Request_Http->getParam(); // パラメータ or $_POST or $_GETから取得
Zend_Controller_Request_Http->getQuery(); // $_GETから取得

0300nobodyさん2011/07/13(水) 09:56:08.29ID:???
ルーターのRegexで値を処理するのは
きれいなURLで値を取得をする場合

そもそもデフォルトのルーティングで
ある程度は取れるようになってる

query string の取得は他の人が書いてるように
getQuery(key) や getParam(key)でやるけど
getParam()はパラメーター全てからヒットするものを返すので
見通しも安全性も下がり気味だから避けてる
0301nobodyさん2011/07/13(水) 20:46:47.65ID:35EarspL
質問させてください
今以下のようにルーティング設定してるんですが、これだとアクションが増える度に設定を増やさなきゃ行けなくなります
効率的に書く方法はないでしょうか

;ユーザのhobby a
routes.user_hobby_a.route = "/user/:userName/hobby/aaa/*"
routes.user_hobby_a.defaults.module = "user"
routes.user_hobby_a.defaults.controller = "hobby"
routes.user_hobby_a.defaults.action = "aaa"
routes.user_hobby_a.reqs.userName = "\w+"
routes.user_hobby_a.type = "Zend_Controller_Router_Route"

;ユーザのhobby b
routes.user_hobby_b.route = "/user/:userName/hobby/bbb/*"
routes.user_hobby_b.defaults.module = "user"
routes.user_hobby_b.defaults.controller = "hobby"
routes.user_hobby_b.defaults.action = "bbb"
routes.user_hobby_b.reqs.userName = "\w+"
routes.user_hobby_b.type = "Zend_Controller_Router_Route"
■ このスレッドは過去ログ倉庫に格納されています