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/
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ではない。
0352nobodyさん
2009/07/14(火) 11:56:10ID:???0353nobodyさん
2009/07/14(火) 12:20:58ID:???0354nobodyさん
2009/07/14(火) 15:17:09ID:???0355nobodyさん
2009/07/14(火) 15:21:19ID:???0356nobodyさん
2009/07/14(火) 15:23:14ID:???0357nobodyさん
2009/07/14(火) 15:25:21ID:???0358nobodyさん
2009/07/14(火) 15:54:39ID:???どこで宣言するのが適正でしょうか?
index.php?
0361nobodyさん
2009/07/15(水) 11:24:12ID:???0362nobodyさん
2009/07/15(水) 11:35:54ID:???0363nobodyさん
2009/07/16(木) 13:03:14ID:???javascriptを利用してinnnerHTMLで作成したbuttonに
onclick="{$変数}"を実現させたいのですが、当然javascriptでは中括弧{}は読めないのでエラーが出ます
どうにかならないですか?
お願いします
0364nobodyさん
2009/07/16(木) 13:05:59ID:???ボタンを押すとabcという関数を実行する というものです
innerHTMLをやめればいいんですけど、仕様を満たすにはこれしかないので・・・
はっきりいってカスプログラムですが、どうにかお願いします
0365nobodyさん
2009/07/16(木) 13:20:47ID:???そのテンプレートは何で書いてるの?
中括弧は何故必要なの?
出力されたHTMLの中身はどうなってるの?
どんなエラーが出るの?
0366nobodyさん
2009/07/16(木) 14:02:55ID:???0367nobodyさん
2009/07/16(木) 14:40:15ID:???0368nobodyさん
2009/07/16(木) 14:54:18ID:???0369nobodyさん
2009/07/16(木) 15:32:31ID:???0370nobodyさん
2009/07/16(木) 15:36:02ID:???0371nobodyさん
2009/07/16(木) 15:49:27ID:???0372nobodyさん
2009/07/16(木) 16:02:13ID:???0373nobodyさん
2009/07/16(木) 17:26:18ID:UYFo7ptKhash(string), path(string), status(int)のSQLiteデータベースがあります。
hashが主キーで、find(hash)->count()の結果は1なのですが、
find(hash)->path
find(hash)->status
のようなアクセスをしても値が帰ってきません。
値はGUIから格納されているのを確認しました。
アクセス方法を間違えているのでしょうか?
0375nobodyさん
2009/07/18(土) 10:08:40ID:???0376nobodyさん
2009/07/18(土) 11:18:14ID:???0377nobodyさん
2009/07/18(土) 13:20:40ID:Xz5Y6CrM2.0.0移行はPHP 5.3以降要求されそうで怖い。
0378nobodyさん
2009/07/18(土) 14:44:40ID:???書籍リソースが全く役に立たないよなw
導入しても、手になじむ前に最新版がリリース>検証作業のループ。
0379nobodyさん
2009/07/18(土) 15:09:23ID:???0380nobodyさん
2009/07/18(土) 15:52:33ID:Xz5Y6CrMZend_Form
上記2点は使えるけど、上は新しいから解説サイトがあんまり無い
0381nobodyさん
2009/07/18(土) 19:08:28ID:???使い方あってるのかわからない
0382nobodyさん
2009/07/18(土) 19:16:06ID:???他力本願で申し訳ないけど。
0384nobodyさん
2009/07/18(土) 19:53:47ID:???. / ̄ヽ
| あ |
. 、| あ |)\
| そ | ヽ /|
| う .| .l/ |
| : / |
`∨,、 ∧ ,、/___
∧/-∨ ∨-ヽ /
l´l| ≡ / ≡ |、/
ヽ゛ 〉 |'ノ
>`ll _ /
`\.|\ `'´ /
,---| `ー-'|_
 ̄ ``- -‐'-'ヽ
_ 〉、
``丶、__/ ``丶、._
●
0385nobodyさん
2009/07/18(土) 20:35:14ID:???0386nobodyさん
2009/07/18(土) 23:11:02ID:???I think Jap's language is a local language in small islands of Far Eest.
You should use to read and write with public languages of UN! :-p
0387nobodyさん
2009/07/18(土) 23:19:32ID:???Japanese Mobile phones isolates from defact standards too far,
So, Zend Framework core contributers no consider of them.
0388nobodyさん
2009/07/18(土) 23:24:29ID:???てか、ドキュモのimodeIDって、/controller/action/guid=ON/args
みたいなURLでも効くんだろうか
0389nobodyさん
2009/07/18(土) 23:25:10ID:Xz5Y6CrM/test/test にアクセスするとどうなるでしょうか
class TestController extends Zend_Controller_Action
{
public function indexAction()
{
$this->_redirect(?/?);
}
public function testAction()
{
$this->_forward(?index?);
}
}
0390nobodyさん
2009/07/18(土) 23:27:00ID:Xz5Y6CrM0392nobodyさん
2009/07/19(日) 00:15:51ID:???>contributers
この辺にも注目
>no consider
これは論外
0394nobodyさん
2009/07/19(日) 14:01:49ID:???√ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| ΩΩ_ |
| ( ・ rt) =3 |
| / ; / |
|ー-‐ー-‐ー/‐ ,/ -‐ー-‐ー-‐ー-‐|
| r-、___/, :/ 。゚o |
| L「: ・ ; ̄`カ 8 。 |
「|‐ー-‐ー-‐ー-| L_・ ¨∵∴_」 |‐ー-‐ー-‐ー-「|
| | | | |「| ̄|,兀| (ヽ○ノ`〉 | | |
| | | | || | | || | > f | | |
| | | | || | | || | (_/ヽ_,〉 | | |
| | | | || | | || | | | |
| | 」 | || | | || | L | |
| |________,[,]!、!_Li、」_______________| |
└――――――――――――――――――――――――――-┘
0395nobodyさん
2009/07/19(日) 14:23:04ID:YJV33QJ20396nobodyさん
2009/07/19(日) 14:24:16ID:???0397nobodyさん
2009/07/19(日) 16:15:41ID:YJV33QJ2デフォだと/page/1みたいなリンクが生成されちゃいます
0398nobodyさん
2009/07/19(日) 18:03:02ID:???0399nobodyさん
2009/07/19(日) 18:36:34ID:YJV33QJ2?
使ったことあれば分かると思いますが、UserParam形式で生成されるページ番号を$_GET方式に変更したいってことです。
PEAR::PagerにあるようなurlVarやextraVarなどみたいな機能はないのでしょうか。
0400nobodyさん
2009/07/19(日) 19:08:35ID:???0401nobodyさん
2009/07/19(日) 19:10:28ID:YJV33QJ2使ったことが無くて分からないのであればもう良いです。
0402nobodyさん
2009/07/19(日) 19:11:36ID:???0403nobodyさん
2009/07/19(日) 20:00:05ID:???0404nobodyさん
2009/07/19(日) 21:17:14ID:YJV33QJ2分からないのに解答してこられると迷惑ですよね。
0405nobodyさん
2009/07/19(日) 22:31:10ID:???getCurrentPageNumber()とかかな?
そこまで絞ってんだからソース見た方が早いよ。
0406nobodyさん
2009/07/19(日) 22:33:32ID:???忘れてくれ。
0407nobodyさん
2009/07/20(月) 06:46:29ID:???0408nobodyさん
2009/07/24(金) 03:23:12ID:???受け取る方は $paginator->setCurrentPageNumber($page) で設定できるね
0409nobodyさん
2009/07/24(金) 22:36:50ID:Q241rgzlZend_Validate_Abstractクラス継承してます。
翻訳用定数はこれ
CheckUser::NOT_EXISTS
CheckUser::INVALID_TO
つかいかた
$check = new CheckUser(fqdn, from);
$check->isValid(checkaddress);
fqdnにはSPFレコード設定してあるホスト
fromには相手方に通知されるアドレス
checkaddressには確認したいアドレス
ソースはこれ
0410nobodyさん
2009/07/25(土) 01:33:18ID:???0411nobodyさん
2009/07/25(土) 09:18:54ID:???ってなんか無駄に色んな検証するのが嫌よね
0412nobodyさん
2009/07/25(土) 13:57:29ID:beK3GgFmあー生死判定ってことです。
メールアドレスの部分はZend_Validate_EmailAddressで判定しています
わざわざ送ってダエモンで判定するよりかは効率良いです。
0413nobodyさん
2009/07/25(土) 15:42:34ID:???■ このスレッドは過去ログ倉庫に格納されています