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/
0002nobodyさん
2011/02/11(金) 11:46:28ID:NxedcTROhttp://ameblo.jp/rusenu2/
0003nobodyさん
2011/02/11(金) 16:57:42ID:???ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1255175377
0004nobodyさん
2011/02/11(金) 19:03:42ID:???0005nobodyさん
2011/02/11(金) 20:58:23ID:???0006nobodyさん
2011/02/12(土) 09:57:51ID:???http://www.gediminasm.org/article/smarty-3-extension-for-zend-framework
0007nobodyさん
2011/02/12(土) 10:24:21ID:???0008nobodyさん
2011/02/12(土) 10:37:30ID:???0009nobodyさん
2011/02/14(月) 09:56:53ID:???0010nobodyさん
2011/02/14(月) 19:59:00ID:???ドキュメントルートにapplicationを作る場合
.htaccessにDeny from allを書いてapplicationに入れれば問題ない
0011nobodyさん
2011/02/16(水) 09:09:20ID:???FormにZend_Form_Element_CaptchaをaddElementsしてビュースクリプトに、
<?php echo $this->form->getElement('captcha')->render(); ?>
とすると問題なく表示されます。
しかし、キャプチャイメージだけレンダリングしようと、
<?php echo $this->form->getElement('captcha')->getCaptcha()->render(); ?>
とすると、画像が表示されません。
一つ前に生成したファイル名が指定されてしまっているようです。
今生成したキャプチャイメージにするにはどうしたらいいでしょうか?
0013nobodyさん
2011/02/16(水) 23:08:56ID:???ひょっとしてZFはオワコン?
0014nobodyさん
2011/02/17(木) 02:30:05ID:???insertやupdateで同じように実行したSQLを確認する方法ありませんか?
0015nobodyさん
2011/02/17(木) 02:40:00ID:???使ったことないし、テストもしてないんで適当だけど。
Captcha画像生成用のアクション用意してimgタグで表示させてみたら?
>>14
http://framework.zend.com/manual/ja/zend.db.profiler.html
FirebugとFirePHPの組み合わせがおすすめ、実行時間も取れるのですごく便利
0016nobodyさん
2011/02/17(木) 20:02:24ID:???0018nobodyさん
2011/02/18(金) 02:24:32ID:l3rqfUmy任意のセッションオブジェクト全体とかその中の特定の変数に有効期限持たせられるけど、
これってブラウザ閉じてもexpireは実行されるんだよね?
0019nobodyさん
2011/02/22(火) 09:24:21.92ID:???ちょっとZend_Xxxxx_Xxxxxとか打つのが手間がかかり、後、毎回打ち間違うのも避けたいので
ネットで検索しても出てこないような気がします
0020nobodyさん
2011/02/22(火) 10:43:45.59ID:???class fooController extends Zend_Controller_Action {
public function indexAction(){
$this->_helper->layout->assign( 'header',$this->view->render('header.phtml'));
$this->_helper->layout->assign( 'view_var','ああああ');
}
と、レイアウトとビュー変数を設定しているのですが、
header.phtmlの中で
<div><?php echo $this->layout()->view_var; ?></div>
としてもなにも表示されません。
var_dump()はnullです。
どのようにレイアウトスクリプトにビュー変数を渡せばいいのでしょうか?
0021nobodyさん
2011/02/22(火) 10:58:47.07ID:???勘違いしてました。解決しました。
0022nobodyさん
2011/02/22(火) 12:37:24.13ID:???あらかじめZend Frameworkのライブラリを解凍しておいて、
PHPプロジェクトを作成する際に、そのライブラリの場所をinclude path指定すればOK
(プロジェクト作成後にinclude path設定してもいい)
0023nobodyさん
2011/02/23(水) 14:48:11.97ID:Ql2fJWu6MySQLにレコードを登録するプログラムを組んでいます。
ブラウザからアクセスしてプログラムを実行すると
ちゃんとDBに登録されるプログラムを
コマンドラインで実行するとエラーが出てしまいます。
エラーには
SQLSTATE[HY000]: General error: 2053
と表示されます。
その他にも
Zend_Db_Statement_Pdo->fetchAll()
でエラーが発生しているかのように出ておりました。
エラーを解消するにはどの様にすればよろしいでしょうか。
よろしくお願い致します。
0024nobodyさん
2011/02/23(水) 16:05:34.25ID:???俺もそれ思って、Zend Studioの評価版をダウンロードしてテンプレート、コードアシスト部分だけエクスポートしようと思ったんだけど
どうやればいいのか分からなかった
設定欄には何も表示されないんで
誰かZend StudioからEclipseに入れる方法知りませんか?
>>22
ん?どういう事?
include pathってのが分からないんですが(PHPではなくEclipseのinclude pathですよね?)具体的にはどうするのですか?
0025nobodyさん
2011/02/23(水) 22:23:58.43ID:???PDTのバージョンは何?
PHPのプロジェクトを右クリックして、ビルドパス→ソースのリンクでZFが入っているパスを指定すれば補完されるようになるよ。
プロジェクト内にZFディレクトリが存在してるなら、そのディレクトリを右クリック→ビルドパス→ソースフォルダとして使用するを選択すればOK。
0027nobodyさん
2011/02/25(金) 01:45:29.75ID:???既存のEclipse環境があって、そこにPDT部分を統合したい、という話だったら使えない手だけれど、
そうじゃなかったら、
試用期限切れのままこっそり使う、という手もある。
0028nobodyさん
2011/02/25(金) 11:31:57.12ID:???笑w
アレって期限切れでも使用できるの?
PDTとの違いで、目立ったものは自分は感じられなかったんだけど
日本語化対応もいまいちだったし、Pleiades入れればいいのかもしれないけど、動作がおかしくなったりしたら怖いし
Subversiveとか、Aptanaとかも入れられるんですかね?
0029nobodyさん
2011/02/26(土) 22:05:02.28ID:???パスが通ってない。多分php.iniが見えてないのが原因なので
php -c [iniのパス]
とすれば大概いける。ダメなら環境変数で頑張る。
0030nobodyさん
2011/02/27(日) 00:15:52.13ID:???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:???■ このスレッドは過去ログ倉庫に格納されています