ZendFramework Part2at PHP
ZendFramework Part2 - 暇つぶし2ch2:nobodyさん
08/03/05 23:25:27
ついに立った。

来るべき時が来た。

その名は勇者「Zend Framework」

君は生き残ることができるか!?

3:nobodyさん
08/03/06 05:21:30
何気に公式サイトを訪れたら1.0.4になってた。
ほんの一部ZF1.0.3本体を弄ったんだよなぁ、どこだったか思い出せん...orz
差分取るしかないか。


4:nobodyさん
08/03/06 16:16:28
1.5RCも出てるぜ

5:nobodyさん
08/03/06 18:15:35
Zend_Formしてみようと思うんだけど、
これってZend_Viewを使うこと限定なのか?
Zend_View使わずSmarty使ってるんだけど、そのままrenderできないのかな

6:nobodyさん
08/03/06 18:35:53
ちなみにソース

require_once 'Zend/Form.php';
$form = new Zend_Form;
$form->setAction('/')->setMethod('post');

$form->addElement('text', 'name');

echo $form->render();

出力「error」

7:nobodyさん
08/03/06 22:21:48
>>3
svn使いなされ

8:3
08/03/07 01:17:52
>>7
ん? ZFを自分のリポジトリにつっこんで差分取ったり管理しろってことかな?
弄ったのはどこかの正規表現だったかな。
まぁupdateの度にdiffで確認するよりSubversionにつっこんだ方が楽だろうけど、

で、実際はどうする? 俺はZF1.0.3で初めて使ったんだけど、
1.0.3をsvnにつっこんで、branch分けしてそこに俺々修正したものをつっこむ。
1.0.4をtrunkでupdateしてbranch側でmergeって感じになるのかな。

9:nobodyさん
08/03/07 03:49:03
フレームワークのソースは触ったら後々面倒だろ

10:3
08/03/07 04:59:24
>>9
そう、俺もそう思う。
弄ったのはバグだろうと思われるところだけ。
どうせそのうち修正されるだろうと思ってたから
ちょっと悩んだんだけど、継承せずに直で弄った。
確かググったら出てくる有名どころのバグだったと思うよ。
だから、修正箇所をちゃんと控えてupdateしたときに確認すればいい程度なんだろうけど、
ZFを初採用してバタバタしてたから控えてなかったのだ(´・ω・`)

11:nobodyさん
08/03/07 05:00:54
メソッドの型がインタフェースと違うって話?

12:3
08/03/07 08:55:10
ゴメソ ちょっと混同してた。
有名どころって書いたのはmb_encode_mimeheaderが入れる改行だったんだけど、
こちらはZF本体を弄る必要がないね。

ひとつはZF入門本に載っていたZend_Mailのバグなんだけど、
本当にバグなんかな? 1.0.4でも修正されてないし、修正しなくてもよさそうな気もするが、
検証せずにとりあえず適用してる。

あと、Zend_DateのRFC2822の正規表現。これはZFが悪いんじゃなくて
某メール鯖が悪いんだけど、正しく拾えないので悩みつつZF側を修正した。

/**以下チラシの裏
trunkに1.0.3をつっこむ
1.0.3を分岐して俺々修正
trunkに1.0.4をつっこむ
1.0.4を分岐して1.0.3の俺々修正をmerge

ってなかんじでやってみた。
1.0.4つっこんだときに1.0.3との差分を見たけど
1000以上のファイルで修正されてた。
追加されてたのは5ファイルだけ。
**/



13:nobodyさん
08/03/07 14:48:59
まあ普通はFW本体はリポジトリに入れないな
なんとか自前で継承して挙動の変更できないか検討して
止むを得ず本体のコードを変更する場合は
その該当ファイルのみコミットしておくかな、自分なら

rubyは再定義しやすいから
FWの一部分の挙動をちょろっとだけ変えるってのも楽なんだがな

14:nobodyさん
08/03/07 22:38:40
またRubyか(呆

15:nobodyさん
08/03/08 00:28:19
>>12 Zend_Mailの件はiconv_mime_encodeの対応待ち扱いなので、先はまだまだ長そう
framework.zend.com/issues/browse/ZF-1950

16:3
08/03/08 01:56:10
ZF本体を弄らずに継承などで済ませるならそもそもリポジトリにつっこむ必要ない。

で、例えばZend_Mailのバグフィックスとかデフォルト文字コードをISO2022JPに
変更したMy_MailをZend_Mailから継承して作ったとするでしょ。
当然クライアントコードにはrequire_once 'My/Mail.php'とか new My_Mail() などが
ちりばめられるのだが、将来ZF側でフィックスされたり文字コードもmbstring_language
から自動判別されるようになり、My_Mailはお役ご免になったりしても
クライアントコードをいちいち書き換えたりするのも馬鹿らしいので中身が空のMy_Mailを
引きずることになる。
どうせMy_*を管理しなきゃならんのならZF本体を弄っても手間はあまり変わらないよなぁ。
他の人はどうしているんだろうと悩みつつ、時間がないのもあって前回はZF本体を弄っちゃった。

幸い外からも接続できる鯖を持ってるし、svn+sshで接続可能な様にしているので、
ZF専用のリポジトリを作って管理していけば、出先からでもcheckoutやexportできる。
本来フレームワークを直接弄るなんて邪道なんだろうけど、それはZFの完成度がまだまだ
低いと言うことで納得して、逆にリポジトリを立てることによって、遠慮なしに弄っていけるから
ある意味"すっきり"した感じがする。


17:nobodyさん
08/03/08 02:28:39
FW本体をバージョンアップして自分の意図したように変更がかかった場合はいいけど、
自分の意図してないように変更がかかったらどうすんの?
またFW本体をハックする?

あと、FWがバージョンアップしたら自分のリポジトリで管理しているバージョンと
マージするんよね?そっちの方が手間暇かかりそうな気がする。。。

まぁここらへんは人それぞれなんだろうけど。。。
俺はFW本体はいじらない派。

18:nobodyさん
08/03/08 02:42:05
今日1.5RC2が出ますよ

19:3
08/03/08 03:17:30
>>17
もろに修正箇所が衝突したら手動マージしなきゃならないが、
でなければマージそのものはそんなに手間かからないんじゃ?
と思ってる。

本体を弄らず継承でが王道で、本体を弄ってしまうのは邪道だとは思う。
Zend_Mailのデフォルト文字コードなんてのは、継承で書き換えるのが
どう考えても普通。Smartyなんかも結構弄ったけど、基本的には
継承したり、新たなプラグインやフィルターを書いてた。
でもね... まぁ人柱気分でやってみるよ。
本体再書き換えしなきゃならんときも出てくるだろうけど、
そのうち、拡張は別だが修正は減ってくるだろうと願ってる。
(まだそんなに弄ってないけど、弄りたいところは他にもあったし)
FW使いながら、貧乏コードって言われそうだ(^^;

20:nobodyさん
08/03/08 03:33:37
バグなら報告すればいいのに

21:nobodyさん
08/03/08 05:32:10
バグならpatch書いて取り込んでもらえばいいだけじゃん

22:nobodyさん
08/03/11 14:16:57
Zend内でphpで吐き出したものを
同じZendからfile_get_contentsで読み込めないの?

23:nobodyさん
08/03/11 18:55:26
読み込めるんでない?

24:nobodyさん
08/03/11 19:27:58
普通にできる

25:nobodyさん
08/03/12 03:54:29
パスでも間違ってんじゃね?

26:nobodyさん
08/03/13 14:50:15
1.5RC3キタ

27:nobodyさん
08/03/13 17:01:18
hostsの設定が原因だったわ

28:nobodyさん
08/03/13 18:25:33
ACLって基本的にコントローラ単位でかけるもの?
対象が違うアクション(管理者向けの編集機能やユーザ向けの閲覧機能)が混在してるコントローラ
は別コントローラとして分けたほうがいいんだろうか

29:nobodyさん
08/03/18 00:48:46
Zend Framework 1.5 が出たね。

30:nobodyさん
08/03/18 01:11:51
出やがったか

ウチが検証と移行を検討できるのはいつになることやら。。

31:nobodyさん
08/03/18 01:24:23
1.5になってどれだけ使える感じなんだろう

32:nobodyさん
08/03/18 01:25:03
ドキュメントがああああああああああ
全部英語おおおおおおおおおおおおお
書き換わってるうううううううううう

m-takagi・・・がんばって・・・ください・・・応援してます・・・

33:nobodyさん
08/03/18 01:52:51
ロケールファイルがぶっ壊れたのかなw
多分サイトリニューアル時の作業ミスだろうね。

34:nobodyさん
08/03/18 23:01:29
日本語マニュアル回復した

35:nobodyさん
08/03/25 01:22:11
1.5入れたらキャメルケースのアクション名が実行できなくなったんだけど仕様なの?
[controller]/fooBar/ってリクエストのとき
以前はfooBarActionメソッドが呼ばれてたんだけど、foobarActionメソッドじゃないと呼んでくれなくなった。

36:nobodyさん
08/03/25 01:57:20 gUsYdsCk
>>35
その辺は仕様変更された。
よく確認した上で、実装しる。

37:nobodyさん
08/03/25 02:09:06
しょっちゅう仕様変更するフレームワークって何なの

38:nobodyさん
08/03/25 02:14:12
>>37
ZF

39:nobodyさん
08/03/25 03:36:46
>>36
ごめん、悪いけどその辺りの話ってドキュメントのどこに書いてある?
テンプレートがハイフン区切りになったのは知ってたんだが、今回のは初耳で、
URLリンク(framework.zend.com)
URLリンク(framework.zend.com)
を見ても書いていなくて困ったんだ。


40:nobodyさん
08/03/25 04:20:41 gUsYdsCk
>>39
この辺が参考になるんじゃない?
URLリンク(framework.zend.com)

41:nobodyさん
08/03/25 21:28:57
>>40
ありがとうございます。
しかし
> しかし、PHP の関数名は大文字小文字を区別しないので、URL 自体を camelCasing 形式で書くこともできます。
> PHP では大文字小文字を細かく区別しないため、 これらはどちらも同じメソッドを実行することになります。
などは、ビュースクリプトはダッシュ区切りにすべきものの、アクションリクエストとアクションメソッド名はどちらでも構わないように読み取れる。

どうも腑に落ちないので、ファイルの中を検証してみた。
1.5からは最終的にZend/Controller/Action.php 498行目の
 if ($this->getInvokeArg('useCaseSensitiveActions') || in_array($action, get_class_methods($this))) {
でメソッドが存在するか確認されるようになっているが、ここで渡される$actionは既に小文字に正規化されているため、
大文字メソッド名だとin_arrayがfalseになってしまう。
ここのif文は
 if ($this->getInvokeArg('useCaseSensitiveActions') || method_exists($this, $action)) {
である方がドキュメントのニュアンスに即しているのでは。


42:nobodyさん
08/03/27 15:12:28
1.5.1か

43:nobodyさん
08/03/27 17:47:06
changelogどこいった
何が修正されたんだ

44:nobodyさん
08/03/27 21:47:41
ここで見られるよ
URLリンク(framework.zend.com)


45:nobodyさん
08/03/31 01:42:25 DgX3Qd/t
今ZF初めていじってるんだけどZendControllerってどうなの?
なんか使いにくい感じがするんだけど・・・
独自のがいいのかね?
それとも使ってれば慣れる?

ZendController使ってる人
メリットデメリットあれば教えてぷりず!


46:nobodyさん
08/03/31 01:53:02
使いにくいってどの辺が?

47:nobodyさん
08/03/31 02:03:49
>>46
URIとかアプリとしてセキュリティ的にいいのか?とか
Directory構成とか考えるとなんだかなぁと
使ったことないからそんなもんだといわれればそれまで
かもしれませんが

ZF使ったオープンソースとか何かありませんかね?


48:nobodyさん
08/04/01 00:44:20
URI->アクションのルーティングとかは昨今のFWならどれでも大差ないと思うけどな
あとRequestObject、ReponseObjectあたりが割と使いやすくて気に入ってる

49:nobodyさん
08/04/01 01:06:58
特にZend_Controllerが使いにくいと考えた事ないなぁ。
とても自分でルーティング周りやDispatcher周りを自分で一から実装する気にはなれんw

ま、オレオレFWにZend Frameworkをライブラリの一部として使うのはそれはそれでアリだと思うけど。


50:nobodyさん
08/04/01 01:08:31
Zend_Formの評判が気になる

51:nobodyさん
08/04/01 14:48:39 7JV3dDHX
Zend、Cake、SymfonyならZendが一番わかりやすいと思うよ

52:nobodyさん
08/04/01 15:09:08
わかりやすいっていうか
低機能なだけ・・

53:nobodyさん
08/04/05 21:54:16
zendの範囲で済む安仕事にはむしろ有り難い
ケーキや管弦楽とは別の見方でモノ提供してる感じだね
FW作るための土台みたいな感じ

54:nobodyさん
08/04/05 22:59:41
ZFで自社用FW作るとかならかなり良いと思う

55:nobodyさん
08/04/05 23:17:50
管弦楽ってw

symfonyって打ったほうが早いだろ

56:nobodyさん
08/04/06 00:02:17
>>ZFで社内カスタムFW
既に結構作られてそう。

57:nobodyさん
08/04/08 13:18:35
>>50
Zend_Form 使ってるけど、速度的に重い気がする。
だから Zend_Cache でキャッシュしてる。

58:nobodyさん
08/04/11 21:49:28
ZFでsmarty使う方法がいまいちわかりません。
検索してもサイトによって書いてる事がばらばらだったりで。

ZFにあるinterfaceから継承したsmarty用クラスは作成しました。
ここからなにをすればいいんでしょう?

        $opt = array(
                'templete_dir' => '../application/views/scripts/index',
                'compile_dir'  => '../../var/templates_c'
                );

        $smarty = new Common_View_Smarty(null, $opt);
        $smarty->assign("books", "テスト");
        $smarty->render("index.tpl");

これがアクション内の記述なんですが、何か変なところはあるでしょうか?

やったことは、
・PHP.iniにsmartyのincludeパスを通す。
URLリンク(wadslab.net)
 を参考にZend_View_Interfaceを実装したCommon_View_Smartyを作成
・index.phpの中身は
Zend_Session::start();

Zend_Controller_Front::getInstance()->setParam('noViewRenderer',true);
Zend_Controller_Front::run('../application/controllers');
これだけ

でIndexController.phpの中のindexActionに↑の奴を書いています。
エラーがでるでもなく、真っ白な何もない画面が表示されてしまいます。


59:nobodyさん
08/04/11 22:56:44
エラーが出ないならApacheやIISのログ見ればいいじゃない

60:nobodyさん
08/04/11 23:16:02
apacheのログも見てみましたが、それらしいものが全く見あたりません。
画面に何も表示されないので、まずテンプレートファイル自体読み込めてないと思うんですが

        $opt = array(
                'templete_dir' => '../application/views/scripts/index',
                'compile_dir'  => '../../var/templates_c'
                );

        $smarty = new Common_View_Smarty(null, $opt);
        $smarty->assign("books", "テスト");
        $smarty->render("index.tpl");

この下に
   echo 'てすと'

と書くと、てすとだけ表示されます。

なのでこのアクションは呼び出されているけど、上の方の処理が意味をなしてない?ようですが
どこで間違ってるのかが突き止められない状態です。
せめてphpのエラーメッセージがでればまだおいかけられるんですが、一見エラーがないように素通りするので・・・

61:nobodyさん
08/04/11 23:42:39
ZFでSmartyを使用するには
ViewRendererに登録してZend_Viewを置き換える方法と
Zend_Viewを無効にしてアクション内でSmartyのrenderメソッドを呼び出す方法の2通りがある。
俺は前者でやっているが、後者でやるならマニュアルの42.3.2.2.にそのまんまの方法が載っているからそれ参考にすればおk。
そのサイトの怪しげな方法を参考にする必要は無い。
強いていうならそれはテンプレートディレクトリが正しく指定されてないと思われ。

62:nobodyさん
08/04/12 00:11:46
URLリンク(framework.zend.com)
マニュアルのはこれですよね?

一番最初はこれを見てやってたんですが、結局できず色々検索した次第です。
前述しましたが、interfaceを使ってsmarty用の,このマニュアルで言うところのZend_View_Smartyは作成しています。
このマニュアルで言うと、後は
$view = new Zend_View_Smarty();
$view->setScriptPath('/path/to/templates');
$view->book = 'Zend PHP 5 Certification Study Guide';
$view->author = 'Davey Shafik and Ben Ramsey'
$rendered = $view->render('bookinfo.tpl');
これすればいいだけなんですよね?(テンプレートファイルの配置は終わってるとして)

これだとテンプレートファイルのパスは指定していますが、templates_cのパスは指定してませんよね。
なしでもいけるんでしょうか?

このマニュアルのインターフェースを継承したsmarty用のクラスは作成して
マニュアル通り、アクション部分に↑の5行ほどのプログラムを書き、テンプレートファイルも適宜設置済み。

で実行してもやはり真っ白なんですが、何かが足りないんでしょうか。
テンプレートディレクトリが間違ってるかもしれないと、何十通りか考えられる全てパスは試してみましたが、やはり無理でした。

63:nobodyさん
08/04/12 00:33:44
display_errors = On

64:nobodyさん
08/04/12 00:40:04
display_errors = On
は設定済みです。
なのにエラーが出ない状態です。


65:nobodyさん
08/04/12 00:45:03
header('hogehoge');

みたいなところがおかしいと真っ白になるよね

66:nobodyさん
08/04/12 01:15:36
通常のZend_Viewは使えてんの?

67:nobodyさん
08/04/12 01:17:28
オフィシャルのView_Smartyのrender()はsmartyのfetchをコールしてるだけだから、表示はしてくれない。
ViewRendererに登録しないでやるんだったら、自分でZend_Controller_Response_HttpのsetBody()に登録せんと。

・コントローラ
$this->_view = new Zend_View_Smarty();
$this->_view->setScriptPath('/path/to/templates');
$this->_view->book = 'Zend PHP 5 Certification Study Guide';
$this->_view->author = 'Davey Shafik and Ben Ramsey'

・コントローラのpostDispatch()にこんな感じで書く。
$rendered = $view->render('bookinfo.tpl');
$this->getResponse()
->setBody($this->view->render($rendered));

こんな感じでどう?

68:nobodyさん
08/04/12 01:20:50
間違った。。。
$rendered = $view->render('bookinfo.tpl');

$rendered = $this->_view->render('bookinfo.tpl');


69:nobodyさん
08/04/12 01:27:39
そういえばecho $this->view->render('hoge.tpl')じゃなかったか

70:nobodyさん
08/04/12 02:17:04 vLVKIeUG
こうするとなにかエラーがあったときにわかりやすいよ(開発中のみ)。

//Zend_Controller_Front::run('../application/controllers');
$front = Zend_Controller_Front::getInstance();
$front->addControllerDirectory('../application/controllers');
$front->throwExceptions(true);
try {
$front->dispatch();
} catch(Exception $e) {
echo nl2br($e->__toString());
}


71:nobodyさん
08/04/12 09:16:17
ErrorControllerの枠組みがあるじゃん

72:nobodyさん
08/04/12 15:22:15
>>66
はい、使えています。

>>67
参考に色々やってみたら、少し進んだような手応えがありました。
テンプレートの読み込みまではいったようです。
ただ、テンプレートの中に{$test}のようなsmartyタグを書くとエラーが出ます。
一切タグのない純粋htmlを読み込んでrenderするだけならできています。
テンプレートの中にタグを埋め込むと

Fatal error: Smarty error: [in index.tpl line 6]: [plugin] modifier 'sanitize' is not implemented (core.load_plugins.php, line 118) in
ライブラリのパス Smarty.class.php on line 1092

というエラーがでてしまいます。
恐らくこれを解決すれば表示されるのではないかと思いますが、エラーで検索してみてもこれといった解決法が見つかりませんでした。
in index.tpl line 6
この行に{$book_name}のようなタグがあります。


73:nobodyさん
08/04/12 15:57:34
> 参考に色々やってみたら
何をやったの?
> sanitize
カスタム関数のsanitizeファイルが無いんでしょ。

74:nobodyさん
08/04/12 15:59:52
すいません自己解決しました。
Zendのオフィシャルじゃなくて、少し改良したらしい他のサイトの継承クラス使ってたのが原因でした。
Zendオフィシャルのにしたらエラーは出なくなりましたが、表示はやはりでませんでした。

テンプレートには{$book_name} が埋め込んであります。
実行すると、コンパイル済みディレクトリにファイルが出来てそのタグを埋め込んだ部分が
<?php echo $this->_tpl_vars['book_name']; ?>
となっていました。
そのファイルではそうなっているんですが、Webでアクセスするとその部分が綺麗さっぱり消え去ってしまっています。
そのファイルのタグ該当部分の違いですが
テンプレファイル:{$book_name}
コンパイルファイル:<?php echo $this->_tpl_vars['book_name']; ?>
Webでアクセスしたページのソース:なにもなし
こんな状態です。


75:nobodyさん
08/04/13 17:59:08
綺麗さっぱり消え去ってるんじゃなくて、ちゃんと実行されてんだろう
book_nameに値が入ってないんじゃね

76:nobodyさん
08/04/13 19:58:27
テンプレートに{debug}ってして、中身見てみたら?
多分>>75が言うように値入ってないと思うけど。

77:nobodyさん
08/04/22 23:30:49
ZFわかんなくて、CakeやってからZFに手出したら
すげーZF好きになった。
ZFの方が記述が納得しやすいと思う。

78:nobodyさん
08/04/23 00:19:31
例えばどんなとこよ?

79:nobodyさん
08/04/23 00:22:18
ZFがいいんじゃなくてCakeが腐ってるだけだろ
特にとんがった工夫も特徴もない標準的な実装がZF

80:nobodyさん
08/04/23 11:57:54
pearからのいいとこどりだしね

81:nobodyさん
08/04/23 20:59:08
そのうち、PHPにビルトインされるだろう。
と思ってたら本当にやりやがった。
マジかよw

な事になると思うよ。
Zendはいつもそうだもの。

82:nobodyさん
08/04/23 21:23:45
と思ってたら本当にやりやがった。
マジかよw

83:nobodyさん
08/04/26 02:06:01 5isAEf4O
Zend Frameworkでセッション使ったら、画面が真っ白になりました。
なんででしょう?

84:nobodyさん
08/04/26 02:15:12
まだFW使うレベルじゃないと思われ

85:nobodyさん
08/04/26 03:22:30
頓知クイズの類じゃないのか。

86:nobodyさん
08/04/26 03:46:35 faNVTaZi
new Zend_Date();
とすると、Zend_Date_Exceptionが1018行目から飛んできます。

第一引数に以下のような配列を渡すと正常にインスタンスが生成できます。
(※定数START_TMEの中身はtime()の戻り値です)
$dateArr = array(
'year' => date("Y", START_TIME),
'month' => date("m", START_TIME),
'day' => date("d", START_TIME),
'hour' => date("H", START_TIME),
'minutes' => date("i", START_TIME),
'second' => date("s", START_TIME));

Zend_Dateの199行目の以下のメソッドの戻り値がタイムスタンプでるので、
その後の処理で例外が飛んでいるのは何となく分かりました。
(以下の後にコールされるsetTimeZone()の中で、timezone_open($zone)で$zoneがintのタイムスタンプなのでこけているようです。)
$zone = $this->getTimezoneFromString($date);

リファレンスによると、引数なしでコールした場合は、
勝手に'now'なインスタンスが生成されるようなのですが、
同じような現象が起こった方はいらっしゃいますでしょうか。。

Zend_Dateのバージョン記述は以下です。
@version $Id: Date.php 8943 2008-03-20 21:43:37Z thomas $

これって既知のバグなのでしょうか。
それともこちらの何がしかの設定の問題なのでしょうか。。
事前にdate_default_timezone_set('Asia/Tokyo');は行っています。

87:nobodyさん
08/04/26 04:05:06
再現するコード出してみてくれ

88:86
08/04/26 04:41:19
>>87
こんなです。

<?php
define('START_TIME', time());
define('START_DATE', date("Y/m/d H:i:s", START_TIME));

define('APP_ROOT_DIR', dirname(dirname(dirname(__FILE__))));
define('DIR_SEP', DIRECTORY_SEPARATOR);
define('APP_LIB_DIR', APP_ROOT_DIR . DIR_SEP . 'library');

error_reporting(E_ALL);
set_include_path(APP_LIB_DIR . PATH_SEPARATOR . get_include_path());
date_default_timezone_set('Asia/Tokyo');

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

set_error_handler(array('My_ErrorHandler', 'userErrorHandler'));

$date = new Zend_Date();

89:86
08/04/26 04:43:14
>>88

今気がつきましたが、set_error_handlerの前でnew Zend_Date()だと、例外が飛んできません(正常にインスタンス生成できる)

90:nobodyさん
08/04/26 04:48:52
set_error_handlerの第二引数何それ?

91:86
08/04/26 04:53:47
>>90
第一引数の配列の要素[0]がクラス名で、要素[1]がメソッド名です。

第二引数は指定していません。

92:86
08/04/26 05:24:31
>>91
すみません。自己解決しました。

初めの説明がちょっとおかしかったりしてるので補足します。

Zend_DateObjectの1016行目で、(ここ最初にちゃんといえてなかったです)

if (!@timezone_open($zone)) {

となっていますが、このZend_Dateのコンストラクタの第一引数がnullだと、
上記の$zoneがintのタイムスタンプで入ってきます。
そうすると、timezone_open()はタイムゾーン文字列が渡されることを期待しているので、
E_WARNINGを発しますが、@で抑制されます。(通常は。)

しかし、独自のエラーハンドラをすべてのエラーレベルに対して設定していて、
そのハンドラの中で@付きのエラー(ハンドラ内でのerror_reporting()の戻り値が0の場合)に対して適切な処理を行っていないと、
本来の@によるエラー抑制は無視され、処理が停止します。

このためnew Zend_Date(パラメータなし)がこけていました。

これは、Zend_Loaderの160行目でもおきます。。
(独自エラーハンドラのせいで@fopen()の@が効かないので)

E_WARNINGに対しても独自のエラーハンドラを適用している場合は、ZFでは色々と気をつけないといけないみたいです。

以上、お騒がせしました。


93:nobodyさん
08/04/26 13:15:49
自前のエラーハンドラ設定するならハンドラ側で
error_reportingのチェックは必須
ZFとかに限ったことじゃないぜ

94:nobodyさん
08/04/26 21:29:22
>>92
Zend_Loaderの160行目の fopenの@は いろいろな問題を引き起こしているわけだけれど、、
さまざまなモジュールとの絡み合っている問題が多くて、どうしたものか悩んでます
URLリンク(framework.zend.com)


95:92
08/04/27 06:13:29
>>94
これじゃだめなんですかね?
自分は↓みたいにしてます。(Zend_Loaderそのものを)

// if (!$fh = @fopen($filename, 'r', true)) {
// return false;
// }
// return true;

add> clearstatcache();
add>
add> if ( is_readable($filename) ) {
add> return true;
add> }
add> $include_path = get_include_path();
add> $path_list = explode(PATH_SEPARATOR, $include_path);
add>
add> foreach ( $path_list as $path ) {
add> $fullpath = $path . DIRECTORY_SEPARATOR . $filename;
add>
add> if ( is_readable($fullpath) ) {
add> return true;
add> break;
add> }
add> }
add> return false;


96:94
08/04/27 16:07:42
>>95
fopenはinclude_pathを考慮してファイル取得できるのに、file_existsはinclude_pathを考慮できないのがデメリットなのだそうです

97:nobodyさん
08/04/28 10:22:32 zm3zzhzx
マヌアルでプリント用のページ出力してくれ

98:nobodyさん
08/04/30 13:59:47
数字で始まるActionって使えますか?

URLリンク(FQDN)

Actionメソッドの定義の仕方がわからない・・・orz


99:nobodyさん
08/04/30 14:48:12
idという意味でもなくて単に数字のURLにしたいなら
actionメソッド名は適当につけてroutingで変えればいい

100:nobodyさん
08/04/30 17:55:35
Zend_Db_Statement::fetch() の offset指定が動作しないのは仕様なのか・・・?
アダプタはPdo_Pgsql。



101:nobodyさん
08/04/30 18:12:00
中身見てみれば?

102:nobodyさん
08/04/30 18:27:25
中身見たんだけど、原因が特定出来ないんよ。


 Zend_Db_Statement_Pdo::fetch() が、 PDOStatement::fetch() のラッパーになっていて、

 PDOStatement::fetch()のリファレンスには
 「スクロール可能なカーソルの場合にoffset指定が扱える」的な事が書かれているのです。

 スクロール可能なカーソルを要求するには、
 PDOStatement::prepare() の時点でdriver_optionsを渡す必要があるっぽいのですが、

 Zend_Db_Adapter::prepare() 経由でdriver_optionsを渡す事が出来なくて・・・

結果的にoffsetが使えなくなってるのかなと、思った次第。
うーん・・・

103:nobodyさん
08/04/30 18:57:56
もしかしてPDOのこのバグが修正されてないとかですか('A`
URLリンク(bugs.php.net)

104:nobodyさん
08/05/01 10:57:14
When using PDO for simple query for PostgreSQL(8.0.3) and MySQL(5.0.18)

cannot acquire it though I want to acquire the offset of the specified
cursor.
and, fetch() is next offset acquired when acquiring it.

ってかいてあるね。

105:nobodyさん
08/05/01 19:46:46
なんかドコモとかauの最初や最後に.や.が連続するRFC違反のメールアドレスに対応するために

Zend/Validate/EmailAddress.php
の216のatextに\x2eを追加したらOKだが、本末転倒か。

106:nobodyさん
08/05/01 20:30:50
ルール違反を甘やかしてはいけない

107:nobodyさん
08/05/02 17:39:15
そんなもん弾いてしまえ

108:nobodyさん
08/05/02 23:15:40
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん

109:nobodyさん
08/05/03 00:45:54
せめて致命的バグを挙げてから言ってくれ

110:nobodyさん
08/05/03 13:53:26 K4MBJC9r
Zend Frameworkってセーフモードで動きますん?
CGIモードで動きますん?

111:nobodyさん
08/05/03 14:10:15
動きますん

112:nobodyさん
08/05/04 00:13:53 didjFSw2
そうなぬん?

113:nobodyさん
08/05/04 07:48:44
Zend_Db::query($sql, $param);

を使った時に、
プレースホルダに入れる値をクォートしたくないんだけど、
Zend_Db_Expr型にしてもクォートされてしまうのは仕様?
回避策はある?

例)
$param => array('param' => new Zend_Db_Expr('true'));
 $db->query("SELECT * FROM hoge WHERE :param", $param);

 生成されるクエリ
 SELECT * FROM hoge WHERE 'true';

 期待するクエリ
 SELECT * FROM hoge WHERE true;




114:nobodyさん
08/05/04 17:48:43
クォートしたくないならプレースホルダ使わない。

Zend_Dbのプレースホルダは確か、プレースホルダに対応して無いDBでも
プレースホルダがあるかのごとく使えるように作られてるから、
その関係でクォート掛かるんじゃないかな。

115:nobodyさん
08/05/07 03:55:17
プレースホルダ対応してないDBって何があるの?

116:nobodyさん
08/05/07 05:02:51
対応云々じゃなくいろんなDBを適当に同じ文法に押し込んだ結果

117:nobodyさん
08/05/07 14:14:51
viewにphp書くとき、ショートタグ使ってる?

<?php echo $this->layout()->content ?>
これだとなんか綺麗じゃないんだよね

ショートタグあんまり使いたくないけど。

118:nobodyさん
08/05/07 17:30:34
smarty使ってる

119:nobodyさん
08/05/07 17:39:51
smartyなんて乞食が使うもの

120:nobodyさん
08/05/07 20:36:27
乞食ってw

smartyっていうかテンプレートエンジンあんまり使いたくない

121:nobodyさん
08/05/07 20:55:26
なぜに?

122:nobodyさん
08/05/07 21:26:31
テンプレートエンジン使ったら負けだ

123:nobodyさん
08/05/07 23:39:38
そう思っていた時期が僕にもありました。

Smarty使って2、3回仕事をこなせば、もうSmarty無しでは生きられない体になるぜ。
今ではテンプレートエンジン否定派は、ただの初心者にしか思えないww

124:nobodyさん
08/05/07 23:58:04
ethnaでsmarty使ったら便利だったけどね。
なんとなくだ。

125:nobodyさん
08/05/08 00:05:51
Smartyも好きなんだけど、結局Zend_View拡張して使ってる

126:nobodyさん
08/05/08 00:30:38
マクロ作っといてボタン押すだけ。

<php echo $hoge; ?>とか一々毎回同じ様な事を長く書くのが嫌なんだろうけど
同じ様な事を書くって事は、自動化できるっつー事でもある。

127:nobodyさん
08/05/08 01:53:40
>>123
禿道
それ以前にクラスとか使うのを躊躇ってた時期がありました


128:nobodyさん
08/05/08 08:15:42
>>126
マクロで自動化とか初心者の発想すぎるだろw
「やっぱり使えねぇわw」とあざ笑う目的でもいいから、一度Smartyあたり使ってみなされ。

デメリットは、学習コストくらいだよ。

129:nobodyさん
08/05/08 10:11:06
こちらでどうぞ

【PHP】 Smarty 隔離スレ 【テンプレート】
スレリンク(php板)

130:nobodyさん
08/05/08 14:36:40
bootstrapってindex.phpのこと?

index.phpに
require '../application/bootstrap.php'

ってのを見かけるんだけど、DocumentRootから見えないようにしてるだけでindexに書いても同じこと?

131:nobodyさん
08/05/08 14:52:24
>>130
ですね

132:nobodyさん
08/05/08 18:42:27
>>130
applicationrディレクトリ内で全ての処理を完結出来る。
bootstrap.phpを基点にファイルパスを管理しておけば、
設置場所が変わったときに最小限の修正で済む。

というのがメリットなんじゃないかな。



133:nobodyさん
08/05/08 23:32:34 936RkXZF
Smartyのページキャッシュ使いたくないの?

134:nobodyさん
08/05/08 23:33:19
ルーターが多機能なのはわかるんだけども、直感的とは程遠いなぁ・・・
そんなトリッキーなルーティングなんてする人少ないんだから、
FWとしては解りやすくシンプルな実装でいい気がする。


135:nobodyさん
08/05/08 23:53:15
別に言う程Routerややこしくない
Routerのモジュール機能は使わなくて良い
RouteのStaticとRegexも使わなくて良い

136:nobodyさん
08/05/09 09:21:36
>>133
意味不明。

137:nobodyさん
08/05/09 16:00:24
Zend_Layoutの $this->layout()->content とか $this->layout->navの使い方がよくわからないんだけど、
navとかってどこで定義されてるの?

138:nobodyさん
08/05/09 16:18:50
>>137
Zend_Layoutの中身を見ればよかろう


139:nobodyさん
08/05/09 16:20:48
>>138
navとかcontentとか探したけど見つからないのよ

140:137
08/05/09 16:37:49
ん?
最初からあるのはcontentだけで、navとかsidebarとかはコントローラーで
$response = $this->getResponse();
$response->insert('sidebar', $this->view->render('sidebar.phtml'));
とかしないといけないのか?


141:nobodyさん
08/05/09 16:38:17
function __get() {

みたいなところ見てみたら?
多分そこらへん

142:nobodyさん
08/05/10 13:15:55 vET5c+ho
すみません、質問です
ZendFrameworkに最近興味をもったんですが、これを使ってできるというPDFの出力は

・完全に日本語対応していますか?
・背景(テンプレートのJPGとか)と表(プログラムに応じて出力)を組み合わせて
 書き出すことはできますか?
・どこかの企業のロゴが刷り込まれたりしませんか?

以上3点について教えて欲しいです
もしこの機能を使っている方がいたら、困ってる点などあれば教えてください。
自分でも調べたんですが、本自体少ないし良くわかりませんでした お願いします

143:nobodyさん
08/05/10 13:26:04
>>142
ZendFreamwork1.5で日本語対応しました
言ってることはたぶん実現できるはずです
どこかの企業ロゴが云々のことは知りません
でもそんなの出てたら誰も使わないよねw


144:nobodyさん
08/05/10 13:29:59 vET5c+ho
>>143
おお、お返事ありがとうございます すごく使いたくなりましたw
pearでPDF書き出す機能があって使おうと思ってたんですが、
そのモジュール作った企業のロゴが入って参ってたんです
ほんとにありがとうございました!

145:nobodyさん
08/05/10 13:47:19
編集すればそんなロゴなんて消せるんじゃないか?

146:nobodyさん
08/05/10 16:28:30
今日さむいよ
ゴールデンウィークは30度近くいったと思ったら。

147:nobodyさん
08/05/11 02:21:42
ホントなんでこんな寒いの。。
しかし久々にさわったらまた随分ポリシー変わったね。毎回思うが。
>132
開発している内にindex.php上のbootstrapの記述が結局数十行とかになって、
超・汚くなるし危ないんだよね。
それに対応するbootstrap.phpが推奨になるまで2年(もっと?)か。。。

148:nobodyさん
08/05/13 05:09:01
1ヶ月使った感想。

シンプルな実装なので基底クラス郡としては強力だが、制作効率に反映されるまで時間がかかる印象。
フレームワークを実装する為のフレームワーク/ライブラリ郡って感じかねぇ・・・
現時点ではマルチバイト系全般の処理が甘いのが痛い。

総評:今後に期待。コーディングスタイルは好みなので支持して行きたい。

149:nobodyさん
08/05/13 12:21:40
マルチバイト処理ってvalidateぐらいじゃね?

150:nobodyさん
08/05/13 21:26:22
MailとFilterとか

151:nobodyさん
08/05/13 21:38:51
俺もバリデータを拡張すれば良いんだろうと思ってやろうとしたけど
やり方がわからねぇ。
validateインクルードしないでmb関数直接書く。

全部のクラスに凄い親切にコメント書かれまくってるけど、
書かれすぎてて読みきれない。
コードの2,3倍コメントある気がする。

152:nobodyさん
08/05/13 23:21:24
バリデータを拡張って既存の奴の組み合わせでは不可能な時の独自バリデートってこと?
マニュアルとコード見ても分かんないの?


153:nobodyさん
08/05/13 23:25:50
カスタマイズ性のためにしょうもないところで
複雑になってたり設定が多かったり
ラッパーやビルトインの上書きを書いてる時点で
なんかしんどくなってくるねZFは

色々できるのは有り難いけど
デフォルトで一通り全部フルスタックな状態にしておいてくれて
そこからカスタマイズしたいやつは
デフォルトを取り除いてカスタマイズしていく形にして欲しいよ

デフォルトではとりあえず色々なもん自前で乗せてかないと
そこかしこで何かしら足りないっつーのは面倒過ぎる
エラーハンドラプラグインがデフォルトでついてるのに
そのエラーハンドラは自前で書かなきゃエラーをハンドルしないのかよ
おまえはどんだけツンデレなんだとしばき倒したい

マシューちゃんもうZend_Controllerはオナニーの域だよ
素直に作ってくれよあんた綺麗なコード書くんだからさ

全土フレームワークのコードは大好きだけど
実用的さの欠けっぷりは半端ないよ
ここを見てるPHPのエロい人がいたらそう伝えてよ
僕はこのオナニーコードの断片で昇天して
にちゃんねるに便所の落書きする事くらいしかできないよ

I love Zend Framwork!! I love PHP!!

154:nobodyさん
08/05/13 23:36:00
こんなコードがきれいって言うなら
俺のコード見たらお漏らしするな

155:nobodyさん
08/05/14 01:27:35
>>153
デフォルトでフル装備しててイランものを後から取り除くのも面倒でね?

でもジェネレータみたいなのは欲しいな

156:nobodyさん
08/05/14 07:43:09
>>154
見せて

157:nobodyさん
08/05/14 17:07:05 fprIBGJx
print "HELLO WORLD";

158:nobodyさん
08/05/14 18:48:31 /iZUMp8N
>>157
死んだほうがいい

159:nobodyさん
08/05/14 22:46:18
>>153
同意。
Zend_Dbの足りなさ過ぎにはずっこけたというかPDOで十分というか中途半端なPDOラッパーなぞいらん。

160:nobodyさん
08/05/14 23:20:22
ORマッパーってZend_Db_Tableなの?

161:nobodyさん
08/05/14 23:55:26
ORMっぽいORMは無い

162:nobodyさん
08/05/14 23:58:10
SQLを書けってことか

163:nobodyさん
08/05/15 19:02:20
ZActiveRecordの復活はまだですか?

164:nobodyさん
08/05/15 19:14:46
php 5.3.0がlate static bindingsと__callStatic()が
ちゃんと実装されてリリースされたら
ActiveRecordパターンでまともな実装のORMが出ると思う

165:nobodyさん
08/05/15 19:55:57
URLリンク(bugs.php.net)
みたいにごちゃごちゃ言ってねーで、5.0で実装しとけっつー話だわな。

166:nobodyさん
08/05/15 20:29:48
namespaceもそうだな
結局5.0のリリースで見送ったもののツケが回ってきてる感じだな
その辺りとクロージャのパッチさっさと取り入れてくれりゃ
各FWも随分すっきりした実装になりそうなのにな
今のPHPの実装でFW書く人はほんとマゾ過ぎる

167:nobodyさん
08/05/16 11:18:11
self関係はリリースしてしまった以上、直すに直せない状況なんだろうね…



168:nobodyさん
08/05/17 01:41:30
>>167
selfだめなの?

169:nobodyさん
08/05/17 01:58:07
1.5.2 リリース。

170:nobodyさん
08/05/17 03:56:33
どう変わったんだ

171:nobodyさん
08/05/17 13:25:41
しーん

172:nobodyさん
08/05/17 13:28:53
URLリンク(framework.zend.com)

173:nobodyさん
08/05/18 20:51:12
バグフィックスメインか

174:nobodyさん
08/05/21 02:55:52
zendが身売りってどんだけー

175:nobodyさん
08/05/21 05:22:02
身売りしたらこんなオナニーフレームワークは何の意味もなくなる

176:nobodyさん
08/05/21 14:24:36
PHPオタワ

177:nobodyさん
08/05/21 14:31:27 LYIqFUi6
PHP房涙目wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

178:nobodyさん
08/05/21 16:30:45
アプリケーション内のHTMLでヘッドとフッターがある程度決まっていて
毎回書くのがめんどくさいです。
なのであらかじめ2つのphtmlファイル(ヘッドとフッター)を用意してページをrenderする前後に呼び出したいのですがどうすればいいでしょうか?

$view = new Zend_View();
echo $view->render("/var/hoge/views/design/top.phtml");
echo $view->render("/var/hoge/views/index/hoge.phtml");
echo $view->render("/var/hoge/views/design/footer.phtml");

こんな書き方でできるかと思ったのですがエラーになります。

179:nobodyさん
08/05/21 20:13:42
zend_layoutで。

180:nobodyさん
08/05/22 00:28:27
まぁ実際身売りしてもzendframework自体はなんもかわらない気がする。

microsoftはやだな。オラクルも

181:nobodyさん
08/05/22 00:38:39
ZFは野に放っても生きていけると思うけど
PHP本体はな……
オープンソースとはいえ、≒Zendな訳でしょ

182:nobodyさん
08/05/22 01:10:22
PHP6 → Microsoft PHP.NET
Zend時代よりも大幅な開発力アップになったりしてw

183:nobodyさん
08/05/22 01:20:40
CLI上でgoto実装された言語二つ目になる訳ですね、判ります。

184:nobodyさん
08/05/22 01:22:23
どうせ買われるのならRasmusがいるYahoo!の方がいいなw

185:nobodyさん
08/05/22 01:26:46
>>181
「Zend公式」という強みしかない糞FWが生き残るわけねーじゃん
「Zend公式」の印籠をもってしてもメインストリームになってないし

186:nobodyさん
08/05/22 01:35:43
公式ゆえの弱み(or臆病さ)だろうね
ヘタに主流作れないのでフレームワークのためのフレームワーク的なモンしか提案できない

言語本体から切り離した地盤固めの試みなんじゃねえの

187:nobodyさん
08/05/22 01:51:36
Zend自体ブランド力も開発力も乏しいんだから、
PHP&ZendFrameworkごとMSとかに買収された方がPHPの発展になるんじゃねーの?

Visual PHP.net とか普通に期待しちゃう。

188:nobodyさん
08/05/22 01:56:06
msが買ったらlinuxで動かなくなるじゃん
そしたら事実上脂肪

189:nobodyさん
08/05/22 01:56:49
>>184
元ネタによるとyahooに買われても、いきつく先はMSだけどなw

URLリンク(jp.techcrunch.com)

190:nobodyさん
08/05/22 03:19:12
>>189
どうせならyahooがいいけど、MSに買われたら意味ないしなぁw

じゃあSun?

191:nobodyさん
08/05/22 03:20:08
yahooがgoogleと組めばいいんだ
googleはpythonだろうけど

192:nobodyさん
08/05/22 03:25:14
珍しく伸びるな

193:nobodyさん
08/05/22 03:41:32
IBMもSunも脛に傷あるような企業だからなぁw

194:nobodyさん
08/05/22 06:49:57
有り余る金でgoogleが買ってくれたら
みんなが幸せになるとは思うけどな

195:nobodyさん
08/05/22 10:41:11
>>191
>>194
PythonとPHPが統合されたら強力なツールになりますね

196:nobodyさん
08/05/22 17:25:29
pythonとphpでパイビーですね

197:nobodyさん
08/05/22 17:25:59
パイエッチにするとさらに卑猥

198:nobodyさん
08/05/22 19:55:35 3xiPTBYp
モジュールを以下の形式のようにネストする事は可能ですか?
/module1/module2/controller/action/

setControllerDirectory()ではモジュール名に対してコントローラディレクトリを指定すると思うので、
ネストする場合には
"module1"=>"/path/to/controller"
とするしかできないと思います。
ちなみに無謀なチャレンジをしてみましたが
"module1/module2"=>"/path/to/controller"
Module2Controllerを読もうとしてエラーになってしまったようです。

当方女子高生です。
よろしくお願いします。


199:nobodyさん
08/05/22 20:44:04
上場企業社員ですが、モジュールをネストする意味がわかりません。

200:nobodyさん
08/05/22 21:35:28
>>198
無職だけど、モジュール自体をネストしなくても
/foo/bar/:controller/:action で module1 のディレクトリに対してマッピングすれば良い
Routerのモジュール機能でどうこうするよりも
routerのマッピングを変えた方がわかりやすいし変更も楽

201:nobodyさん
08/05/22 21:56:47
本気でモジュールをネストする意味がわかりません。

202:nobodyさん
08/05/23 00:08:35
>>199
上場企業社員とかいらんだろw

203:nobodyさん
08/05/23 00:56:14
上場企業下請け派遣社員ですが彼女がいません。

204:198
08/05/23 02:08:23
すいません。言い方が悪かったみたいです。
モジュールをネストする必要と言うよりは、
クライアントからのパスの指定があったからという理由です。
マッピングを設定できるというのは知りませんでした。
>>200の方のいうようにやってみたいと思います。

どうもありがとうございました。

実は女子高生と言うのは釣りです。
どうもすいませんでした。


205:nobodyさん
08/05/23 03:07:53
URIを好きなように設定したい!

モジュールをネストしよう!

って発想になるのがなかなかエクセレントだな。

206:nobodyさん
08/05/23 03:08:05
なんだと

207:nobodyさん
08/05/23 03:32:17
女子高生ワロタwww

208:nobodyさん
08/05/23 04:03:46
「女子高生」で釣られるわけねーだろヴォケ

209:nobodyさん
08/05/23 04:19:20
お前ら足下みられすぎワロタ

210:nobodyさん
08/05/23 12:21:01
$this->view->renderで絶対パスを指定するとエラーになります。
相対パスだと意図したとおり表示されますが、汎用性が低くなってしまいます。

define('ROOT_DIR',dirname(dirname(__FILE__))."/");
$this->view->render(ROOT_DIR."apps/layouts/template.phtml");
エラーになる

何かいい方法はないでしょうか?

211:nobodyさん
08/05/23 12:39:44
echo ROOT_DIR."apps/layouts/template.phtml";

212:nobodyさん
08/05/23 12:49:52
>>210
テンプレートがまとまって入っているスクリプトパスを
viewに設定してそのスクリプトパスからの相対パスを指定して
テンプレートを読み込んで使うっていうものだから
絶対パスで扱えないから汎用性が低いってのはちょっと違和感が

まあ例外的に絶対パスで指定したい時もあるし
絶対パスでそのまま扱えるオプションやメソッドがあってもいいとは思うよ
(railsのactionviewにもそういうオプションはある)
それはZend_View_Abstractを継承するなりして
それ用のメソッドなりオプションを用意してやれば良いと思う

213:210
08/05/23 14:49:52
>>212さん
>テンプレートがまとまって入っているスクリプトパスをviewに設定してそのスクリプトパスからの相対パス
たとえば以下のように設定して
Zend_layout::startMvc(array('layoutPath'=>'/apps/layouts'));
/apps/layoutsからの相対パスで設定可能なら管理上、便利なのですが、(個人的に、ですが)
setControllerDirectory('apps/controllers')
で設定したファイルパスからの相対パスのようです。
レイアウトはレイアウトで管理したいのでなんか気持ち悪いです。
'layoutPath'で管理する方法はないでしょうか?

214:nobodyさん
08/05/23 19:15:50
Zend_Layoutは使ったことないので何ともいえないけど、
そのlayoutPathで指定してる '/apps/layouts' っていう
絶対パスはちゃんと合ってる?ルート直下になってるけど

そのlayoutPathから相対で指定できなかったら
個人的にも何もlayoutPath設定してる意味がないと思うんだけど、、、
少なくともcontroller directoryからの相対指定ってのは明らかにおかしいし
自分なら何か設定が間違ってると考えるけど

215:nobodyさん
08/05/23 22:57:34
完璧な仕事しやがって・・・

216:nobodyさん
08/05/24 01:21:29
次のバージョンは1.6ですよ

217:nobodyさん
08/05/27 00:22:51
出力前にビューと変数全体の文字コードを変えたいのですが、どんな方法があるでしょうか?
smartyでいうところのprefilterみたいな機能です。


218:nobodyさん
08/05/27 11:53:14
URLのカスタマイズは可能でしょうか?

example.com/index/hoge/id/12345/
だと長すぎるので

example.com/id12345/

example.com/12345/
でできればと思います。

内部的に第二パラメータ(id([0-9]+),([0-9]+))がある場合は
index/hoge/id/12345/として扱うようにしたいのです。


219:nobodyさん
08/05/27 12:22:10
つ rewrite rule

220:nobodyさん
08/05/27 12:25:14
routerじゃないのか?

221:nobodyさん
08/05/27 13:01:28
ZF的にはrouterが正攻法だろうね。
個人的にrouterは冗長で読みにくいので、標準のルーティング以外はmod_rewriteを使っている。

>>218
普通にやればスンナリ出来る事なのに、
詳細を調べないと実現出来ないような実装な時点で、router使うやつはただのマゾ。


222:nobodyさん
08/05/27 13:26:50
こういう場合って router 使うのね。
俺はErrorControllerいじって実装してたわ。

223:217
08/05/27 17:42:54
出力ファイルの文字コードのみ変換したいのですができないでしょうか?

これができないと携帯用の出力ができません、、、
Zend Frameworkでは携帯サイトは作れないですか?
お願いいたしますm(_ _)m

224:nobodyさん
08/05/27 18:04:06
ZendFrameworkにその機能が無いなら、拡張実装すればいいだけじゃないの?
自分はSmarty+ZFで対応してるけど。


>>出力ファイルの文字コードのみ変換したいのですができないでしょうか?
ZFのView実装見てないから何とも言えないけど、ob_start()でバッファリングして、最後に一括変換すればいけない?

225:nobodyさん
08/05/28 15:54:55 GUHYGw3g
RewriteRouter使えば簡単だよ

226:nobodyさん
08/05/28 19:28:44
ていうかFW使っててRouterすらまともに使えない奴ってなんなのwww

227:nobodyさん
08/05/28 19:34:29
なんのためのFWだって話だww

228:nobodyさん
08/05/28 22:32:55
ZFに限って言えば、Router使う奴はマゾとしか思えない。
記述と動作が追いにくいので、FWの利点である「FWを知っていれば、他人のコードも理解しやすい」というメリットが薄い上に、
シンプルな動作を実装するのに、複雑なコードが必要になるとかww

229:nobodyさん
08/05/28 22:41:53
Routerから追わないといけない必要に駆られる時点でいろいろ間違ってる

230:nobodyさん
08/05/29 01:54:23
Routerに限らず、ZFをどこまで信用できるかandどこまで
ZFの想定に近いことをやろうとしているかの見極めどころの話だな

231:nobodyさん
08/05/29 02:03:36
routerつかわない人って
未だにだっさいURLなの?

232:nobodyさん
08/05/29 02:29:11
URLなんてRouter以外でどーにでもなる。

routerの冗長でだっさいコーディングに疑問を持たない人ってなんなの?


233:nobodyさん
08/05/29 02:32:27
mod_rewriteで解決ですかww

234:nobodyさん
08/05/29 02:40:47
>>233の知識が乏しいのだけは解った。

235:nobodyさん
08/05/29 02:57:54
ほーう
では他にどんなソリューションがあるのか教えて頂けますか?
物知りさん

236:nobodyさん
08/05/29 13:26:28
mod_rewriteでって言ってる人がいるけど
それってデフォルトのルーティング以外のを
デフォルトルーティングに沿うように変換するってこと?
それは明らかに無駄だし、Router無しだと
アクションからURLを解決するような逆変換もできない

URLをどうこうだけじゃなく
URLとコントローラをマッピングすることがRouterの役目

Routerの設定が冗長ってのも微妙
実際のところRewriteRouterを使って
デフォルトルーティング以外を追加するくらいのもんだと思うんだけど
あれで冗長ならRouter的な概念を持つもの何も使えないんじゃない?
設定が冗長だと感じるならsymfonyみたいに
マッピングをyamlで設定できるようにラップするといい

まあそれでも冗長と感じてよりシンプルな方法があるなら
俺も正直教えて欲しい

237:nobodyさん
08/05/29 13:32:19
Routerで /ctrl/action/param/param/param/ ...
とするための設定教えちくりくり

238:nobodyさん
08/05/29 13:40:21
>>237
URLリンク(framework.zend.com)


239:nobodyさん
08/05/29 20:54:43
>>236
まったくだ
往復で変換できなきゃ意味ないよな

240:nobodyさん
08/06/01 07:16:58
ルーターでデフォルトモジュール名を省略する事って可能ですか?
以下のように、設定したいのですがどう書いてよいのやら・・・

/test → IndexController::TestAction();
/test/ → TestController::IndexAction();

241:nobodyさん
08/06/02 01:35:52 dJEt55md
可能

242:nobodyさん
08/06/02 03:02:39
>>241
教えてエロイ人

243:nobodyさん
08/06/02 03:05:27
デフォルトactionを設定したらいいんじゃね
zend使ったことないからしらんけど

244:nobodyさん
08/06/02 03:33:35
>>243
デフォルトでは

/module
/module/
/module/action

と認識されてしまうんですよ。
これを

/action
/module/
/module/action

と設定したいのですお。

245:nobodyさん
08/06/02 03:40:15
それは個別にルータに指定しなきゃだめだろう
/hoge
と指定した時に
/default/hoge
に変換する等、ひとつひとつ設定するのが普通

246:nobodyさん
08/06/02 03:45:27
なるほど個別設定は試してなかったので、試してみます。

247:nobodyさん
08/06/12 14:02:23 Mes6XuGv
Zend_Http_Responseのfactoryメソッドってどこにあるの?

248:nobodyさん
08/06/13 18:48:28 /Epk/r4F
Zend_Http_Responseのfactoryメソッドってどこにあるの?

249:nobodyさん
08/06/13 19:54:57
ここではないどこかだよ馬鹿野郎

250:nobodyさん
08/06/13 20:12:31
分かんないんならレスしないでくれる?

251:nobodyさん
08/06/14 04:30:28
「factoryメソッドはある」と認識してるのに、どこにあるかワカラナイとか意味がわからない。

なぜ「ある」と思ったんだい?

252:nobodyさん
08/06/14 04:37:28
だよな
そもそもfactoryパターンの意味も分かってないっぽい

253:nobodyさん
08/06/14 04:46:12
もしやソースのファイル名と行を聞いているのでは
Grepすりゃ一発だろって話だが

254:nobodyさん
08/06/14 11:33:00
質問です。標準のルーターだと
/default/index/index
/index/index
/index
/
全部同じアクションが呼ばれますよね。
SEO的に良くなかったり相対パスで書いた画像が表示できなかったりするから、
どれか一つ以外のもの (この場合は/) 以外はリダイレクトさせるか、404にしたいのですが、
そんなことできますか?

255:nobodyさん
08/06/14 12:18:09
$front->getRouter()->removeDefaultRoutes();

256:nobodyさん
08/06/15 01:23:44
>>255
どもです。しかしそれだと、/が使えなくなって index/index と書かなくちゃいけなくなるんじゃないですか?
逆が良いのですが。

257:nobodyさん
08/06/15 01:59:21
だったらそう設定すればいいだろう。

258:nobodyさん
08/06/15 02:13:16
removeDefaultRoutes()してから、
/ に index/index を当てればいい。

index/indexなんてかっこわるいのはイラン

259:nobodyさん
08/06/15 21:57:49
普通DefaultRoutesは消さんだろ
なんのためのデフォルトなのか考えろ

>>254
不要なURLをリダイレクト or 404用のアクションにマッピングするだけ

260:nobodyさん
08/06/17 02:33:00
やっぱりみんなルーターの扱いがよくわからないよね
>>259もいってる通りリダイレクトなんかが一番楽なのかもね
ただGETで変数渡したい時だけルーティングしたいような気もする


261:nobodyさん
08/06/25 12:10:06
連鯖がドキュメントルート同階層にディレクトリが作れないもんで、ZFのライブラリをドキュメントルート以下に配置するしか方法がないんだけど、こういう場合ってcgi-binに配置した方がいいかな? それか適当なディレクトリに入れてアクセス制限かける方がいいかな?



262:nobodyさん
08/06/25 12:13:09
なんでcgi-binww

263:nobodyさん
08/06/25 15:10:01
warosu

264:nobodyさん
08/06/29 09:04:08
Zend_Authとか使ってる人いる?
設計思想はわからんでもないが、そのままじゃ使えない上に、カスタマイズが面倒で、独自実装する方が早い気がしてならない。

使った場合のメリットを教えてエライ人。


265:nobodyさん
08/06/29 10:01:33
俺はそれよりもZend_Aclのメリットがわからんですたい

266:nobodyさん
08/06/29 14:15:24
>>264->>265
AuthもAclもセットで使ってる
メリットは単純だし実装が楽だから
カスタマイズってそんなにするところあるの?


267:nobodyさん
08/06/29 19:48:09
公式のサンプルやネットに転がってるサンプルだと、
単純で実装が楽ってのが実感出来ないなぁ・・・

機能としては単純なのに、少々冗長で、覚える事が多いなぁ・・・と感じてしまう。

268:nobodyさん
08/06/29 20:05:20
じゃ実際に使って確かめろよ頭悪いの?

269:nobodyさん
08/06/29 20:55:07
使うに至るものなのかって質問が理解出来ない程頭悪いの?

270:nobodyさん
08/06/29 22:15:27
それを判断する最短解は、簡単なサンプルで使ってみるこったろ
Acl/Auth程度、他人(それも2chの名無し)に良い悪い論せたところで遠回りよ

俺の私見では、汎用性整えつつ最低限の道具であろうとしたらこうなるね、という感じだ
俺がこう述べたところで君がそうかと判断するのは早計だ
何人か反論してきて初めて判断基準としての価値があるだろうな
その間にざっくり試して判断すりゃ30分も掛からんだろうよ

271:nobodyさん
08/06/29 23:05:45
>>269
サンプルで実感できないかつ実際にも使う気がしない面倒臭がりなら使わなきゃいいだろ何のためにこのスレにいるの
ケチだけつけて何がしたいの?ネガキャン?つかむしろなんのために生きてるの


272:nobodyさん
08/06/29 23:10:33
まぁそりゃそうだが・・・

汎用性とのトレードオフなんだろうけど、
Authは機能の割に実装量と学習コストが高いと感じたのさ。
率先して使う価値はあるのかなと。恩恵はあるのかなと。

チーム内のコード共有の為にZFを導入した経緯もあるので、
他の人の意見を聞きつつ、使うか避けるかを判断したいんです。

273:nobodyさん
08/06/29 23:14:49
>>271
そうムキになるなよw
他のコンポーネントは使ってるし、ZFは重宝してるよ。

274:nobodyさん
08/06/30 02:36:42
>>271
何か嫌なことでもあったのww


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch