Zend Framework Part3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/04/10(金) 08:35:00ID:???http://framework.zend.com/
マニュアル
http://framework.zend.com/manual/ja/
(有力翻訳者のm-takagiさんのver)
http://www.m-takagi.org/docs/php/zend/
バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa
API
http://framework.zend.com/apidoc/core/
前のスレッド Zend Framework Part2
http://pc11.2ch.net/test/read.cgi/php/1204726884/
0253nobodyさん
2009/06/22(月) 13:48:28ID:???0254nobodyさん
2009/06/22(月) 13:55:24ID:???http://smarty.net/foreach
0255nobodyさん
2009/06/22(月) 15:51:12ID:???http://www.php-seed.net/blog/archives/370
こういう問題でもなく?
0256nobodyさん
2009/06/23(火) 17:52:02ID:fbX2StFR「自動転送がループしています」と出ます
<?php
require_once 'Zend/Controller/Action.php';
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('config.ini',null);
class IndexController extends Zend_Controller_Action{
public function init(){ //通常のクラスの __construct()に相当
// $dbConnect = new dbConnect();
}
public function indexAction(){
$this->view->result = $this->aisatsu;
}
}
require_once('Zend/Config/Ini.php');と$config = new Zend_Config_Ini('config.ini',null);を
コメントアウトすれば動いてviewの表示まで行ってくれるんですが、なぜ上記の2行が
問題なのかがわかりません。
apacheのエラーログには何も出ません。すみませんがアドバイスお願いします。
ZFWは1.83、apacheは2、phpは5.2.6、OSはcentOS5.3です
0257nobodyさん
2009/06/23(火) 22:49:32ID:U9kBq3jCBootstrapに入れるのは何か違う気がして、、
0258nobodyさん
2009/06/23(火) 22:52:11ID:???0259nobodyさん
2009/06/23(火) 23:19:57ID:U9kBq3jC他のコントローラの関数を参照する関数があればいいんですが
IndexControllerから
TestController::getForm()を参照したいです
0260256
2009/06/23(火) 23:33:48ID:fbX2StFRZendFW以前の問題で話になんね、って感じなんでしょうか?
それならそれで、ご指摘いただけると有り難いです。
一方的にすみませんがよろしくお願いします
0261nobodyさん
2009/06/24(水) 00:46:07ID:???そのコードだけじゃ情報が足りなさすぎる。
config中にルータの設定とか書いて無い?
一度config.iniを空っぽにして試してみれ。
0262256
2009/06/24(水) 03:05:26ID:lk5E+v4fありがとうございます。config.iniが原因とは思いませんでした
なかで、データベース接続情報を書いていたんですが、
パスワードに ! を含んでいて、これが原因だったようです(消したら動きました)
!は使えないってことでしょうか、とりあえずPW変更して対応します。。
0263nobodyさん
2009/06/24(水) 08:41:21ID:???http://www.nicovideo.jp/watch/1245748338
0265nobodyさん
2009/06/27(土) 11:34:29ID:LkjCp9rV0266nobodyさん
2009/06/27(土) 19:24:02ID:62AeSP23関数は使えないようにしたいと思います。
なんか良い方法ないですか?
0267nobodyさん
2009/06/27(土) 21:59:13ID:???⇒ 情報サイト http://sho-zai.com/index.html
0268nobodyさん
2009/06/29(月) 14:25:46ID:???0269nobodyさん
2009/06/29(月) 14:28:17ID:dN5c2Pu70270nobodyさん
2009/06/29(月) 14:46:32ID:???'foo',
'',
array(
'label' => 'bar',
'style' => 'width:150px',
)
);
こんな感じで幅を指定できないかなと思ったのですが、できません?
0271nobodyさん
2009/06/29(月) 17:11:46ID:???0272nobodyさん
2009/06/29(月) 19:08:49ID:???0273nobodyさん
2009/06/29(月) 22:04:00ID:???普通に書けばええがな。
0274nobodyさん
2009/06/29(月) 23:31:03ID:???Adapterを作ればOK。
>>266
Zend_Viewでは実質不可能。
Smartyなりのテンプレートエンジンの導入を。
0275nobodyさん
2009/06/30(火) 10:36:03ID:AIJgPj0k0276nobodyさん
2009/06/30(火) 16:00:28ID:???どうすればいい?
0277nobodyさん
2009/06/30(火) 16:06:01ID:???0279nobodyさん
2009/06/30(火) 20:57:51ID:???0280nobodyさん
2009/07/02(木) 01:17:44ID:???DBからデータを取得してきて、それをキャッシュに保存したりしますよね?
ページング処理にZend_Paginaterを使ってるんですけど、そのpaginaterオブジェクトも
キャッシュとして保存するものですか?
普通はどうしてるんでしょう?
0281nobodyさん
2009/07/02(木) 01:58:48ID:???大抵、ボトルネックになるのはDBだし
Webはスケールアウトすればいいじゃん、的な
0282nobodyさん
2009/07/02(木) 03:28:49ID:???マスターとかになるんですかね?
0283nobodyさん
2009/07/03(金) 02:02:06ID:???どうすればいいですか?
0284nobodyさん
2009/07/03(金) 04:37:06ID:???http://framework.zend.com/manual/ja/zend.controller.html#zend.controller.quickstart
0285nobodyさん
2009/07/04(土) 17:45:54ID:???全データを配列にぶっこんでから、カウントしてくれるだけだよね?
こういうのってPHPのパフォーマンス的にどうなの?
ちゃんと、count(*)関数使ったSQLで取得した方が良いの?
0286nobodyさん
2009/07/04(土) 17:55:34ID:???そういうアホみたいな処理が多い
0287nobodyさん
2009/07/04(土) 18:10:48ID:???自分はcount(*)で取得してる。
パフォーマンスは比べるまでもなく、じゃね?(実測した訳じゃないけど)
0288nobodyさん
2009/07/04(土) 19:01:27ID:???結果セットからrowcountとってるから、count以外に使う必要があるようなモデルであれば
Zend_Db_Rowsetで問題なし。
もし、countだけ欲しければ、count(*)でいい。
0289nobodyさん
2009/07/04(土) 19:38:55ID:???0290nobodyさん
2009/07/05(日) 22:33:37ID:jApqmo0w指定したいんですがなにか方法はありますか?
0291nobodyさん
2009/07/05(日) 22:49:24ID:???0292nobodyさん
2009/07/06(月) 02:41:57ID:???mod_rewriteの対象にしてるなぁ
0293nobodyさん
2009/07/06(月) 06:57:58ID:AIqh19Fa>>292
ドキュメントルート上にないファイルなので困っています。
なければコントローラ経由で出力します
0294nobodyさん
2009/07/06(月) 07:02:45ID:???ドキュメントルート上になくても、mod_rewriteでもAliasでもいいやん
0295nobodyさん
2009/07/06(月) 07:04:29ID:???画像を送出するコントローラーを書けばいい。
0296nobodyさん
2009/07/06(月) 14:51:05ID:???どうしても画面を分割したいのですが・・・
普通できますよね?
0297nobodyさん
2009/07/06(月) 14:53:10ID:Ixa1CqYvその場合はコントローラが3つになるんだろね
0298nobodyさん
2009/07/06(月) 15:00:52ID:???0299nobodyさん
2009/07/06(月) 23:17:03ID:???考えなおせ
0300nobodyさん
2009/07/06(月) 23:18:55ID:???0301nobodyさん
2009/07/07(火) 04:09:51ID:???0302nobodyさん
2009/07/07(火) 06:35:31ID:???0303nobodyさん
2009/07/07(火) 06:49:20ID:???0305nobodyさん
2009/07/07(火) 17:54:40ID:???また、できる場合、どう参照すればよろしいでしょうか?
0306nobodyさん
2009/07/07(火) 18:02:51ID:???$this->view->foo;
0307nobodyさん
2009/07/07(火) 20:55:21ID:dsERj2eFexample.com/controller/action/name/value
ではなくaction == indexとして省略して
example.com/controller/name/value
のように指定する方法はありますか?
後者だとnameActionを探しに行ってしまいます
0308nobodyさん
2009/07/08(水) 13:32:23ID:???詳しくはマニュアルで。
http://framework.zend.com/manual/ja/zend.controller.router.html#zend.controller.router.routes.standard
0309nobodyさん
2009/07/08(水) 23:27:36ID:5XpF0jdH_forwardのようにそのアクションを呼び出すのではなく、関数の返り値が欲しいです。
0310nobodyさん
2009/07/08(水) 23:50:56ID:???0311nobodyさん
2009/07/09(木) 00:12:48ID:JLJTWxg20312nobodyさん
2009/07/09(木) 00:18:29ID:???0313nobodyさん
2009/07/10(金) 17:30:13ID:???ビューヘルパーのaction使えばできるんじゃね?
で、デレツン行っていいかな。
コントローラーからコントローラーを直接呼ぶとか、
ビューからコントローラー呼ぶとか、キモイこと考えんなやw
コントローラーを呼ぶときはdispatcherとリクエスト使いましょう。
0314nobodyさん
2009/07/10(金) 18:12:04ID:???無駄に太り見通しが悪くなって苦労するよね、今の俺みたいに(´・ω・`)
ついつい、このコントローラ共通の処理だからと、アクションじゃないメソッドを増やしちゃうが...
0315nobodyさん
2009/07/10(金) 18:19:43ID:???最近、やっとわかってきたけど。
0316nobodyさん
2009/07/10(金) 18:44:08ID:xlLyB0YiSearchActionなんてのにZend_Formを返すgetForm()なんてのがあるとします。
IndexControllerからそのフォームをトップページで表示したい場合はどうすれば良いんですか?
何かおかしいこと言ってますか?
0317316
2009/07/10(金) 18:45:31ID:xlLyB0Yi0318nobodyさん
2009/07/10(金) 18:56:13ID:???だったらそれがそもそもおかしい。
0320nobodyさん
2009/07/10(金) 21:24:14ID:???ZFだと、formsっていうところにモジュール別のフォームを集めておくのがデフォ。
IndexControllerで検索フォームを使いたいなら、IndexControllerのgetFormで、
それをインスタンス化するという簡易的な手もある。
getForm('search')とか。まぁ、しかしそりゃ汚くなる。
ヘルパーかプラグインリソース(Zend_Application)にするところだろうな。
0321316
2009/07/10(金) 23:25:57ID:xlLyB0Yi何がおかしいんでしょうか。
xxActionしか内部に作っちゃいけないなんて言う制約ありません。use-at-willです。
codezineだかのサンプルにもそういった実装がありました。
>>319
helperですか。。
ちょっと考えてみます。
>>320
formsのあたりをもう少し詳しくお聞きしたいです。
static functionとしてgetForm()を定義することも考えましたが、
$thisを使いたい場面もあり、それはあきらめました。
Zend_Applicationで大半のことはやっていますが、
使わないコントローラに対してもフォーム分のメモリを確保するのはどうかなぁと思ってしまいます。
ある程度の規模のサーバーで運用していますが、ZF自体が膨大ですのでできるだけいらない処理は省きたいのです。
0323nobodyさん
2009/07/10(金) 23:35:55ID:???>xxActionしか内部に作っちゃいけないなんて言う制約ありません。use-at-willです。
制約ではなく、設計を指摘してるのでしょう。
他から参照されるメソッドをSearchControllerに定義する事自体がおかしい、と。
0324316
2009/07/10(金) 23:46:24ID:xlLyB0Yiならそう書いてください。
2行目は余計です。
>>323
検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、
他のコントローラで参照することを考えれば分けた方が良いかもしれませんね。
もしくは出力されるフォームのHTMLだけを直接Viewに書いちゃうかどっちかですかね。
0325nobodyさん
2009/07/11(土) 00:43:24ID:???0326nobodyさん
2009/07/11(土) 00:57:28ID:???> 検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、
全然自然じゃない。
> 他のコントローラで参照することを考えれば分けた方が良いかもしれませんね。
他のコントローラから参照されることがなくても自然じゃない。
> もしくは出力されるフォームのHTMLだけを直接Viewに書いちゃうかどっちかですかね。
「どっちか」って「フォームHTMLだけViewに」とどれ?
ZFって一応MVCモデルのフレームワークってことなんだけどね。
0327nobodyさん
2009/07/11(土) 01:07:14ID:???結局それ念頭に作られていてこの後も拡張されて行くから
自分で解釈を考えるよりも元々のZendの意図をくみ取る方が重要だったりする
なので迷ったら本家MLのログ検索で良い例題を探してみて、あれば真似する、
というアプローチがよいと思う。出来たてなFWだから野良の情報はけっこう微妙
0328nobodyさん
2009/07/11(土) 01:26:56ID:???コントローラの行数を何行に収めるべきか、とか
ひいてはサイト全体をどう設計して行くべきか、とかが大体イメージ出来る
http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html
B.2.3. 1 行の長さ
1 行の長さを 80 文字までにすることを目指しましょう。
すなわち、 コードの長さを現実的な範囲で 80 文字までにおさめるよう
努力すべきです。 しかしながら、場合によっては少々長くなってしまっても
かまいません。 PHP コードの行の長さは、最大 120 文字までにするように
しましょう。
0329nobodyさん
2009/07/11(土) 01:31:14ID:???全然自然じゃないわ
0330nobodyさん
2009/07/11(土) 01:37:51ID:???ZFは各コンポーネント間の依存関係を薄めて、好きなモノを好きに使ってくれって思想もあったはず。
良くも悪くもRoR系FWと比べると書き方に規制が無いから、ベストプラクティスを導き出すのが難しいんだよね。
日本ユーザがもう少し盛り上がれば色々広がりそうなんだけどねぇ。
>>328
「行数」ではなくて「行あたりの文字数」なw
行数は明確に規定ないよ。
0331nobodyさん
2009/07/11(土) 01:48:09ID:???失礼
The maximum length of any line of PHP code is 120 characters.
って書いてるね。余計なこと書いちゃったなぁw。
0332316
2009/07/11(土) 07:33:19ID:IIRizAp5>>329
参照返信されるのはいいですが否定するだけでなく意見を下さい。
あなた方にとってどう実装するのが自然な方法なんですか?
どっちかというのはHTMLをインデックスのビュースクリプトに直接記述する方法と
あなた方が提案しない自然な方法のどちらかと言うことです。
>>327
>>330
作る側にとったら悩むところですね。
私はできれば推奨と呼ばれるような書き方をしたい派なのです。
もっとユーザが増えればですね。
0333nobodyさん
2009/07/11(土) 09:27:12ID:???>>316のやりたい事を実装する方法は多々あるし、自由に実装すればいいんじゃない?
本人が良いのであれば、SearchControllerに実装したって全然かまわない。
0335nobodyさん
2009/07/11(土) 11:06:03ID:???おれは、SearchControllerにgetForm実装するかどうかは別として、
別のコントローラーに処理を回したいケースはある。
おれなら、IndexControllerから直接呼ぶんじゃなく、
ActionStackにSearchControllerをセットして
プレースフォルダにコンテンツを投入させてレイアウトで処理する。
0336nobodyさん
2009/07/11(土) 13:03:17ID:???だから、全然自然じゃないし、推奨と呼ばれるにはほど遠い書き方なんだよ。
書き方以前に、あなたにはコペルニクス的転回が必要なんじゃね。
>>316 「何かおかしいこと言ってますか?」
これが全て。根底から考え直さないと、ここで今の問題の回避方法を聞いても、
次にまたぶつかる。
0337nobodyさん
2009/07/11(土) 16:05:55ID:Vd43NPnH学校の生徒と先生の自己紹介アプリみたいなの作るとして、とりあえず
StudentControllerとTeachearControllerつくって、それぞれに「趣味」を出力する機能があるとします
この場合、趣味のDB問い合わせ+引き出し処理は独立したメソッドに持たせて、
それを上記Controller中のhobbyActionからそれぞれ実行させれば良いんですよね?
0338nobodyさん
2009/07/11(土) 16:28:29ID:???hobbyActionは共通だから、まずIntroductionControllerを作ってこちらに実装。
生徒と先生とで違う部分だけIntroductionControllerから派生させて作る。
introduction/hobby でアクセスさせるか、(student|teachear)/hobby にするかは他との兼ね合い。
両方可能でもいいし。
DB問い合わせとかは別クラスを作る。
hobbyActionには、せいぜい getDB()->getHobby();程度で趣味を取り出せるようになっているのがいいな。
0339nobodyさん
2009/07/11(土) 16:45:27ID:Vd43NPnHありがとうございました、なるほどー
getDB()->getHobby();ってありますが、これはつまり
DBアクセスのクラスを独立させて、生徒・教師問わず情報引き出し処理を
その中のメソッドとしてもたせるってことですよね?
DBアクセスのクラスはどっちのユーザーにも共有ってことで、、
それだと、スケジューラ機能を持たせて、
$uType = "student";
$uName = "山田";
$eventDay = "2009/7/11";
getDB($uType,$uName)->getSchedule($eventDay);
として、「生徒の山田さんの2009/7/11のスケジュール」を呼び出す処理を作る
みたいなことも出来るんでしょうか?
0340nobodyさん
2009/07/11(土) 17:34:31ID:???> DBアクセスのクラスはどっちのユーザーにも共有ってことで、、
共有と言うより共通かな。
先生と生徒でDBが多少違っていても同じインターフェースが実装されていればいいってことで。
> getDB($uType,$uName)->getSchedule($eventDay);
それでもいい。
Userクラスを作ってDB接続はUserオブジェクト内に持たせるのもありだと思う。
preDispatchあたりで
$user = new User(getDB($uType));
$user->setNmae($uName);//コンストラクタの引数で渡してもいい
scheduleActionで
$this->user->getSchedule($eventDay);
hobbyActionで
$this->user->getHobby();
0341nobodyさん
2009/07/11(土) 17:36:01ID:???0343nobodyさん
2009/07/11(土) 17:49:07ID:???0344nobodyさん
2009/07/11(土) 18:27:06ID:???initとpreDispatchの使い分けでググるといろいろ出てくるけど、
俺的にはアクションやリクエストクエリで違いが出てきそうなのはpreDispatchかな。
DB接続(の用意)とかはinitに書くこともあるけど、どのみちシングルトンだし、
ファクトリーメソッドなどを多用するから、Zend_Controller_Actionから派生させた
そのアプリのベースとなるMyApp_Controller_Actionで使う程度かな。> init
0347nobodyさん
2009/07/13(月) 15:41:33ID:sINZz9CUiconv_strlen()で文字数を数えているようですが、strlen()の返り値で検証して欲しいです。
0348nobodyさん
2009/07/13(月) 16:47:25ID:???0349nobodyさん
2009/07/13(月) 18:59:28ID:???http://framework.zend.com/manual/ja/zend.form.quickstart.html
他のサンプルでもよく使われてるけど元祖はマニュアルなのかw
0350nobodyさん
2009/07/13(月) 19:55:44ID:???0351nobodyさん
2009/07/14(火) 11:53:04ID:???ただ、他のコントローラーから呼べるようにというのは、ZF的MVCではない。
■ このスレッドは過去ログ倉庫に格納されています