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/
0031nobodyさん
2011/02/27(日) 00:16:49.98ID:???0032nobodyさん
2011/02/27(日) 01:21:09.94ID:???あっ、PDTと同等になるんですか・・・
となると、ZFプロジェクトなんかが作成できなくなったり、ZF関数のコードアシストが無くなるんですね?
0033nobodyさん
2011/02/27(日) 07:09:51.45ID:???日本語はPleiadesじゃない方のやつがいいと思う。
0034nobodyさん
2011/02/27(日) 22:00:08.09ID:???0035nobodyさん
2011/02/28(月) 09:18:49.69ID:???世の中のPHP使ってるって人もPHP自体もたいして出来ないんじゃない?
0036nobodyさん
2011/02/28(月) 21:43:08.37ID:???perlで組むのは無理過ぎるからphpってだけ。フォーム投稿とかcgiレベルのphpが多いし。
db遣う以前のレベル。
0037nobodyさん
2011/02/28(月) 23:05:25.81ID:???0038nobodyさん
2011/02/28(月) 23:35:36.16ID:???使える人間が多いってだけで
別にperlが優れてるというわけじゃないでそ
0039nobodyさん
2011/03/03(木) 01:18:32.92ID:???0040nobodyさん
2011/03/03(木) 20:26:10.54ID:1KzlvY5tPHP Notice: Sorry, your PCRE extension does not support UTF8 which is needed for the I18N
core in /usr/lib/php/ZendFramework/library/Zend/Locale/Format.php on line 769
というエラーが出たんだけど、どう対処したら良いんでしょうか?
zend_mailの処理から発生したエラーのようなんだけど…
0041nobodyさん
2011/03/03(木) 20:30:28.44ID:???0042nobodyさん
2011/03/03(木) 20:36:24.08ID:1KzlvY5tsendメソッドの返り値から判別する方法とか、判別用のメソッドとかってない?
0043nobodyさん
2011/03/03(木) 20:41:31.02ID:???0044nobodyさん
2011/03/03(木) 20:41:51.45ID:???ありがとう。
やっぱりzendというよりPHPの方になんかインストールしたりして対応するしかないんだ?
うーん、やってみる。ありがとう
0045nobodyさん
2011/03/03(木) 23:32:22.64ID:???http://www.mycurse.net/tag/pcre/
0046nobodyさん
2011/03/03(木) 23:38:09.81ID:???おかげでログが消えて酷い目にあった
これZend_Logのバグだろ
0048nobodyさん
2011/03/04(金) 07:36:37.18ID:???追加モードでアトミックに書き込みできない場合は
ストリームを自分でロックしてからコンストラクタに渡せという設計じゃないの
と言うかウェブアプリでログファイルを排他ロックしたらパフォーマンス糞落ちるんじゃね?
0049nobodyさん
2011/03/04(金) 11:11:28.06ID:???しかし flock しないせいでログが消えたってどんな環境なんだ?
出力が混ざるとかいうならわかるんだが。
0050nobodyさん
2011/03/04(金) 16:41:13.23ID:???_metadataはどこから取れますか?
0051nobodyさん
2011/03/04(金) 16:56:39.24ID:???0052nobodyさん
2011/03/05(土) 15:36:44.44ID:???0053nobodyさん
2011/03/05(土) 19:56:41.77ID:???MVCでCodeIgniterのモデルみたいにファイルにデータを書いて利用したいんですが
この場合はどのようにやるのでしょうか?
今はコントローラにデータを書いてます
0054nobodyさん
2011/03/05(土) 21:31:17.38ID:???そこで$exception->getMessage()
ってするとエラーが発生したSQLが取得できます。
そこまではいいんですが、たとえばinsertでエラーが出ると、getMessageの内容が
INSERT INTO "hoge" ("col0", *"col1") VALUES (:col0, :col1)
とかになってて、「:col0」「:col1」に具体的にどんな値がバインドされてたかがわかりません。
ここまで取得する方法ありませんか?
getTraceして気合いで遡っていくしかない?
0055nobodyさん
2011/03/05(土) 21:41:42.18ID:???0057nobodyさん
2011/03/07(月) 10:09:28.12ID:e6LrE7ugfetchAll()を使うよりも
fetch()を使ったほうがパフォーマンスはよくなりますか?
fetchAll()はフレームワーク側で
fetch()を行数分繰り返して、配列にいれているようなイメージがあるので、
fetch()で取得した後に、自分でループ内で処理を行っていったほうが
配列を作成する処理が省略できてメモリの消費量も
減るのかなと思っています。
如何でしょうか?
0058nobodyさん
2011/03/07(月) 19:55:50.86ID:???0059nobodyさん
2011/03/08(火) 10:37:44.71ID:zCKyJOsB$s = new Zend_Session_Namespace('expireAll');
$s->a = 'apple';
$s->setExpirationSeconds(5, 'a'); // キー "a" だけは 5 秒で有効期限切れとなります
これは理解できるのですが、キー「a」に連想配列の形で値をセットして、
その配列のキー単位で期限設定は出来ないんでしょうか?
自分で以下のようにやって試してみたんですが、うまくいきません。
$s = new Zend_Session_Namespace('expireAll');
$s->a['g'] = 'green apple';
$s->a['r'] = 'red apple';
$s->setExpirationSeconds(1, "a['g']"); // キー "a['g']" だけは 1 秒で有効期限切れとなります
やり方がマズいのか、そもそも意図してるようなことは出来ないのか、どちらでしょうか?
どなたかご意見お願いします
また、上記の連想配列のキー単位で即時破棄というのはどうしたら良いんでしょうか?
よろしくお願いします
0060nobodyさん
2011/03/08(火) 10:41:39.48ID:???Zend_xmlみたいにあればいいんですけど・・・
0061nobodyさん
2011/03/08(火) 11:31:22.04ID:???ZF使う時点でphp5前提だと思うからsimpleなんちゃら使えばいいだろ?w
0062nobodyさん
2011/03/08(火) 13:26:36.25ID:???有効期限が設定できるのはあくまでキー単位。
別のnamespaceを作ってやればいいだけでは?
$apples = new Zend_Session_Namespace('apples');
$apples->green = 'green apple';
$apples->red = 'red apple';
$apples->setExpirationSeconds(5, 'green');
みたいな。
こっちの方がスマートじゃないかい?
006457
2011/03/08(火) 14:15:31.31ID:???100MBほど節約できました。
etchAll()を使わずにfetch()を使用する意外にも
メモリの節約やパフォーマンスの向上を図れる技法ってありますか?
データベースのインデックスの張り方とか意外で、
ZendFrameworkもしくはPHPで出来る方法として何かあれば
アドバイス頂きたいです。
SQLでは*は使用せずに
カラムを指定するといったことは行っています。
よろしくお願いします。
0065nobodyさん
2011/03/08(火) 14:21:19.98ID:???速度は?
0067nobodyさん
2011/03/08(火) 18:28:58.56ID:???特に連想配列を大量に使ってるとかなりメモリを食うので、出来るだけ連想配列を使わない。
というか、大きい配列のデータをなるべく持たない。
配列を作ってもなるべくこまめにその変数を破棄するようにすると減らせると思う。
0068nobodyさん
2011/03/08(火) 19:07:31.54ID:???そういう知識ってどこで得たの?
まさか全部自分で検証ってわけじゃないだろうし、自分は独学だから
職場の先輩からの知識の継承ってのがないんだよなぁ
PHP本なんて腐るほどあるけど、一通り作れるようになったら誰でもメモリやDB負荷の管理に
興味持つんだから、そういう要所をまとめて巻末に載せてくれたら良いのになぁ…
(zend全然関係なくて申し訳ない
0069nobodyさん
2011/03/08(火) 19:58:32.36ID:???仕事を通じて引っかかったところがあったので検証もしてみたけど、
「PHP パフォーマンスチューニング」でググれば他にも大量に出てくるからまずそこから調べた方がいい。
ちなみに俺もほとんど独学だし、先輩から教わった事なんて仕事として使うときの
エラー処理取り扱い方くらいしかない。
ただのTIPSやチューニング方法なんていちいち本に書く内容じゃないし。
こういう知識はググる、検証してみる、バグトラック見てみる、元のソース読んでみるしかない。
後者の方は時間のあるときにやってみると色々勉強になるよ。
0070nobodyさん
2011/03/08(火) 20:00:28.15ID:???0073nobodyさん
2011/03/08(火) 22:04:10.22ID:???のとおりにやると、
localhost/hoge/fuga
ってやったら勝手にHogeController::fugaActionが起動して、
"views/scripts/hoge/fuga.phtml"のテンプレートが表示されます。
特定のアクションだけテンプレートのディレクトリを変更したいんですができませんか?
コントローラ内で
$this->_helper->viewRenderer->setViewSuffix('html');ってやれば
"views/scripts/hoge/fuga.html"になります。
$this->render('foo');ってやれば
"views/scripts/hoge/foo.phtml"になります。
これを特定のアクションだけ
"views/scripts/bar/fuga.phtml"を表示させたいのです。
$this->render('../bar/fuga');ってやったら勝手に"-"に補正しやがって読めませんでした。
0074nobodyさん
2011/03/08(火) 23:23:27.36ID:???ああ、それね
専用のメソッドがあってそこで条件判断すればおk
>$this->_helper->viewRenderer->setViewSuffix('html');
について
俺はその情報は知らないからマニュアルのどのページに書いてあるのかurl張って教えて欲しい
教えてもらえるなら俺ももうちょっと詳しく教える
テイク&ギブでどうかな
0075nobodyさん
2011/03/08(火) 23:48:23.81ID:???$this->render('bar/fuga');でできたと思うが
0077nobodyさん
2011/03/09(水) 10:35:26.46ID:???007873
2011/03/11(金) 01:04:00.80ID:???script 'hoge/bar/fuga.phtml' not found in path (/**/application/views/scripts/)
こんなんなる。
この'hoge'が邪魔だった。
半分自己解決
http://framework.zend.com/manual/ja/zend.view.scripts.html
にあるsetViewScriptPathSpecで、
$this->_helper->viewRenderer->setViewScriptPathSpec(':action.:suffix')
ってやって':controller/'を消したら概ね想定通りになった。
ただこれ例外投げても継続するからパス変更後に例外出したらエラーが大変なことに。
例外発生後は継続させずにそのときだけ変更とかできないかなあ。
0079nobodyさん
2011/03/11(金) 09:44:23.59ID:???もっと簡単にできんのに
とりあえず俺74だから
0080nobodyさん
2011/03/11(金) 14:14:01.84ID:???cakeかsynfonyどちらかでweb制作会社がZFでサイト制作で使ってる程度しか見たことない
あるなら紹介してください
0081nobodyさん
2011/03/12(土) 07:00:13.43ID:???Cakeは糞だと思う。
0082nobodyさん
2011/03/12(土) 18:13:02.14ID:???Zendが作ってんのにね
008373
2011/03/16(水) 22:10:10.44ID:???where A AND (B OR C)
が作れない?
->where('`A` = ?', $a)
->where('(`B` = ?', $b)
->orWhere('`C` = ?)', $c)
0085nobodyさん
2011/03/17(木) 17:24:02.26ID:???0086nobodyさん
2011/03/17(木) 20:25:27.35ID:???0087nobodyさん
2011/03/17(木) 20:36:35.13ID:???0089sage
2011/03/20(日) 13:23:00.64ID:???http://ramat.ram.ne.jp/
それから、Pleiades に抵抗を感じる >>28 のために PDT 2.2.0 日本語化パックをおいとく。
被災者支援活動につかってちょ
0090nobodyさん
2011/03/20(日) 15:13:01.29ID:???ここのdeleteのところに
> 三番目の引数に配列の配列を提示すると、 値は自動的に引用符で囲まれてキーに入れられます。
> そしてこれらは条件として結合され、 AND 演算子で区切られます。
って書いてあるんだけど、実際に第三引数を入れても完全に無視される
メソッドも引数を二つしか受け取ってない
誰か報告よろ
0091nobodyさん
2011/03/20(日) 16:36:23.89ID:???0092nobodyさん
2011/03/20(日) 21:06:33.07ID:???どうしたらよいのでしょうか?
単にcontrollersのactionメソッド部分と、actionビューファイルを削除する
だけでよいのでしょうか。
それともzfproject.xmlを再構築するような処理が必要になるのでしょうか?
0093nobodyさん
2011/03/22(火) 13:08:01.70ID:???http://zend-framework-community.634137.n4.nabble.com/Keeping-zfproject-xml-up-to-date-with-Zend-Tool-td2526512.html
0094nobodyさん
2011/03/22(火) 21:16:54.18ID:???レスありがとうございます。
英語はよくわかりませんけど、
zfコマンドで作ったactionやviewを削除したら、zf
コマンドでzfproject.xmlを再構築する方法はない。
zf ver.2 ではその機能を実装するよきっと。
てな感じでしょう。
93様、ありがとうございました。
0095nobodyさん
2011/03/22(火) 22:43:11.53ID:???0096nobodyさん
2011/03/23(水) 04:10:06.43ID:???0097nobodyさん
2011/03/26(土) 15:01:52.93ID:???NetBeansを使ってみましたが、ZFのコマンドが簡単に
使えるようにサポートされていて、良さそうでした。
でも、ZFならZend本家のPDTが良さそうな気がしますし・・・
どちらがよいのでしょうか?
0098nobodyさん
2011/03/26(土) 15:09:29.94ID:???じゃそれ使えば良いだろw
0099sage
2011/03/26(土) 17:12:24.83ID:???つ Zend Studio
0100nobodyさん
2011/03/26(土) 18:05:40.29ID:???$front =Zend_Controller_Front::getInstance();
$front->setControllerDirectory( CONTROLLER_PATH );
$router=$front->getRouter();
$router->addRoute( 'my_router',
new Zend_Controller_Router_Route_Regex(
'mycontroller/(\w{1,25})',
array( 'controller' => 'mycontroller', 'action' => 'index' )
));
index.phpに上記のルーターを追加しました。
アクションコントローラーでは、
class MycontrollerController extends Zend_Controller_Action {
public function indexAction(){
/*
$this->getRequest()->getUserParam( 1 )がデータベースに登録されているか検証し、登録されていなければ例外を投げる
*/
〜〜〜〜〜〜〜〜〜〜〜〜〜〜
と、しています。
http://localhost/mycontroller/test/
でアクセスする場合、'test'がデータベースに登録されていれば問題ありません。
しかし、
http://localhost/mycontroller/index/test/
や、
http://localhost/mycontroller/index/test/aaaa
でアクセスした場合に例外を投げたいのです。
'my_router'ルーターを経由した/mycontroller/index/アクションへのアクセスか否かを判断できればいいと考えているのですが、どのように書けばいいのかわかりません。
お手数ですがご存知の方、ご指示をお願いします。
よろしくお願いします。
0101nobodyさん
2011/03/27(日) 00:03:25.15ID:???0102nobodyさん
2011/03/27(日) 11:48:52.26ID:???0103nobodyさん
2011/03/27(日) 12:44:03.04ID:???0104nobodyさん
2011/04/02(土) 22:45:15.46ID:???試しているのですが上手く変換されず困っています。
同じようにリソースファイルを使用してきちんと変換されている方はいますか?
ファイルへのパスはきちんと通っています。
ttp://blog3.logosware.com/archives/tag/zendframework
Znedのバージョンは1.11です。
よろしくお願いします。
0107nobodyさん
2011/04/05(火) 03:01:38.74ID:???'.;php\peer\;php\zend1.14\'のようにpeerを先に記載していたのですが、
こちらにzendが含まれ、先に読み込まれていた事が原因で新しいバージョンに
する事ができていませんでした。
ありがとう>>104 (´З`)チェッチュ
0108sage
2011/04/05(火) 11:31:30.25ID:5FZ9UmE+'php\zend1.14\;php\pear\;.'
のようにするといいと思うよ ;-)
0110sage
2011/04/05(火) 16:51:04.75ID:5FZ9UmE+http://framework.zend.com/manual/ja/performance.classloading.html
の
「現行ディレクトリは最後に定義するか、または定義しない」
0112nobodyさん
2011/04/06(水) 20:30:29.32ID:WtZWBRpOdefaultモジュール中で、エラー用のコントローラを作ろうとErrorController.phpを作り、ルーティングを
routes.default_error.route = "/error/*"
routes.default_error.defaults.controller = "error"
routes.default_error.defaults.action = "index"
routes.default_error.type = "Zend_Controller_Router_Route"
としたんですがエラーになりました。(http://example.com/error で表示すると思ったのに。)
※apacheエラーログで、
[Wed Apr 06 11:01:05 2011] [error] [client 192.168.0.3] File does not exist: /var/www/error などと言われます
原因がわからなかったので、ファイル名とルーティングをそれぞれ
ErrorxController.php
routes.default_error.route = "/errorx/*"
routes.default_error.defaults.controller = "errorx"
routes.default_error.defaults.action = "index"
routes.default_error.type = "Zend_Controller_Router_Route"
にしたところ正常にindexアクションの中身を表示しました(http://example.com/errorx)
どういう原因が考えられるでしょうか?
ErrorControllerというコントローラ名の重複は同じモジュール中にはありません。
(異なるモジュール中にはありますが、関係あるんでしょうか?)
上記のアパッチのエラーログの「File does not exist:/var/www/error」というのも、
このアプリ自体/var/www/example.com/の中で動いているのでありえないことで理由が理解できません。
すみません、ご意見お願いします
0113nobodyさん
2011/04/08(金) 05:28:10.73ID:MbleiVWqググると一つ出てくるんですが、あくまでそのブログを書いた人の考えたやり方で
標準というか、安心して使える実現法を知りたいです
0114nobodyさん
2011/04/08(金) 10:02:59.47ID:???0115nobodyさん
2011/04/08(金) 15:00:06.96ID:???書き方が悪かったです、すみません。標準と言うより定番です。
モジュールごとにエラーコントローラをわけるなんてあると便利に決まってる機能なのに
マニュアル見ても見つからなかったので、自分が知らないだけでZendFW利用者の間で
定番的によく使われてる方法があるなら知りたいなと
英語のFAQサイトでも見つけたけど、なんで機能に組み込んでないんだろう
0116nobodyさん
2011/04/08(金) 15:16:04.91ID:???やるなら1例としてモジュール名を元にsetErrorHandlerControllerでそれぞれのエラーコントローラを指定するとか
0118nobodyさん
2011/04/14(木) 18:49:46.04ID:???http://www.example.com/info.html?123
の123を取得したくて
$route =new Zend_Controller_Router_Route_Regex(
'info.html\?(\d+)',
array(
'controller' => 'info',
'action' => 'index'
)
);
とかいたのですがマッチしません。
なぜでしょうか?
0119nobodyさん
2011/04/14(木) 19:24:11.69ID:???0120nobodyさん
2011/04/14(木) 23:05:38.43ID:???すみません。
マッチしないという言い方が正しくありませんでした。
ディスパッチエラーになって/info/iindx/が表示されないのです。
なぜでしょうか?
0121nobodyさん
2011/04/14(木) 23:08:54.32ID:???0124nobodyさん
2011/04/15(金) 10:29:45.09ID:???関係ない箇所だけど
関係ない箇所だけど
0125nobodyさん
2011/04/17(日) 20:03:37.97ID:???するのは、よくないのでしょうか?
(ZFより先にIDEを導入するべき?)
0126nobodyさん
2011/04/17(日) 20:48:41.28ID:???でも入力補完とかリアルタイムの構文チェックに慣れると
普通のエディタには戻れなくなる
0127nobodyさん
2011/04/18(月) 18:04:20.46ID:???0128nobodyさん
2011/04/22(金) 21:27:19.03ID:V7g6SPUo・/authContorller.php
public function denyAction() {
Zend_Layout::getMvcInstance()->setLayout('message');
if ($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->getHelper('viewRenderer')->setNoRender();
$this->_helper->getHelper('layout')->disableLayout();
0129nobodyさん
2011/04/22(金) 21:30:49.02ID:V7g6SPUo$this->getResponse()->setBody(Zend_Json::encode($return));
} }
・/auth/deny.phtml
<div><?php echo $this->translator('auth_deny_g'); ?></div>
とあります
0130nobodyさん
2011/04/22(金) 21:32:42.49ID:???回答:ありますね
■ このスレッドは過去ログ倉庫に格納されています