トップページ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/
0320nobodyさん2011/08/06(土) 23:49:22.13ID:???
へぇ
0321nobodyさん2011/08/06(土) 23:51:01.42ID:???
ィヒ

0322nobodyさん2011/08/06(土) 23:52:19.79ID:???
>>319

お礼です。
これどうぞ!!!!!!!


http://www.exotiki.net/mjo/file/data/mai0717.jpg

0323nobodyさん2011/08/07(日) 00:12:02.06ID:???
>>319

間違えました。
こっちです!!!!!!

http://www.nicovideo.jp/watch/sm10175056

0324nobodyさん2011/08/08(月) 17:13:27.59ID:???
http://img.ak.impact-ad.jp/ic/yl/2011/08/yomiuri_news_maka_24-fda99453618cda179b3bda3cc8766ae532b90814.gif
0325nobodyさん2011/08/13(土) 16:32:41.44ID:???
ZendDBTableでCREAT FUNCTION でストアド関数を作ってそれを使う方法を御存知でしたら教えて下さい
具体的には
http://sushiduy.plesk3.freepgs.com/levenshtein.sql
この関数(文字列1が文字列2とどれだけ似ているかの値(リーベンシュタイン距離)を返す)を使いたいです
0326nobodyさん2011/08/13(土) 17:46:37.17ID:???
すいません自己解決しました
一応どうやったか書いておきます
クエリーかmyphpadminで>>325のストアド関数を登録して
コードでは
$select->where(" levenshtein_ratio(name, ? ) > 50",$str)
みたいに書いたら動きました
0327nobodyさん2011/08/13(土) 19:23:43.27ID:???
ZFぜんぜん関係ないね
0328nobodyさん2011/08/15(月) 00:09:29.74ID:???
>>327

0329nobodyさん2011/08/15(月) 00:15:16.24ID:???
>>328
0330nobodyさん2011/08/16(火) 16:20:51.47ID:jcHZicfg
質問なんですが、ルーティングで
http://module.hogehoge.com/ctrl/act/param1...
って感じにサブドメインにモジュール名を指定するパターンがありますが、
あれを使うと他のモジュールに移動する度にhttp://からの絶対パス指定しなきゃ
ダメなんですよね?

httpからのリンクさせることで、何かデメリットってありますか?
デメリットていうのは、zendの機能的なデメリットじゃなくてサイト運営上の
デメリットも含めてってことですが…
0331nobodyさん2011/08/17(水) 22:08:04.43ID:???
テスト環境を用意するために
環境に応じた絶対パスのリンクを生成する関数を作らないといけないかな。
デザイナーが対応できなくてトラブルの元になるかも。
0332nobodyさん2011/08/20(土) 01:50:03.15ID:???
Windows7とXamppの環境でZF 1.11を使っています
既存のコードが全てUTF-8で書かれたPC用サイトを携帯に対応させる作業をしています
最終的に出力される文字コードをUTF-8からSjisにするために以下のようなフィルターを書きました
class Zend_View_Filter_ConvertToSjis
{
public function filter($str)
{
return mb_convert_encoding($str, "Shift_JIS", "UTF-8");
}
}
これをコントローラー内で$this->view->addFilter('ConvertToSjis');と描いてフィルターに追加します
ビュースクリプトは以下のように記述しています
<?php echo $this->partial('mobile/header.phtml'); ?>
いんでっくす
<?php echo $this->partial('mobile/footer.phtml'); ?>

この状態で実行すると「いんでっくす」自体はSjisに変換されて出力されますが、header.phtml内は文字化けしたままです。
試しにfilter関数内でecho "ok";と記述してみると3回OKと表示されます。
コントローラー内のthis->view->addFilter('ConvertToSjis');を消して
header.phtml内で$this->addFilter('ConvertToSjis');と記述するとheader.phtml内の内容はきちんとSjisに変換され、「いんでっくす」は文字化けします
つまりpartialする度にフィルターが呼び出される事が問題のようなのですが、
これを防ぐ方法がわかりません。
何方か一回だけフィルターをかける方法か、代替案をご存知でしたら教えて下さい。
よろしくお願いします。
0333nobodyさん2011/08/20(土) 21:32:56.01ID:???
ZFぜんぜん関係ないね
0334nobodyさん2011/08/23(火) 00:38:59.46ID:???
>>331
ZFに限らず、一般的にはベースURLを取得する関数や変数を用意しておくものだよ・・・。

>>332
mb_detect_encodingもかまして、$strがSJIS以外の場合だけ変換するようにしてみな。
ViewよりResponse側でフィルタかます方が賢い気もするが。
0335nobodyさん2011/08/24(水) 01:50:04.19ID:???
>>334
貴重なヒントありがとうございます!
ZendResponseについて調べてたら
答えそのものを見つけました
http://slumbers99.blogspot.com/2010/09/zendframwork.html
ほぼこのページのまま、
initResponse内でモジュール名が”mobile”以外の時はreturnするようにして
今のところ問題なく動いています。
ありがとうございました。
0336nobodyさん2011/09/06(火) 18:10:56.40ID:???
Zend_Db_Table_Abstractのupdate()メソッドのSQLを見たいのですがどうすればいいですか?

0337nobodyさん2011/09/07(水) 19:05:51.13ID:qU8tqwKM
> 336

Zend_Db_Profilerを使う:
(ttp://framework.zend.com/manual/ja/zend.db.profiler.html)
もしくは、Zend_Db_Table_Abstract#updateメソッドの処理をみて、コアのコードに直接var_dump($sql)とか、しちゃう

0338nobodyさん2011/09/08(木) 10:34:14.61ID:???
>>337
トンクス
0339nobodyさん2011/09/19(月) 16:13:10.61ID:???
Zend_Testってのに興味があるのですが、これはどんなMVC構造でも機能するのでしょうか?
それともZend_Toolとかで指定のディレクトリ構造になっていないと動作しないものなのでしょうか?

皆さんはテスト環境をどのようにお作りになっていますでしょうか?
0340nobodyさん2011/09/24(土) 20:34:28.12ID:???
ZendFrameworkのCMSを見ると殆どがZend_Applicationを使用しています。
自分で当コンポーネントを調たのですがいまいち活用法、構造が分かりません。
フロントコントローラのindex.phpではなく、Bootstrap->run()により、install.php又はbootstrap.phpに記述された設定内容をメインに全体に適用しているのは分かりました。
オートローダーやルーターなど。
しかし、それ以外の利用する意図が分かりません。
これはどのような意図で使用したり、どんなメリットがあるのでしょうか?

公開ファイルindex.phpのサイズを小さくする利点はありそうですが、オートローダーなどはその時表示されるページ上では必要ないものまで呼ばれ、require_once()を個別に呼ぶよりもオーバーヘッドがありそうな気もするのですが。
0341nobodyさん2011/09/25(日) 21:01:29.52ID:???
>340

Zend_Applicationのメリットについては以下が参考になると思う:
- http://d.hatena.ne.jp/noopable/20090412/1239484575

Zend_Applicationは あくまでブートストラップとリソースをどういう単位で初期化し処理するかを決定するための平均的な解決方法のためのグルーオブジェクトなので、
これが気に入らなければ(自分のアプリにとって良い方法)、自分で初期化処理を書いてディスパッチさせれば良いだけです。

実際ほとんどのプロジェクトはindex.phpで初期化+Zend_Controller_FrontのMVCによるディスパッチで事足りると思う。
zf.phpの吐き出すスケルトンがZend_Applicationをベースにしているからこれが広まったのかも。
以前(ZF.1.1ぐらいのとき)は自分でイニシャライズの為のプラグインをFrontControllerに登録していたわけだし。

俺は複数アプリを単一ディレクトリで管理したり、設定による規約を構築したり、他社モジュールを簡単に結合したいから、Zend_Applicationを使っているって感じです。

>ZendFrameworkのCMSを見ると殆どがZend_Applicationを使用しています。
>自分で当コンポーネントを調たのですがいまいち活用法、構造が分かりません。

LiveCommerceというECサイトのオープンソースが参考になるかも知れない。

>オートローダーなどはその時表示されるページ上では必要ないものまで呼ばれ、
>require_once()を個別に呼ぶよりもオーバーヘッドがありそうな気もするのですが。

んーっとどうなんでしょうね、
ちゃんと測ったことないけど、あんまり変わんないような気がしないでもない。
0342nobodyさん2011/09/29(木) 11:25:34.71ID:???
Zend_Db_Table_Abstract->select()->from()で内部joinで複数のテーブルからselectしたい場合どうすればいいでしょうか?

from(
  array( 'tableA' => 'A', 'tableB' => 'B', 'tableC' => 'C' ),
  array( ほにゃらら ) 
)
とやってもだめでした。

0343nobodyさん2011/09/29(木) 14:06:33.80ID:???
>>342
http://framework.zend.com/manual/ja/zend.db.select.html
0344nobodyさん2011/09/29(木) 14:43:38.37ID:???
>>343
http://www.di-ve.jp/image/category_description/data/in081219_3.jpg

0345nobodyさん2011/09/29(木) 16:16:06.77ID:???
>>342
$table
->select()
->from("table_a")
->joinLeft("table_b", "table_a.id = table_b.id")
->joinLeft("table_c", "table_a.id = table_c.id");
0346nobodyさん2011/09/30(金) 08:27:43.23ID:???
あとjoinしたテーブルのフィールドは必要最低限を
出来るだけ列挙した方が良い。プレフィックスがつかずに
あがってくるから喧騒配列内で同名のフィールドは
ガンガン上書きされる。
0347nobodyさん2011/09/30(金) 08:28:31.59ID:???
喧騒配列 → 連想配列
0348nobodyさん2011/09/30(金) 21:06:03.55ID:???
FETCH MODE変えてPrefix付きで取得とか出来たらええのにね。
0349nobodyさん2011/10/05(水) 13:06:02.61ID:???
ZendToolで作成したプロジェクト、そのままで普通に動きます?
ZF1.11.0でlibraryにZendコンポーネントのシンボリックリンクは張ったのですが、/public/error/errorなど、/public/index/index以外のURIに行くと全部NotFoundになるのですが
勿論moduleやcontrollerとかは全部作成しています
デフォルト以外で何か設定することがあるのでしょうか?
0350nobodyさん2011/10/06(木) 22:55:25.82ID:???
mod_rewriteの設定ができてないんじゃないの
0351nobodyさん2011/10/07(金) 08:32:27.06ID:???
すでに設定済みかもしれないが、デフォだとAPPLICATION_ENVがproductionになるので、htaccessとかで開発モードにしてあげるといいかも
0352nobodyさん2011/10/07(金) 14:20:12.80ID:???
paginatorをちょっと利用してみたのですが、なかなかだと思いました。
これって、2chのような最新50とか前100とかできないですよね?
03533522011/10/07(金) 14:22:04.64ID:???
DbSelectを利用しています。2chのような最新50
前次ってこれは自分で作らないと難しいですよね?
0354nobodyさん2011/10/07(金) 20:13:15.45ID:AMyCTNX/
皆さんの中でSmarty3、ZF1.11系を連携して上手くいっている方いますでしょうか?
特にZend_Applicationの_initView()でなのですが、自分はViewRenderer.phpの警告やら、パスを認識しないやらで
全然ダメなのですが・・・
0355nobodyさん2011/10/08(土) 00:06:49.44ID:???
>>354
Zend_ApplicationとZend_Viewは使わず、
Controller側で必要なタイミングでSmartyを読み込むようにしてるわ。

特に警告も不具合もでてないよ。
0356nobodyさん2011/10/09(日) 03:49:47.95ID:XVn6S9+Z
横からすいません。
ZFでZend_View使わずにSmarty等のテンプレートエンジンを使うメリットってなんですか?
PHPコードが分からないデザイナ向けと言っても
Smartyの独自タグを理解する方が大変な気がしますがそうでもないんですかね?
0357nobodyさん2011/10/09(日) 04:44:04.34ID:???
以前からsmartyで運用した経験が社内にある場合、
Smartyを使う方がコストが安いかもしれない
誰もsmarty使った事ないのにzfでsmartyとかかなり無駄が多いと思うな
0358nobodyさん2011/10/09(日) 17:58:38.36ID:???
ZF導入時の学習コストを減らすために、Viewは既存のSmartyを採用した。
後々Zend_Viewも検討してみたが、乗り換えるメリットが見つからなかった。
(同等の機能はSmartyで実装できていた)

他社と組む場合にSmartyでやりますの一言で意思疎通出来るのも楽だし、
テンプレートエンジンが切り分けられていれば、
デザイナのレベルを考慮せず別フレームワークを試せるのもステキ。

>>356
>PHPコードが分からないデザイナ向けと言っても
>Smartyの独自タグを理解する方が大変な気がしますがそうでもないんですかね?
PHPコードがかけても、Zend_Viewの知識が無いとテンプレート組めない。
PHPコードがかけてしまう為、人によってコード品質がバラつくし、システム側にも影響がでる。

Smartyはタグの簡略化と、セキュリティのサンドボックス化がメリットかな。
上にも書いたように、フレームワークの構文に依存しないってのもでかい。
0359nobodyさん2011/10/09(日) 19:13:52.38ID:s8jfJMra
ZendFramework1.11.11とSmarty3.0.9をZFのマニュアル通りに連携させたのですが、
$this->view->foo = 'hoge';

$this->view->assign('foo', 'hoge');
等をAction内に記述し、テンプレート内で
{$foo}とすれば'hoge'が出力されます
{foreach $var as $valur}等も使用できます
しかし、{html_radios}等が
'Invalid controller specified (error)'というエラーで
/Controller/Plugin/Broker.php内などで生じるようです
どのようにすればいいのでしょうか?
また、ZFと連携した際にこれらのSmartyメソッドは使用できなくなるのでしょうか?
0360nobodyさん2011/10/09(日) 20:40:24.82ID:???
>>359
それは多分、

・Smartyは正常に動いている
・Smartyの構文にミスがあり、PHPエラーが発生している
・ZendFWがエラーを感知して、ErrorControllerを呼ぼうとしている
・しかしErrorControllerが無い。

という状況だと思う。

エラーハンドラプラグインを切るか、
ErrorControllerを作ってエラー情報をdumpするか、
すればいいよ。

0361nobodyさん2011/10/11(火) 00:02:22.91ID:???
ていうか、キョウビSmartyタグとかちょっとしたPHPサイトくらい
書けないと、少々の腕前くらいのデザイナじゃおよびじゃないだろ。
0362nobodyさん2011/10/11(火) 21:48:09.53ID:???
ZendFrameworkを少し使ってみて思うのですが、/module/controller/actionというURIの構造は分かるのですが、
もう少し階層を深くするという場合にはどのようにすればいいのでしょうか?
例えば/module/controller/action/user/role/adminとかいう風にする場合です
ルータ設定を駆使すればいいのかもしれませんが、ちょっと自分にはどのようにして実装すればいいのか見当がつきません
0363nobodyさん2011/10/12(水) 01:06:01.09ID:???
ルータを設定してuser以下がactionのパラメータとして渡るようにすればいい
>>301-302や↓も参考に。
http://codezine.jp/article/detail/2226
0364nobodyさん2011/10/14(金) 17:45:34.30ID:+/AP5o7r
version1.11.10を使っていて、これまで正常に動いていたのに突然エラーがでるようになりました
簡単に言うと、session_start()するとPDOエラーが発生しているようです

エラーの詳細は以下の通りです
PHP Fatal error: Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDOStatement
instances' in /usr/lib/php/ZendFramework/library/Zend/Session.php:469\nStack trace:\n#0 [internal function]:
PDOStatement->__wakeup()\n#1 /usr/lib/php/ZendFramework/library/Zend/Session.php(469): session_start()\n#2
/usr/lib/php/ZendFramework/library/Zend/Session/Namespace.php(143): Zend_Session::start(true)\n#3
/var/www/application/plugin/AuthPlugin.class.php(32): Zend_Session_Namespace->__construct('admin_myApp')\n#4
/var/www/html/index.php(20): AuthPlugin->__construct()\n#5 {main}\n thrown in /usr/lib/php/ZendFramework/
library/Zend/Session.php on line 469

何が原因なんでしょうか?
処理の流れとしてindex.php(フロントコントローラ)内でAuthPlugin(認証状況チェックのプラグイン)を定義していて
そのAuthPluginの中で new Zend_Session_Namespace('admin');してあり、そこから
Session.php(469行目)のsession_start()のエラーにつながってるようです
念のためテストとしてindex.phpの中で直接session_start();しても同様のエラーがでました

ググっても有用な記事が見つからなかったのですが、どのように考えたらいいんでしょうか?
ご意見よろしくお願いします
0365nobodyさん2011/10/14(金) 23:41:33.81ID:???
ZFでMVCとか大規模じゃ厳しいな
0366nobodyさん2011/10/14(金) 23:58:11.98ID:???
>>364
You cannot serialize or unserialize PDOStatement
instances

って書いてあるから、
sessionデータの中にPDOStatementが入っちゃっていて、
開始時にそれを復元出来ずにエラーになってるんじゃね?

一度セッションデータを破棄して、まっさらな状態で試してみ。
0367nobodyさん2011/10/15(土) 02:18:06.69ID:pl58b8lQ
フジテレビデモ
花王デモ
要チェック
0368nobodyさん2011/10/15(土) 11:18:16.97ID:???
>>365
当然だろ。LLなんて結局インタプリタだから規模が大きくなればなるほど
適切に事前読み込み量調整してやんないと遺憾しな。
それに潜在バグ埋もれまくり。

まぁRoRとも一定の距離を置いてるから JavaっぽいMVCって
こんなですよっつー紹介サイトにはちょうどいいな。
0369nobodyさん2011/10/15(土) 15:19:30.63ID:???
そもそもphpが...
0370nobodyさん2011/10/15(土) 15:29:23.41ID:???
>>366
ありがとう、解決しました
0371nobodyさん2011/10/15(土) 17:23:03.47ID:???
質問させてください。
Zend_Application使用下でログを取る際に、エラーを発生させたページも書き残したいと思いました。
そこでBootstrap.phpの_initLog()にてZend_Log_Writer_Dbを使いsetEventItem()の第2引数に$_SERVER['REMOTEADDR']を入れたら、~/public/index.phpしか表示されません。
では$_SERVER['HTTP_REFERER']はとなると勿論そのページを直接開くとNULLでダメです。
0372nobodyさん2011/10/15(土) 17:26:16.10ID:???
$this->bootstrap('FrontController');
$front = $this->getResource('FrontController');
$req = $front->getRequest();
$current = $req->getModuleName().'/'.$req->getControllerName().'/'.$req->getActionName();
としてもダメでした。
DBログに現在のURI、又はカラム別にaction、controller等を入れるにはどのようにすればいいのでしょうか?
0373nobodyさん2011/10/15(土) 20:03:11.50ID:???
$_SERVER['REQUEST_URI']でいいんじゃなイカ
0374nobodyさん2011/10/16(日) 11:26:50.99ID:TG2KkEB6
Zend_sessionで名前空間($sess_ns)を作って、その後その名前空間中で設定した
複数のセッション($sess_ns->aaa, $sess_ns->bbb, …)をまとめてクリアしたいとき
名前空間ごと削除すればOKなんですよね?
unset($sess_ns); で良いんでしょうか?
0375nobodyさん2011/10/17(月) 13:51:58.64ID:???
_redirectと_forwardの使い分けを教えてください
データベース登録時にentryActionからentry.phtmlから<form action="~/insert">でinsertActionに飛ばして、
そこでデータベース登録処理を行い、リクエスト情報を引き継がせる為に_forward('entry')でPostパラメータを渡しました
ブラウザ上ではentry.phtmlの内容が表示されて良かったと思ったのですが、ブラウザの更新ボタンを押すと同じ内容が重複登録されていました
これではまずいと思ったのですが、具体的には_redirectと_forwardの使い分けはどのようにされていますでしょうか?
特に順次登録していくデータベースの場合はどのようにされていますでしょうか?
0376nobodyさん2011/10/17(月) 20:05:24.48ID:???
>>375
内部的にリダイレクト ・・・ _forward
ブラウザ側でリダイレクト ・・・ _redirect

単純な画面更新による重複対策なら後者を使う。

順次登録の意味がよくわからんが、
複数画面にまたがるフォームって事なら、普通はセッションを使う。
0377sage2011/10/24(月) 20:34:32.99ID:???
Zend_Aclって皆さん使ってます?
権限とかDBに入れて、if()文で仕分け、有料会員はUPDATE・・・
ってのが普通だと思うのですが、
DB接続のコストがかからない、
1ページ中にユーザによって見せていいコンテンツと見せてはいけないコンテンツがある、
同じく書き込みできるユーザとの区別
とかメリットがあると思うのですが、
Zend_Aclを使った方がいいメリットというのはこれら以外にどんな場合でしょうか?
0378nobodyさん2011/10/24(月) 23:05:29.81ID:???
その仕組みのベースを一から作らなくていい。
DBと連動させて抽象的なAclとしても使える。
Zend_Controller_Actionを継承したクラスに仕組みを追加しておいて
Action単位で制御できるなどなど
0379nobodyさん2011/10/25(火) 07:30:17.23ID:???
上でLiveCommerceの名前が挙がってるけど
他にZFの勉強になりそうなOSSってある?
0380nobodyさん2011/10/25(火) 08:44:55.21ID:???
Aclは使って無いな・・・使えないとは言わないが・・・
そのままじゃ使えないケースが多くて、

無理矢理AuthとAclを組み合わせるなら、
自前で両方実装してしまった方が遙かに使いやすい。
0381nobodyさん2011/10/26(水) 01:07:32.88ID:???
ま、Zend自体「別に使わんでもええしな」の集まりだしな・・・。

つーか、最近のSQL抽象化はだんだん邪魔に感じてきたな。
普通にSQL書いてすんなり通るのに抽象化させてバグったり
s2jdbcみたいなのならまだいいが、結局DBリファクタしたら
そこらじゅうコード書き換えることになるし・・・。
0382nobodyさん2011/10/26(水) 04:13:50.61ID:???
KVSを筆頭にそもそもRDB自体が見直され始めてるからな・・・
個人的にはZend_Dbレベルの抽象化が丁度いいわ。

ZendFWは全機能使おうとすると糞重いので、
使いやすい部分だけ切り出すのがベストやね。

Controller系はもう少し単純軽量なのに置換えたい。
0383nobodyさん2011/10/27(木) 21:10:57.53ID:???
ちょうどいい流れになったので書かせていただきます

自分がZFで使用しているコンポーネントは
Auth、Application、Cache、Config、Controller、Db、Http、Layout、
Mail、Log、Loader、Registry、Session、View(自分はSmarty)
こんなものなのですが、
「このコンポーネントはバグがあったり、処理速度が遅いから使わない方がいい」、
「それ使う位ならこのライブラリのこれを使った方がいい」、
「このコンポーネントはこういう使い方がお勧めなんで使った方がいい」
ってのがありましたらアドバイス頂きたいのですが
0384nobodyさん2011/10/28(金) 06:31:15.89ID:???
Auth ・・・ 出来る事に対して重い。自作でいい。
Application ・・・ 思想はわかるが、これも自分で組む方が早くて軽い気がする。
Cache ・・・ 有用。必須。
Config ・・・ ケースバイケース
Controller ・・・ FrontからDispatchまでの流れが少々重い。
Db ・・・ 高機能PDOという認識。Zend_Db_Table程度の抽象化は丁度良い。
Http ・・・ 高機能だよね。
Layout ・・・ 使わない。
Mail ・・・ 使ってるけど、あまり優位性は無い。
Log  ・・・ 汎用性故に少々使いにくい。
Loader ・・・ AutoLoaderだけつかってる。
Registry ・・・ つかわない。独自クラス使ってる。
Session ・・・ 便利だけど、ちょっと重い気もする。
View ・・・ 使わない。俺もSmarty.
0385nobodyさん2011/10/28(金) 17:18:53.56ID:???
Applicationは最初無駄な学習コストだと思ってたけど、結構楽で便利だけどね
殆どのCMSは使ってるし
まぁ、重いかどうかは良く分からない
勝手にAutoloadしてくれるのでいいかなと思ってる
0386nobodyさん2011/10/28(金) 21:59:27.07ID:???
>379

Magento
, TomatoCMS
0387nobodyさん2011/10/29(土) 20:31:21.12ID:???
Zend_Auth重い?
ソースコード見てみたけど特に複雑でもなく、重そうな処理もパッと見なさそうだけど
代わりにどんな実装してるの?
まずログインフォーム時にデータベースに問い合わせて、
セッションやらクッキーにAuth=OKとかしてページ毎に確認するとか?
まぁ、Zend_Authもデフォルトでセッションに格納してるけどね

まぁアプリケーション全体に認証を適用するにはPluginに登録して・・・ってなるのでそこは少し重くはなるだろうけど、
ページ毎に読み込み処理をする時点でそう処理速度が変わるのかな?
0388nobodyさん2011/10/30(日) 05:36:57.17ID:e2iBYRcU
自分で実装した方が早いのは当たり前
フレームワークの利点はチームで作業する時に学習コストが低くなること
アプリケーション毎にプログラマが独自実装(笑)してたらメンテが大変だろ
0389nobodyさん2011/10/30(日) 11:47:54.69ID:???
ZendFWは単体で使えるもの(Cache,Db,Config,Http,Session)は便利で良いが、
ほとんどのクラスは自前クラスでラップしてやらないと使い勝手が微妙。
前にも言われていたが、フレームワークを作る為のフレームワークって言葉がシックリくる。


バージョンアップ重ねる毎に、メモリ負荷が重くなってきてるのが怖い。
0390nobodyさん2011/10/30(日) 20:05:08.12ID:???
ZFって、コンポーネント増えてきてますけど、これって単純にZend_Aclとか使わないものを
ディレクトリから削除したらまずいんでしょうか?
Viewヘルパーとか結構複雑にからんできているのでエラーになるのかな、と思ったり
でもライブラリを少しでも軽くしたいのですが

あと、自分はFullしかダウンロードしたことないのですが、Minimalとはどう違うのでしょうか?
単純にコメントや空白などが削除されただけとかなのでしょうか?

0391nobodyさん2011/10/30(日) 21:04:03.95ID:???
>>390
試しに小物アプリ想定して、要るものだけパス通してみなよ
いらないモジュール消すのは可能だけど、何が何に依存してるのか洗い出すのは面倒、というか無意味な作業だと感じるかと
0392nobodyさん2011/10/31(月) 03:16:44.55ID:???
>>390
>ZFって、コンポーネント増えてきてますけど、これって単純にZend_Aclとか使わないものを
>ディレクトリから削除したらまずいんでしょうか?

ドキュメントの以下に依存性が書いてある。
ファイル自体は削除してしまっても問題無いが、
ディスクスペースが数MB軽くなるだけなので、普通は消さない。

- Zend Framework の依存性
http://framework.zend.com/manual/ja/requirements.introduction.html


>あと、自分はFullしかダウンロードしたことないのですが、Minimalとはどう違うのでしょうか?
ダウンロードページの説明ヨメ。
http://framework.zend.com/download/current/

- Full
Contains Zend Framework, Dojo Toolkit, all demos, and all tests. Start here if you don't have a preference.

- Minimal
Contains only the components in the Zend Framework Standard Library.
0393nobodyさん2011/10/31(月) 16:27:00.66ID:???
Auth, Cache, Config, Date, Db, Filter, Form, Http, Mail, Loader, Session は使うね。

Config 拡張して使ってる
Date 抽象化目的で使ってる。便利な時もあるけどオプションやら使い方覚えるのがめんどくさ
Form 遅いけどまあまあ便利。Config経由で使ってる

妙にややこしいところは嫌だな。
Zend_Form_Element_Fileとかなんなのあれ。
Zend_Fileと分ける必要あるの?
03943902011/10/31(月) 17:48:31.42ID:???
Zend_Application使ってると、Zend_Lorder使うことになるんで、あんまコンポーネントを大量に読み込ませたくないなぁと思いまして
アレッ?
そう言えばAutoloaderって先にClassを読み込んでるんですよね?
読み込み時になって読み込むんじゃないですよね?
0395nobodyさん2011/10/31(月) 23:41:20.30ID:???
>>393
単にHTMLってかformタグ内の抽象化。
慣れてくれば案外使える。使えるってかZend教団、
Zend護送船団なWEBシステム作るんなら、struts1の
form beanをPHPで表現したらこんな感じになりました
って感じ。viewとの相性もいいからな。
似通った画面が多いシステムだと、結構威力を発揮する。

ただし、忘れるな。お前が使ってる言語は"PHP"ってことをな。
0396nobodyさん2011/10/31(月) 23:45:06.94ID:???
あ、すまんZend_Form_Element_Fileの話か。忘れて呉。
0397nobodyさん2011/11/01(火) 14:44:23.42ID:???
>>394
Autoloaderは必要な時に読込みをする。先読みはしない。
0398nobodyさん2011/11/03(木) 13:39:39.11ID:???
>>397
じゃぁライブラリに大量にコンポーネントがあってもさほど関係はないという事ですね
0399nobodyさん2011/11/04(金) 23:24:33.19ID:???
最近apacheのempire-dbとか言うのが目に止まって
クラス図みて、ちょっと使ってみっかと思って
サンプルみたらそのソースがZend_Dbそっくりの
抽象化で唖然とした。

やっぱこの手が流行なんかなぁ・・・。俺の理想は
ibatis→mybatis、PHPだとphpdaoあたりなんだけど。
0400nobodyさん2011/11/05(土) 23:38:07.90ID:???
>>399
流行というか、低レベルラッパーとしてのリファレンス的な実装だろうね。

phpdaoは使った事ないけど、Zend_Db_Tableじゃダメなの?
0401nobodyさん2011/11/07(月) 23:38:13.33ID:???
DB設計リファクタで結局entityソース触るなら
抽象化の意味があんのかな?と思う。

それにほとんどの場合、AUTO_INCREMENTとか
シーケンス使ってる弊害でDB変更したら、ソース
触るし。まぁその部分を設計時にちゃんと抽象化
していないからそうなるんだけど。
0402nobodyさん2011/11/08(火) 12:47:28.62ID:???
言ってる事がよくわからないけど、

抽象化するメリットがあるか無いかを設計段階で判断して、
導入するかしないか決めればいいだけでは・・・

0403nobodyさん2011/11/09(水) 00:13:55.82ID:???
INSERT IGNOREをZend_Db_Tableでどうしても使いたいのだけど
何かいい方法はありませんかね?
0404nobodyさん2011/11/09(水) 00:40:03.92ID:???
いい方法と言われても、
どうしても使いたいなら継承クラス作って実装するなりすれば?
0405nobodyさん2011/11/09(水) 01:10:13.74ID:???
君のが分からない気がする・・・。
君の言う判断行為はほとんどの場合、実績の有無、
上流担当者の好み、会社の方針で決まる事象に対してで、
>>401 はこのタイプの実装方法で開発効率とか
保守性に寄与すんのかなと言ってると思うのだが?
04064052011/11/09(水) 01:10:55.08ID:???
>>402
0407nobodyさん2011/11/09(水) 01:31:17.57ID:???
本人じゃなきゃとんだお節介エスパーやな
0408nobodyさん2011/11/09(水) 02:35:04.06ID:???
>>405
>>401 はこのタイプの実装方法で開発効率とか
>保守性に寄与すんのかなと言ってると思うのだが?

その点に関しては、少なくとも俺は恩恵を受けてるから何とも。
ただ全てに必要かと言われればわからない。
ケースバイケースに判断して導入すればよし。


0409nobodyさん2011/11/09(水) 08:21:50.96ID:yE+sRBhE
非常に恥ずかしい質問なんですが
application/inc/hoge.inc.phpがあって、各コントローラ.phpの中で
require_once "inc/hoge.inc.php"; としてそのファイルを読み込めてたんだけど
php.iniや.htaccessを見たらapplicationディレクトリがinclude_pathに指定されてませんでした
なんで読み込めてたんでしょうか?
zend自体がそういう仕様だったのかな
0410nobodyさん2011/11/09(水) 16:39:04.59ID:???
>>409
PHPが実行されているパスが application/ だったんじゃね?
0411nobodyさん2011/11/09(水) 19:14:24.82ID:ZgH5UlUG

クッキー非対応の携帯電話からのアクセスについて質問です。

・bootstrapのプラグイン(Zend_Controller_Plugin_Abstract)のdispatchhLoopStartupにて、
 useragentでPCと携帯とスマートフォンの3種に区別しています。

・bootstrapのプラグイン(Zend_Controller_Plugin_Abstract)のpreDispatchにて、
 権限のチェック(DBにてmoduleとcontrollerとactionからresourceがあるか否か)をしています。
 権限がない場合は、ログインフォームへredirectしています。

・bootstrapのプラグイン(Zend_Controller_Plugin_Abstract)のpreDispathcにて、
 携帯の場合は、use_trans_id=1にして、URLにセッションIDを付与してます
 ※それ以外のPCとスマートフォンの場合は、use_trans_id=0で、セッションクッキーを利用。

携帯からのアクセスの場合、フォームはhiddenのセッションID、直リンクはURLにセッションID、
が付与されていて正常動作しているのですが、サイト内でセッションIDの維持ができず、どう対処しようかと悩んでいます。

やりたいことは、
携帯からのアクセスの場合、GETやPOSTのセッションIDからgetParamsでユーザIDやログイン済みか否かを取得
です。

この、取得方法について何か解決方法ありますでしょうか。
もしくは、「そもそも、そんなことしないで、こういうふうに」とかあれば。


みなさん、こんな場合、どうしてますでしょうか?
0412nobodyさん2011/11/10(木) 18:11:51.77ID:tdE7yVMP
別モジュールから例外をスローしても、何故かDefaultモジュールのエラーコントローラーに行ってしまう・・・
0413nobodyさん2011/11/10(木) 19:41:14.83ID:???
>>411
>サイト内でセッションIDの維持ができず、どう対処しようかと悩んでいます。
どゆこと・・・?
特別な事しなくてもuse_trans_idを有効にすればある程度セッションは機能すると思うが・・・
サーバ名からの絶対パスだったり、Locationヘッダでリダイレクトを行う場合は、明示的にセッションID付ける必要があるけど。

>>412
何故かというかそういう仕様なのでは。
ルーティング後、エラーハンドラプラグインにモジュールを指定するなりしなさい。
0414nobodyさん2011/11/11(金) 13:51:36.97ID:z1VebOQP
>>413
すいません。。。いけました。
原因は、GETパラメータ無しでredirectしてましたorz

権限の承認(bootstrapプラグインのpreDispatch)のところでGETが剥がれてるのかな?
と思って、プラグイン周りばっかりチェックしてました。。。

0415nobodyさん2011/11/11(金) 15:33:28.05ID:???
>>410
そうではないんですよね
なんでなんだろう、気持ち悪いなぁ
0416nobodyさん2011/11/15(火) 20:34:57.16ID:???
ホント大分住んでてニュー速+みてると毎度毎度なさけなくなるよ

0417nobodyさん2011/11/15(火) 22:22:58.78ID:h5gc+rfd

夜分にすみません。クエリを投げる際に同名のプレースホルダを
複数回使用する方法を教えて頂きたいです。
具体的には以下のようなコードを書いているのですが、
初回の aaa のみしか変換が行われません。

$sql = "
SELECT id
FROM table
WHERE
aaa = :id
AND
bbb = :id -- <- ここの変換が行われない
";

バインドする際には以下のように記載しております。
$bind = array(
'id' => 1
);

Zendのインスタンス->query($sql, $bind);
0418nobodyさん2011/11/17(木) 00:29:35.00ID:???
>>417
$sql = "
SELECT id
FROM table
WHERE
aaa = :id
AND
bbb = :id2 -- <- ここ
";

$id = 1;
$bind = array(
'id' => $id
, 'id2' => $id
);
0419nobodyさん2011/11/17(木) 01:32:33.49ID:yVlmWW7j
FWというよりMVCの初歩的な質問な気がするけど。。

同じものを意味しててもviewとmodelで、もち方が違う場合、
例えば
- DBでは 日付型 hogedate カラム
- HTMLではhogedate_year,hogedate_month, hogedate_dayに分割
この場合、view<-->modelの値の変換と
その値が正当かってチェックはどうするのがいい感じでしょ?

viewでやるとすれば、Zend_Formとかでやるんだろし
modelでやるとすれば、Zend_Db_*のどこかに書くんだろうなとは思うけど
どっちでやるのがいいのか、なんかいまいちピンと着ません

特にその日付が"過去の日付はダメ"みたいなロジックを持つ場合
それはmodelの都合だからviewにはもたせるのはおかしい気もして。
■ このスレッドは過去ログ倉庫に格納されています