ついに立った。 来るべき時が来た。 その名は勇者「Zend Framework」 君は生き残ることができるか!?
何気に公式サイトを訪れたら1.0.4になってた。 ほんの一部ZF1.0.3本体を弄ったんだよなぁ、どこだったか思い出せん...orz 差分取るしかないか。
1.5RCも出てるぜ
Zend_Formしてみようと思うんだけど、 これってZend_Viewを使うこと限定なのか? Zend_View使わずSmarty使ってるんだけど、そのままrenderできないのかな
ちなみにソース require_once 'Zend/Form.php'; $form = new Zend_Form; $form->setAction('/')->setMethod('post'); $form->addElement('text', 'name'); echo $form->render(); 出力「error」
8 :
3 :2008/03/07(金) 01:17:52 ID:???
>>7 ん? ZFを自分のリポジトリにつっこんで差分取ったり管理しろってことかな?
弄ったのはどこかの正規表現だったかな。
まぁupdateの度にdiffで確認するよりSubversionにつっこんだ方が楽だろうけど、
で、実際はどうする? 俺はZF1.0.3で初めて使ったんだけど、
1.0.3をsvnにつっこんで、branch分けしてそこに俺々修正したものをつっこむ。
1.0.4をtrunkでupdateしてbranch側でmergeって感じになるのかな。
フレームワークのソースは触ったら後々面倒だろ
10 :
3 :2008/03/07(金) 04:59:24 ID:???
>>9 そう、俺もそう思う。
弄ったのはバグだろうと思われるところだけ。
どうせそのうち修正されるだろうと思ってたから
ちょっと悩んだんだけど、継承せずに直で弄った。
確かググったら出てくる有名どころのバグだったと思うよ。
だから、修正箇所をちゃんと控えてupdateしたときに確認すればいい程度なんだろうけど、
ZFを初採用してバタバタしてたから控えてなかったのだ(´・ω・`)
メソッドの型がインタフェースと違うって話?
12 :
3 :2008/03/07(金) 08:55:10 ID:???
ゴメソ ちょっと混同してた。 有名どころって書いたのは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ファイルだけ。 **/
まあ普通はFW本体はリポジトリに入れないな なんとか自前で継承して挙動の変更できないか検討して 止むを得ず本体のコードを変更する場合は その該当ファイルのみコミットしておくかな、自分なら rubyは再定義しやすいから FWの一部分の挙動をちょろっとだけ変えるってのも楽なんだがな
またRubyか(呆
>>12 Zend_Mailの件はiconv_mime_encodeの対応待ち扱いなので、先はまだまだ長そう
framework.zend.com/issues/browse/ZF-1950
16 :
3 :2008/03/08(土) 01:56:10 ID:???
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の完成度がまだまだ 低いと言うことで納得して、逆にリポジトリを立てることによって、遠慮なしに弄っていけるから ある意味"すっきり"した感じがする。
FW本体をバージョンアップして自分の意図したように変更がかかった場合はいいけど、 自分の意図してないように変更がかかったらどうすんの? またFW本体をハックする? あと、FWがバージョンアップしたら自分のリポジトリで管理しているバージョンと マージするんよね?そっちの方が手間暇かかりそうな気がする。。。 まぁここらへんは人それぞれなんだろうけど。。。 俺はFW本体はいじらない派。
今日1.5RC2が出ますよ
19 :
3 :2008/03/08(土) 03:17:30 ID:???
>>17 もろに修正箇所が衝突したら手動マージしなきゃならないが、
でなければマージそのものはそんなに手間かからないんじゃ?
と思ってる。
本体を弄らず継承でが王道で、本体を弄ってしまうのは邪道だとは思う。
Zend_Mailのデフォルト文字コードなんてのは、継承で書き換えるのが
どう考えても普通。Smartyなんかも結構弄ったけど、基本的には
継承したり、新たなプラグインやフィルターを書いてた。
でもね... まぁ人柱気分でやってみるよ。
本体再書き換えしなきゃならんときも出てくるだろうけど、
そのうち、拡張は別だが修正は減ってくるだろうと願ってる。
(まだそんなに弄ってないけど、弄りたいところは他にもあったし)
FW使いながら、貧乏コードって言われそうだ(^^;
バグなら報告すればいいのに
バグならpatch書いて取り込んでもらえばいいだけじゃん
Zend内でphpで吐き出したものを 同じZendからfile_get_contentsで読み込めないの?
読み込めるんでない?
普通にできる
パスでも間違ってんじゃね?
1.5RC3キタ
hostsの設定が原因だったわ
ACLって基本的にコントローラ単位でかけるもの? 対象が違うアクション(管理者向けの編集機能やユーザ向けの閲覧機能)が混在してるコントローラ は別コントローラとして分けたほうがいいんだろうか
Zend Framework 1.5 が出たね。
出やがったか ウチが検証と移行を検討できるのはいつになることやら。。
1.5になってどれだけ使える感じなんだろう
ドキュメントがああああああああああ 全部英語おおおおおおおおおおおおお 書き換わってるうううううううううう m-takagi・・・がんばって・・・ください・・・応援してます・・・
ロケールファイルがぶっ壊れたのかなw 多分サイトリニューアル時の作業ミスだろうね。
日本語マニュアル回復した
1.5入れたらキャメルケースのアクション名が実行できなくなったんだけど仕様なの? [controller]/fooBar/ってリクエストのとき 以前はfooBarActionメソッドが呼ばれてたんだけど、foobarActionメソッドじゃないと呼んでくれなくなった。
36 :
nobodyさん :2008/03/25(火) 01:57:20 ID:gUsYdsCk
>>35 その辺は仕様変更された。
よく確認した上で、実装しる。
しょっちゅう仕様変更するフレームワークって何なの
40 :
nobodyさん :2008/03/25(火) 04:20:41 ID:gUsYdsCk
>>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)) {
である方がドキュメントのニュアンスに即しているのでは。
1.5.1か
changelogどこいった 何が修正されたんだ
45 :
nobodyさん :2008/03/31(月) 01:42:25 ID:DgX3Qd/t
今ZF初めていじってるんだけどZendControllerってどうなの? なんか使いにくい感じがするんだけど・・・ 独自のがいいのかね? それとも使ってれば慣れる? ZendController使ってる人 メリットデメリットあれば教えてぷりず!
使いにくいってどの辺が?
>>46 URIとかアプリとしてセキュリティ的にいいのか?とか
Directory構成とか考えるとなんだかなぁと
使ったことないからそんなもんだといわれればそれまで
かもしれませんが
ZF使ったオープンソースとか何かありませんかね?
URI->アクションのルーティングとかは昨今のFWならどれでも大差ないと思うけどな あとRequestObject、ReponseObjectあたりが割と使いやすくて気に入ってる
特にZend_Controllerが使いにくいと考えた事ないなぁ。 とても自分でルーティング周りやDispatcher周りを自分で一から実装する気にはなれんw ま、オレオレFWにZend Frameworkをライブラリの一部として使うのはそれはそれでアリだと思うけど。
Zend_Formの評判が気になる
51 :
nobodyさん :2008/04/01(火) 14:48:39 ID:7JV3dDHX
Zend、Cake、SymfonyならZendが一番わかりやすいと思うよ
わかりやすいっていうか 低機能なだけ・・
zendの範囲で済む安仕事にはむしろ有り難い ケーキや管弦楽とは別の見方でモノ提供してる感じだね FW作るための土台みたいな感じ
ZFで自社用FW作るとかならかなり良いと思う
管弦楽ってw symfonyって打ったほうが早いだろ
>>ZFで社内カスタムFW 既に結構作られてそう。
>>50 Zend_Form 使ってるけど、速度的に重い気がする。
だから Zend_Cache でキャッシュしてる。
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パスを通す。
・
ttp://wadslab.net/2008/03/zend_view_smarty/ を参考に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に↑の奴を書いています。
エラーがでるでもなく、真っ白な何もない画面が表示されてしまいます。
エラーが出ないならApacheやIISのログ見ればいいじゃない
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のエラーメッセージがでればまだおいかけられるんですが、一見エラーがないように素通りするので・・・
ZFでSmartyを使用するには ViewRendererに登録してZend_Viewを置き換える方法と Zend_Viewを無効にしてアクション内でSmartyのrenderメソッドを呼び出す方法の2通りがある。 俺は前者でやっているが、後者でやるならマニュアルの42.3.2.2.にそのまんまの方法が載っているからそれ参考にすればおk。 そのサイトの怪しげな方法を参考にする必要は無い。 強いていうならそれはテンプレートディレクトリが正しく指定されてないと思われ。
ttp://framework.zend.com/manual/ja/zend.view.scripts.html#zend.view.scripts.templates.interface マニュアルのはこれですよね?
一番最初はこれを見てやってたんですが、結局できず色々検索した次第です。
前述しましたが、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行ほどのプログラムを書き、テンプレートファイルも適宜設置済み。
で実行してもやはり真っ白なんですが、何かが足りないんでしょうか。
テンプレートディレクトリが間違ってるかもしれないと、何十通りか考えられる全てパスは試してみましたが、やはり無理でした。
display_errors = On
display_errors = On は設定済みです。 なのにエラーが出ない状態です。
header('hogehoge'); みたいなところがおかしいと真っ白になるよね
通常のZend_Viewは使えてんの?
オフィシャルの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)); こんな感じでどう?
間違った。。。 $rendered = $view->render('bookinfo.tpl'); ↓ $rendered = $this->_view->render('bookinfo.tpl');
そういえばecho $this->view->render('hoge.tpl')じゃなかったか
70 :
nobodyさん :2008/04/12(土) 02:17:04 ID: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()); }
ErrorControllerの枠組みがあるじゃん
>>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}のようなタグがあります。
> 参考に色々やってみたら 何をやったの? > sanitize カスタム関数のsanitizeファイルが無いんでしょ。
すいません自己解決しました。 Zendのオフィシャルじゃなくて、少し改良したらしい他のサイトの継承クラス使ってたのが原因でした。 Zendオフィシャルのにしたらエラーは出なくなりましたが、表示はやはりでませんでした。 テンプレートには{$book_name} が埋め込んであります。 実行すると、コンパイル済みディレクトリにファイルが出来てそのタグを埋め込んだ部分が <?php echo $this->_tpl_vars['book_name']; ?> となっていました。 そのファイルではそうなっているんですが、Webでアクセスするとその部分が綺麗さっぱり消え去ってしまっています。 そのファイルのタグ該当部分の違いですが テンプレファイル:{$book_name} コンパイルファイル:<?php echo $this->_tpl_vars['book_name']; ?> Webでアクセスしたページのソース:なにもなし こんな状態です。
綺麗さっぱり消え去ってるんじゃなくて、ちゃんと実行されてんだろう book_nameに値が入ってないんじゃね
テンプレートに{debug}ってして、中身見てみたら?
多分
>>75 が言うように値入ってないと思うけど。
ZFわかんなくて、CakeやってからZFに手出したら すげーZF好きになった。 ZFの方が記述が納得しやすいと思う。
例えばどんなとこよ?
ZFがいいんじゃなくてCakeが腐ってるだけだろ 特にとんがった工夫も特徴もない標準的な実装がZF
pearからのいいとこどりだしね
そのうち、PHPにビルトインされるだろう。 と思ってたら本当にやりやがった。 マジかよw な事になると思うよ。 Zendはいつもそうだもの。
と思ってたら本当にやりやがった。 マジかよw
83 :
nobodyさん :2008/04/26(土) 02:06:01 ID:5isAEf4O
Zend Frameworkでセッション使ったら、画面が真っ白になりました。 なんででしょう?
まだFW使うレベルじゃないと思われ
頓知クイズの類じゃないのか。
86 :
nobodyさん :2008/04/26(土) 03:46:35 ID: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');は行っています。
再現するコード出してみてくれ
88 :
86 :2008/04/26(土) 04:41:19 ID:???
>>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 :2008/04/26(土) 04:43:14 ID:???
>>88 今気がつきましたが、set_error_handlerの前でnew Zend_Date()だと、例外が飛んできません(正常にインスタンス生成できる)
set_error_handlerの第二引数何それ?
91 :
86 :2008/04/26(土) 04:53:47 ID:???
>>90 第一引数の配列の要素[0]がクラス名で、要素[1]がメソッド名です。
第二引数は指定していません。
92 :
86 :2008/04/26(土) 05:24:31 ID:???
>>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では色々と気をつけないといけないみたいです。
以上、お騒がせしました。
自前のエラーハンドラ設定するならハンドラ側で error_reportingのチェックは必須 ZFとかに限ったことじゃないぜ
95 :
92 :2008/04/27(日) 06:13:29 ID:???
>>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 :2008/04/27(日) 16:07:42 ID:???
>>95 fopenはinclude_pathを考慮してファイル取得できるのに、file_existsはinclude_pathを考慮できないのがデメリットなのだそうです
97 :
nobodyさん :2008/04/28(月) 10:22:32 ID:zm3zzhzx
マヌアルでプリント用のページ出力してくれ
idという意味でもなくて単に数字のURLにしたいなら actionメソッド名は適当につけてroutingで変えればいい
Zend_Db_Statement::fetch() の offset指定が動作しないのは仕様なのか・・・? アダプタはPdo_Pgsql。
中身見てみれば?
中身見たんだけど、原因が特定出来ないんよ。 Zend_Db_Statement_Pdo::fetch() が、 PDOStatement::fetch() のラッパーになっていて、 PDOStatement::fetch()のリファレンスには 「スクロール可能なカーソルの場合にoffset指定が扱える」的な事が書かれているのです。 スクロール可能なカーソルを要求するには、 PDOStatement::prepare() の時点でdriver_optionsを渡す必要があるっぽいのですが、 Zend_Db_Adapter::prepare() 経由でdriver_optionsを渡す事が出来なくて・・・ 結果的にoffsetが使えなくなってるのかなと、思った次第。 うーん・・・
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. ってかいてあるね。
なんかドコモとかauの最初や最後に.や.が連続するRFC違反のメールアドレスに対応するために Zend/Validate/EmailAddress.php の216のatextに\x2eを追加したらOKだが、本末転倒か。
ルール違反を甘やかしてはいけない
そんなもん弾いてしまえ
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん
せめて致命的バグを挙げてから言ってくれ
110 :
nobodyさん :2008/05/03(土) 13:53:26 ID:K4MBJC9r
Zend Frameworkってセーフモードで動きますん? CGIモードで動きますん?
動きますん
112 :
nobodyさん :2008/05/04(日) 00:13:53 ID:didjFSw2
そうなぬん?
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;
クォートしたくないならプレースホルダ使わない。 Zend_Dbのプレースホルダは確か、プレースホルダに対応して無いDBでも プレースホルダがあるかのごとく使えるように作られてるから、 その関係でクォート掛かるんじゃないかな。
プレースホルダ対応してないDBって何があるの?
対応云々じゃなくいろんなDBを適当に同じ文法に押し込んだ結果
viewにphp書くとき、ショートタグ使ってる? <?php echo $this->layout()->content ?> これだとなんか綺麗じゃないんだよね ショートタグあんまり使いたくないけど。
smarty使ってる
smartyなんて乞食が使うもの
乞食ってw smartyっていうかテンプレートエンジンあんまり使いたくない
なぜに?
テンプレートエンジン使ったら負けだ
そう思っていた時期が僕にもありました。 Smarty使って2、3回仕事をこなせば、もうSmarty無しでは生きられない体になるぜ。 今ではテンプレートエンジン否定派は、ただの初心者にしか思えないww
ethnaでsmarty使ったら便利だったけどね。 なんとなくだ。
Smartyも好きなんだけど、結局Zend_View拡張して使ってる
マクロ作っといてボタン押すだけ。 <php echo $hoge; ?>とか一々毎回同じ様な事を長く書くのが嫌なんだろうけど 同じ様な事を書くって事は、自動化できるっつー事でもある。
>>123 禿道
それ以前にクラスとか使うのを躊躇ってた時期がありました
>>126 マクロで自動化とか初心者の発想すぎるだろw
「やっぱり使えねぇわw」とあざ笑う目的でもいいから、一度Smartyあたり使ってみなされ。
デメリットは、学習コストくらいだよ。
bootstrapってindex.phpのこと? index.phpに require '../application/bootstrap.php' ってのを見かけるんだけど、DocumentRootから見えないようにしてるだけでindexに書いても同じこと?
>>130 applicationrディレクトリ内で全ての処理を完結出来る。
bootstrap.phpを基点にファイルパスを管理しておけば、
設置場所が変わったときに最小限の修正で済む。
というのがメリットなんじゃないかな。
133 :
nobodyさん :2008/05/08(木) 23:32:34 ID:936RkXZF
Smartyのページキャッシュ使いたくないの?
ルーターが多機能なのはわかるんだけども、直感的とは程遠いなぁ・・・ そんなトリッキーなルーティングなんてする人少ないんだから、 FWとしては解りやすくシンプルな実装でいい気がする。
別に言う程Routerややこしくない Routerのモジュール機能は使わなくて良い RouteのStaticとRegexも使わなくて良い
Zend_Layoutの $this->layout()->content とか $this->layout->navの使い方がよくわからないんだけど、 navとかってどこで定義されてるの?
>>137 Zend_Layoutの中身を見ればよかろう
>>138 navとかcontentとか探したけど見つからないのよ
140 :
137 :2008/05/09(金) 16:37:49 ID:???
ん? 最初からあるのはcontentだけで、navとかsidebarとかはコントローラーで $response = $this->getResponse(); $response->insert('sidebar', $this->view->render('sidebar.phtml')); とかしないといけないのか?
function __get() { みたいなところ見てみたら? 多分そこらへん
142 :
nobodyさん :2008/05/10(土) 13:15:55 ID:vET5c+ho
すみません、質問です ZendFrameworkに最近興味をもったんですが、これを使ってできるというPDFの出力は ・完全に日本語対応していますか? ・背景(テンプレートのJPGとか)と表(プログラムに応じて出力)を組み合わせて 書き出すことはできますか? ・どこかの企業のロゴが刷り込まれたりしませんか? 以上3点について教えて欲しいです もしこの機能を使っている方がいたら、困ってる点などあれば教えてください。 自分でも調べたんですが、本自体少ないし良くわかりませんでした お願いします
>>142 ZendFreamwork1.5で日本語対応しました
言ってることはたぶん実現できるはずです
どこかの企業ロゴが云々のことは知りません
でもそんなの出てたら誰も使わないよねw
144 :
nobodyさん :2008/05/10(土) 13:29:59 ID:vET5c+ho
>>143 おお、お返事ありがとうございます すごく使いたくなりましたw
pearでPDF書き出す機能があって使おうと思ってたんですが、
そのモジュール作った企業のロゴが入って参ってたんです
ほんとにありがとうございました!
編集すればそんなロゴなんて消せるんじゃないか?
今日さむいよ ゴールデンウィークは30度近くいったと思ったら。
ホントなんでこんな寒いの。。 しかし久々にさわったらまた随分ポリシー変わったね。毎回思うが。 >132 開発している内にindex.php上のbootstrapの記述が結局数十行とかになって、 超・汚くなるし危ないんだよね。 それに対応するbootstrap.phpが推奨になるまで2年(もっと?)か。。。
1ヶ月使った感想。 シンプルな実装なので基底クラス郡としては強力だが、制作効率に反映されるまで時間がかかる印象。 フレームワークを実装する為のフレームワーク/ライブラリ郡って感じかねぇ・・・ 現時点ではマルチバイト系全般の処理が甘いのが痛い。 総評:今後に期待。コーディングスタイルは好みなので支持して行きたい。
マルチバイト処理ってvalidateぐらいじゃね?
MailとFilterとか
俺もバリデータを拡張すれば良いんだろうと思ってやろうとしたけど やり方がわからねぇ。 validateインクルードしないでmb関数直接書く。 全部のクラスに凄い親切にコメント書かれまくってるけど、 書かれすぎてて読みきれない。 コードの2,3倍コメントある気がする。
バリデータを拡張って既存の奴の組み合わせでは不可能な時の独自バリデートってこと? マニュアルとコード見ても分かんないの?
カスタマイズ性のためにしょうもないところで 複雑になってたり設定が多かったり ラッパーやビルトインの上書きを書いてる時点で なんかしんどくなってくるねZFは 色々できるのは有り難いけど デフォルトで一通り全部フルスタックな状態にしておいてくれて そこからカスタマイズしたいやつは デフォルトを取り除いてカスタマイズしていく形にして欲しいよ デフォルトではとりあえず色々なもん自前で乗せてかないと そこかしこで何かしら足りないっつーのは面倒過ぎる エラーハンドラプラグインがデフォルトでついてるのに そのエラーハンドラは自前で書かなきゃエラーをハンドルしないのかよ おまえはどんだけツンデレなんだとしばき倒したい マシューちゃんもうZend_Controllerはオナニーの域だよ 素直に作ってくれよあんた綺麗なコード書くんだからさ 全土フレームワークのコードは大好きだけど 実用的さの欠けっぷりは半端ないよ ここを見てるPHPのエロい人がいたらそう伝えてよ 僕はこのオナニーコードの断片で昇天して にちゃんねるに便所の落書きする事くらいしかできないよ I love Zend Framwork!! I love PHP!!
こんなコードがきれいって言うなら 俺のコード見たらお漏らしするな
>>153 デフォルトでフル装備しててイランものを後から取り除くのも面倒でね?
でもジェネレータみたいなのは欲しいな
157 :
nobodyさん :2008/05/14(水) 17:07:05 ID:fprIBGJx
print "HELLO WORLD";
158 :
nobodyさん :2008/05/14(水) 18:48:31 ID:/iZUMp8N
>>153 同意。
Zend_Dbの足りなさ過ぎにはずっこけたというかPDOで十分というか中途半端なPDOラッパーなぞいらん。
ORマッパーってZend_Db_Tableなの?
ORMっぽいORMは無い
SQLを書けってことか
ZActiveRecordの復活はまだですか?
php 5.3.0がlate static bindingsと__callStatic()が ちゃんと実装されてリリースされたら ActiveRecordパターンでまともな実装のORMが出ると思う
namespaceもそうだな 結局5.0のリリースで見送ったもののツケが回ってきてる感じだな その辺りとクロージャのパッチさっさと取り入れてくれりゃ 各FWも随分すっきりした実装になりそうなのにな 今のPHPの実装でFW書く人はほんとマゾ過ぎる
self関係はリリースしてしまった以上、直すに直せない状況なんだろうね…
1.5.2 リリース。
どう変わったんだ
しーん
バグフィックスメインか
zendが身売りってどんだけー
身売りしたらこんなオナニーフレームワークは何の意味もなくなる
PHPオタワ
177 :
nobodyさん :2008/05/21(水) 14:31:27 ID:LYIqFUi6
PHP房涙目wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
アプリケーション内の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"); こんな書き方でできるかと思ったのですがエラーになります。
zend_layoutで。
まぁ実際身売りしてもzendframework自体はなんもかわらない気がする。 microsoftはやだな。オラクルも
ZFは野に放っても生きていけると思うけど PHP本体はな…… オープンソースとはいえ、≒Zendな訳でしょ
PHP6 → Microsoft PHP.NET Zend時代よりも大幅な開発力アップになったりしてw
CLI上でgoto実装された言語二つ目になる訳ですね、判ります。
どうせ買われるのならRasmusがいるYahoo!の方がいいなw
>>181 「Zend公式」という強みしかない糞FWが生き残るわけねーじゃん
「Zend公式」の印籠をもってしてもメインストリームになってないし
公式ゆえの弱み(or臆病さ)だろうね ヘタに主流作れないのでフレームワークのためのフレームワーク的なモンしか提案できない 言語本体から切り離した地盤固めの試みなんじゃねえの
Zend自体ブランド力も開発力も乏しいんだから、 PHP&ZendFrameworkごとMSとかに買収された方がPHPの発展になるんじゃねーの? Visual PHP.net とか普通に期待しちゃう。
msが買ったらlinuxで動かなくなるじゃん そしたら事実上脂肪
>>189 どうせならyahooがいいけど、MSに買われたら意味ないしなぁw
じゃあSun?
yahooがgoogleと組めばいいんだ googleはpythonだろうけど
珍しく伸びるな
IBMもSunも脛に傷あるような企業だからなぁw
有り余る金でgoogleが買ってくれたら みんなが幸せになるとは思うけどな
pythonとphpでパイビーですね
パイエッチにするとさらに卑猥
198 :
nobodyさん :2008/05/22(木) 19:55:35 ID:3xiPTBYp
モジュールを以下の形式のようにネストする事は可能ですか? /module1/module2/controller/action/ setControllerDirectory()ではモジュール名に対してコントローラディレクトリを指定すると思うので、 ネストする場合には "module1"=>"/path/to/controller" とするしかできないと思います。 ちなみに無謀なチャレンジをしてみましたが "module1/module2"=>"/path/to/controller" Module2Controllerを読もうとしてエラーになってしまったようです。 当方女子高生です。 よろしくお願いします。
上場企業社員ですが、モジュールをネストする意味がわかりません。
>>198 無職だけど、モジュール自体をネストしなくても
/foo/bar/:controller/:action で module1 のディレクトリに対してマッピングすれば良い
Routerのモジュール機能でどうこうするよりも
routerのマッピングを変えた方がわかりやすいし変更も楽
本気でモジュールをネストする意味がわかりません。
上場企業下請け派遣社員ですが彼女がいません。
204 :
198 :2008/05/23(金) 02:08:23 ID:???
すいません。言い方が悪かったみたいです。
モジュールをネストする必要と言うよりは、
クライアントからのパスの指定があったからという理由です。
マッピングを設定できるというのは知りませんでした。
>>200 の方のいうようにやってみたいと思います。
どうもありがとうございました。
実は女子高生と言うのは釣りです。
どうもすいませんでした。
URIを好きなように設定したい! ↓ モジュールをネストしよう! って発想になるのがなかなかエクセレントだな。
なんだと
女子高生ワロタwww
「女子高生」で釣られるわけねーだろヴォケ
お前ら足下みられすぎワロタ
$this->view->renderで絶対パスを指定するとエラーになります。 相対パスだと意図したとおり表示されますが、汎用性が低くなってしまいます。 define('ROOT_DIR',dirname(dirname(__FILE__))."/"); $this->view->render(ROOT_DIR."apps/layouts/template.phtml"); エラーになる 何かいい方法はないでしょうか?
echo ROOT_DIR."apps/layouts/template.phtml";
>>210 テンプレートがまとまって入っているスクリプトパスを
viewに設定してそのスクリプトパスからの相対パスを指定して
テンプレートを読み込んで使うっていうものだから
絶対パスで扱えないから汎用性が低いってのはちょっと違和感が
まあ例外的に絶対パスで指定したい時もあるし
絶対パスでそのまま扱えるオプションやメソッドがあってもいいとは思うよ
(railsのactionviewにもそういうオプションはある)
それはZend_View_Abstractを継承するなりして
それ用のメソッドなりオプションを用意してやれば良いと思う
213 :
210 :2008/05/23(金) 14:49:52 ID:???
>>212 さん
>テンプレートがまとまって入っているスクリプトパスをviewに設定してそのスクリプトパスからの相対パス
たとえば以下のように設定して
Zend_layout::startMvc(array('layoutPath'=>'/apps/layouts'));
/apps/layoutsからの相対パスで設定可能なら管理上、便利なのですが、(個人的に、ですが)
setControllerDirectory('apps/controllers')
で設定したファイルパスからの相対パスのようです。
レイアウトはレイアウトで管理したいのでなんか気持ち悪いです。
'layoutPath'で管理する方法はないでしょうか?
Zend_Layoutは使ったことないので何ともいえないけど、 そのlayoutPathで指定してる '/apps/layouts' っていう 絶対パスはちゃんと合ってる?ルート直下になってるけど そのlayoutPathから相対で指定できなかったら 個人的にも何もlayoutPath設定してる意味がないと思うんだけど、、、 少なくともcontroller directoryからの相対指定ってのは明らかにおかしいし 自分なら何か設定が間違ってると考えるけど
完璧な仕事しやがって・・・
次のバージョンは1.6ですよ
出力前にビューと変数全体の文字コードを変えたいのですが、どんな方法があるでしょうか? smartyでいうところのprefilterみたいな機能です。
URLのカスタマイズは可能でしょうか? example.com/index/hoge/id/12345/ だと長すぎるので example.com/id12345/ や example.com/12345/ でできればと思います。 内部的に第二パラメータ(id([0-9]+),([0-9]+))がある場合は index/hoge/id/12345/として扱うようにしたいのです。
つ rewrite rule
routerじゃないのか?
ZF的にはrouterが正攻法だろうね。
個人的にrouterは冗長で読みにくいので、標準のルーティング以外はmod_rewriteを使っている。
>>218 普通にやればスンナリ出来る事なのに、
詳細を調べないと実現出来ないような実装な時点で、router使うやつはただのマゾ。
こういう場合って router 使うのね。 俺はErrorControllerいじって実装してたわ。
223 :
217 :2008/05/27(火) 17:42:54 ID:???
出力ファイルの文字コードのみ変換したいのですができないでしょうか? これができないと携帯用の出力ができません、、、 Zend Frameworkでは携帯サイトは作れないですか? お願いいたしますm(_ _)m
ZendFrameworkにその機能が無いなら、拡張実装すればいいだけじゃないの? 自分はSmarty+ZFで対応してるけど。 >>出力ファイルの文字コードのみ変換したいのですができないでしょうか? ZFのView実装見てないから何とも言えないけど、ob_start()でバッファリングして、最後に一括変換すればいけない?
225 :
nobodyさん :2008/05/28(水) 15:54:55 ID:GUHYGw3g
RewriteRouter使えば簡単だよ
ていうかFW使っててRouterすらまともに使えない奴ってなんなのwww
なんのためのFWだって話だww
ZFに限って言えば、Router使う奴はマゾとしか思えない。 記述と動作が追いにくいので、FWの利点である「FWを知っていれば、他人のコードも理解しやすい」というメリットが薄い上に、 シンプルな動作を実装するのに、複雑なコードが必要になるとかww
Routerから追わないといけない必要に駆られる時点でいろいろ間違ってる
Routerに限らず、ZFをどこまで信用できるかandどこまで ZFの想定に近いことをやろうとしているかの見極めどころの話だな
routerつかわない人って 未だにだっさいURLなの?
URLなんてRouter以外でどーにでもなる。 routerの冗長でだっさいコーディングに疑問を持たない人ってなんなの?
mod_rewriteで解決ですかww
ほーう では他にどんなソリューションがあるのか教えて頂けますか? 物知りさん
mod_rewriteでって言ってる人がいるけど それってデフォルトのルーティング以外のを デフォルトルーティングに沿うように変換するってこと? それは明らかに無駄だし、Router無しだと アクションからURLを解決するような逆変換もできない URLをどうこうだけじゃなく URLとコントローラをマッピングすることがRouterの役目 Routerの設定が冗長ってのも微妙 実際のところRewriteRouterを使って デフォルトルーティング以外を追加するくらいのもんだと思うんだけど あれで冗長ならRouter的な概念を持つもの何も使えないんじゃない? 設定が冗長だと感じるならsymfonyみたいに マッピングをyamlで設定できるようにラップするといい まあそれでも冗長と感じてよりシンプルな方法があるなら 俺も正直教えて欲しい
Routerで /ctrl/action/param/param/param/ ... とするための設定教えちくりくり
>>236 まったくだ
往復で変換できなきゃ意味ないよな
ルーターでデフォルトモジュール名を省略する事って可能ですか? 以下のように、設定したいのですがどう書いてよいのやら・・・ /test → IndexController::TestAction(); /test/ → TestController::IndexAction();
241 :
nobodyさん :2008/06/02(月) 01:35:52 ID:dJEt55md
可能
デフォルトactionを設定したらいいんじゃね zend使ったことないからしらんけど
>>243 デフォルトでは
/module
/module/
/module/action
と認識されてしまうんですよ。
これを
/action
/module/
/module/action
と設定したいのですお。
それは個別にルータに指定しなきゃだめだろう /hoge と指定した時に /default/hoge に変換する等、ひとつひとつ設定するのが普通
なるほど個別設定は試してなかったので、試してみます。
247 :
nobodyさん :2008/06/12(木) 14:02:23 ID:Mes6XuGv
Zend_Http_Responseのfactoryメソッドってどこにあるの?
248 :
nobodyさん :2008/06/13(金) 18:48:28 ID:/Epk/r4F
Zend_Http_Responseのfactoryメソッドってどこにあるの?
ここではないどこかだよ馬鹿野郎
分かんないんならレスしないでくれる?
「factoryメソッドはある」と認識してるのに、どこにあるかワカラナイとか意味がわからない。 なぜ「ある」と思ったんだい?
だよな そもそもfactoryパターンの意味も分かってないっぽい
もしやソースのファイル名と行を聞いているのでは Grepすりゃ一発だろって話だが
質問です。標準のルーターだと /default/index/index /index/index /index / 全部同じアクションが呼ばれますよね。 SEO的に良くなかったり相対パスで書いた画像が表示できなかったりするから、 どれか一つ以外のもの (この場合は/) 以外はリダイレクトさせるか、404にしたいのですが、 そんなことできますか?
$front->getRouter()->removeDefaultRoutes();
>>255 どもです。しかしそれだと、/が使えなくなって index/index と書かなくちゃいけなくなるんじゃないですか?
逆が良いのですが。
だったらそう設定すればいいだろう。
removeDefaultRoutes()してから、 / に index/index を当てればいい。 index/indexなんてかっこわるいのはイラン
普通DefaultRoutesは消さんだろ
なんのためのデフォルトなのか考えろ
>>254 不要なURLをリダイレクト or 404用のアクションにマッピングするだけ
やっぱりみんなルーターの扱いがよくわからないよね
>>259 もいってる通りリダイレクトなんかが一番楽なのかもね
ただGETで変数渡したい時だけルーティングしたいような気もする
連鯖がドキュメントルート同階層にディレクトリが作れないもんで、ZFのライブラリをドキュメントルート以下に配置するしか方法がないんだけど、こういう場合ってcgi-binに配置した方がいいかな? それか適当なディレクトリに入れてアクセス制限かける方がいいかな?
なんでcgi-binww
warosu
Zend_Authとか使ってる人いる? 設計思想はわからんでもないが、そのままじゃ使えない上に、カスタマイズが面倒で、独自実装する方が早い気がしてならない。 使った場合のメリットを教えてエライ人。
俺はそれよりもZend_Aclのメリットがわからんですたい
>>264-
>>265 AuthもAclもセットで使ってる
メリットは単純だし実装が楽だから
カスタマイズってそんなにするところあるの?
公式のサンプルやネットに転がってるサンプルだと、 単純で実装が楽ってのが実感出来ないなぁ・・・ 機能としては単純なのに、少々冗長で、覚える事が多いなぁ・・・と感じてしまう。
じゃ実際に使って確かめろよ頭悪いの?
使うに至るものなのかって質問が理解出来ない程頭悪いの?
それを判断する最短解は、簡単なサンプルで使ってみるこったろ Acl/Auth程度、他人(それも2chの名無し)に良い悪い論せたところで遠回りよ 俺の私見では、汎用性整えつつ最低限の道具であろうとしたらこうなるね、という感じだ 俺がこう述べたところで君がそうかと判断するのは早計だ 何人か反論してきて初めて判断基準としての価値があるだろうな その間にざっくり試して判断すりゃ30分も掛からんだろうよ
>>269 サンプルで実感できないかつ実際にも使う気がしない面倒臭がりなら使わなきゃいいだろ何のためにこのスレにいるの
ケチだけつけて何がしたいの?ネガキャン?つかむしろなんのために生きてるの
まぁそりゃそうだが・・・ 汎用性とのトレードオフなんだろうけど、 Authは機能の割に実装量と学習コストが高いと感じたのさ。 率先して使う価値はあるのかなと。恩恵はあるのかなと。 チーム内のコード共有の為にZFを導入した経緯もあるので、 他の人の意見を聞きつつ、使うか避けるかを判断したいんです。
>>271 そうムキになるなよw
他のコンポーネントは使ってるし、ZFは重宝してるよ。
275 :
nobodyさん :2008/07/19(土) 04:29:15 ID:d6w3PPzh
おいおいもうすぐ書き込みなくなって1ヶ月じゃないかw
ねんがんのクロージャをてにいれられそうだぞ!
くろーじゃとらむd!
5.3にむめいかんすうきた!くろーじゃきた!これでかつる!
クロージャってRubyのブロック? Rubyみたいにメソッドにブロック渡してyieldで呼び出されたりできるようになんの?
いやクロージャはクロージャだよ
まじか。ちょっと前まで5.3には採用しねえよ、つってたのに。
ソースどこ?
つオタフクソース
微妙だなぁ。 別にクロージャなんて無くても困らんし
無くても困らんで済ませたら全部そうなりそう
なくても困らんがあると便利
クロージャ実装は待望っちゃ待望だが、 構文が無理矢理な感じがして好きになれんなぁ。 無名関数も一度変数に代入しないと呼び出せないとか、中途半端すぎる。
無名関数が使えるようになるのは喜ばしいけど、確かにあのクロージャの構文はないわと思った。
なぜそこで煽る
それよりも名前空間実装による速度低下軽減に力注いで欲しいわ。
PHP5.3はPHP最速だよ。
>>294 ちゃんと名前空間使ったものと、以前のバージョンの通常require時を比較して?
ソースは?
>>295 5.3がどうかは知らないけど、クラス名の解決とrequire(_once)のパスの解決は別問題やん。
require(_once)が遅いといわれているのは読み込み済のファイルの検証ではなく(これはハッシュ
テーブルを参照するだけなので問題ない)、include_pathから対象のファイルを検索するのが原因。
include_pathは実行時に書き換えられるので、結果をキャッシュするわけにもいかんのですよ。
絶対パスや./から始まる相対パス指定なら、そんなに遅くないんだけどね。
で、これは言語コアレベルでの改善は困難なので、PEAR2のように依存ファイルの一括読み込みと
autoloadを併用して、スクリプトの書き方で改善することが推奨されている。
>>295 ソースは?とか言う前に少しは調べるなりカンファレンスなり出ればいい。
カンファレンス発表でのパフォーマンス測定では
PHP5.3>PHP6>PHP5>PHP4
と発表されていた。
>>296 それってAPCとかeAcceleratorとか使っても同じ?
>>298 同じ。
autoloadを使う以外にも、require_onceを if (class_exists("hoge", false)) {} の中に入れるだけでも
だいぶ違うよ。前にプロファイルをとったことがあるけど、require_onceのコストはけっこう大きい。
Cで書かれてるrequire_onceが遅いって何なの?
ファイルシステムとかにかかわる、PHPの範疇外の部分がボトルネックって事だ。
302 :
nobodyさん :2008/08/02(土) 17:20:13 ID:bAiSenEi
Zend Framework大好きだぞ
焙煎海鷂魚
コーディング規約は他FWに比べて素晴らしいと思う。 FWの出来自体はZend_Textを見た時点で諦めた。
しかし本当に価値の無いフレームワークだなこれわ・・・。 使う利点が一切ないわ。
306 :
nobodyさん :2008/08/26(火) 23:00:54 ID:lmmx+hnD
そういうなよw
zend frameworkで作ってる人間だっているんです!
308 :
nobodyさん :2008/08/27(水) 00:17:46 ID:Ajt89UCU
おれzendframework使ってるよ!
Zend_Http_Client使ってるけど、そんなに悪くないぜ
310 :
nobodyさん :2008/08/27(水) 01:57:34 ID:Ajt89UCU
一つ一つはライブラリとして悪くないんだと思う。 フレームワークとしてみると、他のに比べて面倒なところがあるってことかな
3時間ほど使ってみた感想 これフレームワークじゃねーだろ
framework をつくるための framework ですよ
ZFだと思ってたら3F(Framework For Framework)だった
確かにFramework on Frameworkだよな 仕事に使うなら、いままで使ってた社内俺俺ツールキットやらライブラリやらを移植するには丁度良いと思うし、 単にライブラリとして使って俺俺フレームワークの理想を探求するのもアリじゃね
Db_Tableってなんでシングルトンじゃないの?
Db_Tableをシングルトンにする意味がわからんがw ライブラリとしては便利だけど、 主要なコンポーネント「メール、DB、コントローラ」が使いにくいのがなぁ・・・ (日本語に弱かったり、微妙なバグがあったり、)
色んなところでDb_Table使うたびにインスタンス作るのってなんか無駄遣いじゃないですか?
作んなきゃいいじゃん
319 :
nobodyさん :2008/08/28(木) 22:45:59 ID:rcv32CRY
DB_Tableクラス内のメソッドで必要な処理して、Controllerからは呼び出すとかでいいんじゃね? それかController拡張してそっちで自動でやっちゃうとか。 めんどいけど。
そこでfactory methodですよ
321 :
nobodyさん :2008/08/31(日) 16:10:05 ID:MXRJjD+M
Zend_Db::factory() ?
MySQL使うときにZend_DbのアダプタでPDOとMysqliってどっちが高機能とかあるのかね? どっちも使える環境ならどっちでも一緒? Mysqliの方はプリペアドステートメント使用のときはクロージャがどうこうってのは見たんだけど
323 :
nobodyさん :2008/09/03(水) 04:32:00 ID:NF58ThMC
1.6きたでー
Zend_Soap あたり、1つのファイルで CR+LF と LF が混在してないか。 萎えるわ。
325 :
sage :2008/09/03(水) 21:51:27 ID:???
日本人でupdate権限持つ人が少ないので改善作業に参加おねがい
Zend_Textとかおふざけかと思ったらcaptchaで使うんじゃん なんかおしゃれだぞ
327 :
nobodyさん :2008/09/04(木) 11:34:02 ID:yd995+aV
そもそもframeworkの定義ってナンだ? 何ができればframeworkなんだ?
理想型としては「メインのロジックだけを書けば他はFrameworkが補ってくれる」とかかな? ZFはその点弱すぎる印象がある・・・もう1層コードをかぶせてやらないとアプリケーションを乗せ辛いんだよね
自由度が高すぎるイメージだな このコンポーネントつかって自分好みのフレームワークとしてカスタマイズしてくださいって感じだな
FWのためのFWによるFWの・・
FW on FW アリだと思うけどねぇ
その割には柔軟性低いけどねぇ・・・ 例えば抽象DBアダプタとか最低限()の機能しか無い、 拡張するには継承するしか無い、 継承
途中送信しちまった・・・orz その割には柔軟性低いけどねぇ・・・ 例えば抽象DBアダプタとか最低限(PDO以下)の機能しか無い、 拡張する為に継承するわけだけど、 継承したクラスのみに機能を実装すると抽象DBアダプタの意味が薄れる それなら1から自前で組む方が柔軟に組める。
PHPは、他LLと比べたらそれ自体がFWみたいな特性を持ってるし より高度な機能を保管するためのZFだと思えばいいんじゃないか。
>333 Zend_Db_Tableは、ZFの最大の駄作のひとつと思われる というか、アーキテクチャの選択を間違えた感じだが つまり、そういう表現のほうが適切なんではないかと思う ZFのばあい、ZFというコンセプトだけは共有してるが、 その中の機能はライブラリ毎に担当者がいて、設計段階から パラレルに進行しているので機能面の評価はZF全体ではなく 各ライブラリに掛かってくる とか言ってみたわりには大して使い込んでないんだが
「FWのためのFW」という言い方もなんだか閉塞感漂う表現だなと毎回思うんだけど Zend_Db_Tableにしても駄作と分かれば一切使わない、もしくは 別の抽象化プロジェクトがIncubatorなり各個人なりで用意され、置き換えられるのが 格好良いとこだと思う、まぁZFのプロジェクト進行の全てが牛歩なのが痛いが
Zend_Db_Tableは位置づけが中途半端すぎるんだよな SQL直書きならPDOがあるんだから、やるなら本格的にORMORMしたライブラリにすれば良かったのに
Zend_Form,Element と Validator の絡みがすごい良くない。 何で Validator を Element にアサインするんだ? あの実装じゃ複数の elements にまたがる Validation ルール書けなくない? QuickForm の方がいいな。
ZFでいちばんイケてないのはZend_Loaderと思う今日この頃。
>>338 ValidatorChain的なモノで実現出来るかと思ったら、出来ないのよね・・・
ウリが無いフレームワークだよね。
開発も遅いし、ドキュメントも入門窓口としては充実してるかもしれないが実際使うとなると足りなすぎる。
PHP5向けのしっかりしたコーディング規約に惚れたけど、使うのは苦痛でしかないわ。
>>339 えなんで?一番便利と感じてたが・・・。
>>341 挙動が気にくわないというか、はまりやすいというか...
zfだけでサイト一個作り上げたぜ!!
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ... --─- :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::.. (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡:::: //[|| 」 ||]
>>343 ゜:::::::::: ...:: :::::
:::::::::::::::::: . . . ..: :::: / ヘ | | ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .::::::::: /ヽ ノ ヽ__/ ....... . .::::::::::::........ ..::::
:.... .... .. . く / 三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧ ∧∧ ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:( )ゝ ( )ゝ( )ゝ( )ゝ無茶しやがって… ..........
.... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ...
.. 三 | 三 | 三 | 三 | ... ............. ........... . .....
... ∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪ ............. ............. .. ........ ...
三三 三三 三三 三三
三三 三三 三三 三三
無事に動いてるって!人は来ないけど
350 :
338 :2008/09/08(月) 11:54:05 ID:???
>>340 一応 Zend_Validate_Abstract::isValid() の $context param を使って実装した。
でも element に validation をアサインするのがとにかく気持ち悪すぎる。
で、 Zend_Form::isValid() が各々の Element の isValid を呼びつつ、
全ての Elements の value を $context に渡すって、効率悪すぎだろ。。
>>350 凄いけど、無駄だよね。
ZF使ってると、コーディングが終わった頃に、時間を無駄にした気分になる。
1.6.1出てる
ZendFramework徹底入門が出たね。
こんなバージョン1という名のβみたいなやつの解説本なんて買うやつはアホだろ
もう少ししたら本屋で「ZendFramework徹底入門」見てくる 買う価値ありって感じたら買ってきて、少しだけレビューするわ
Zend_Loaderのバグは治ったんだろうか
どんなバグ?
include_onceでの読み込み失敗時の処理が漏れてる
つーか実際使ってる人いるの?
100%使ってます
361 :
nobodyさん :2008/09/24(水) 22:49:18 ID:ksgvzPqo
おれも使ってる
むしろ使う理由がない
ソースが綺麗じゃん
ある程度使ってわかったこと。 コーディング規約以外は使い物にならん。
なんで?
俺もコーディング規約はzf風にしてる つっても、privateとprotectedは_を付ける、くらいだけど
関数名がhogeUnkoChinko みたいになってるだけで美しいじゃん function hoge_unko_chinko() {} とかキモイじゃん
>>367 それは今時の(PHP5の)フレームワークがほとんどそうだろw
symfonyこんなじゃなかった?
ZF自身が従っていない規約がいくつかあるんだよね
どれ?
インデントにtabは不可 改行はLFのみ 1行は最大120文字 連想配列のvalueの先頭をそろえる ざっと調べた感じではこんなところ。 後2つはどうでもいいけど、前2つが守られていないのは酷すぎる。
ファイルの最後が必ずLFというのも重要。 "\ No newline at end of file" は御免です。
規約が綺麗にまとめてあるので、外に振るとき楽だよね。 ファイルの持ち方とクラス名の付け方もZFが一番スマート(競合が起きない)気がする。 ちょっと冗長だけど・・・
名前空間が実装されれば、それも変わるだろうが
Zend_Formで検索フォーム作ってるんですけど キーワードを半角or全角スペースで区切って配列にする みたいな処理はフィルターでやるべきですか?
意味が分からん 全然用途が違うような
378 :
376 :2008/09/26(金) 10:23:10 ID:???
[ りんご ばなな みかん ][検索] こんな風に入力されたとしたら 全角スペースを半角にして 連続するスペースをひとつにして 前後からスペースをとって spliteで配列に したいんですけど この一連の処理はモデルとかでやるんですか?
そんなの君のデザイン次第
>>375 俺もそう思ったけどPHP5の普及速度見る限り、あまり期待出来ないww
>>378 そういうのはOOPとかMVCとか変に考えすぎないで、適材適所な箇所にコード書けばいい。
自分だったら検索実行の直前でパラメータ分割する。
>>380 >>379 >>377 preg_splitのPREG_SPLIT_NO_EMPTY使えば
一行で済むって気づいたので
そうすることにします。
ありがとうございました。
>>380 そもそもZF自体php5なんだからお前の期待は全く関係ないけどな
>>382 PHP5ですら普及度低いのに、
ネームスペースが実装された 5.3 or 6.0 が普及するのは相当先なんだろうなって意味だ。
>>383 ただ5.3/6.0はZend Engineがかなりチューンされていて、パフォーマンスでは有利。
基本的に5.2で動くものは5.3でもそのまま動く(6.0ではそうとは限らない)ので、
5.3の新機能は使わなくても鯖に5.3を入れるのは十分ありうると思う。
まだレン鯖で4いれてるところもあるのにw
最近5に移行してるとこ多いよ
むしろ未だに4しか入れてないところは地雷だろ 怠慢が分かりやすく見抜けて楽
Zend_Db_Tableが結構使えるようになってるじゃん!
ZendFramework徹底入門読んだ。 緑の本は公式リファレンスを抜粋&補足しただけの内容だったけど、 こちらは幾分か実践的で、これからZF始める人には良いんじゃなかろうか。 helperとかDbとか、サンプルコードが豊富なのでリファレンス読むより早く理解出来ると思う。
ZFで作ったブログ作成ツールのコードでも見たら 下手な入門書より参考になるんだが
そんなの何処にあるとですか
参考になるから誰か作らないかな〜ってことです><
Zend_Controller_Helper とか Plugin とか思想はわかるんだが、 使う場面がよーわからん。 認証サイト作る場合、認証処理はヘルパーなりプラグインにするべきだろうか? 今はベースクラスに色々定義しまくっている。
/home/user1/public_html/index.php にフロントコントローラ、
/home/user1/application/controllers/addressController.phpを作成。
addressController.php内のアクションはaddressActionとしたとき、
http://サーバ名/~user1/address/address で実行できる?
NOT FOUNDになってしまうんだけど....
>>394 ルーターと.htcecsadaの設定ちゃんとなってないんじゃね
DBからクエリで出してきたデータをXML化したりするのはsimpleXMLとか 今までどおりの方法しかないですか? ZendFreamworkで簡単にという方法はないのでしょうか? Zend_Config_XmlとかZend_XmlRpcとかで利用してるような人はいますか?
無理じゃないかなぁ・・
Zend_Rest_ServerのサンプルがSimpleXML使ってるからないんじゃないか
399 :
396 :2008/10/04(土) 11:11:10 ID:???
やっぱないんですね・・・ 大量なデータの時の速度的な問題もあるし簡単かつ高速な XMLモジュールがフレームワークとしてあったらよかったんですが 他の方法でやってみます ありがとうございました
simpleXML使っといてスケーラビリティを心配すんなよw
1.6.2が着たというのに・・・
402 :
nobodyさん :2008/10/21(火) 14:07:56 ID:V5bf6vPW
Zend_Db_Adapter_Pdo_Mysqlで接続するときに文字コードを指定する方法教えてください。 encoding=>utf8 は試してみました。 MySqlってUTF8でDB作って、 mysql -u root --default-character-set=utf8 hoge みたいに接続するときの指定してやら無いと おかしなことになりますよね? お願いします
接続した後に SET NAMES utf8 するしかないんじゃないかなあ。 いちいち接続後に $db->query('SET NAMES utf8') するのは面倒なので、 class MyAdapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql { protected function _connect() { if ($this->_connection) return; parent::_connect(); $this->query('SET NAMES utf8'); } } というようなクラスを作って、 Zend_Db::Factory('Pdo_Mysql', array('adapterNamespace' => 'MyAdapter', 'host' => ...)); のように使うと楽だし、SET NAMES のしわすれで酷い目にあうこともない。
404 :
nobodyさん :2008/10/21(火) 15:18:39 ID:V5bf6vPW
>>403 ありがとうございます。
実はsymfonyも試しに使っいたので
コードを追っていって
SET NAMES utf8
しているところを突き止めたところでした。
dbの接続をするシングルトンなクラスをつくってあったので
そこで、最初の接続だけSET NAMES utf8するようにしました。
SET NAMES utf8はするな
しなきゃ文字化けするんですよ!
使わなきゃ動かないんだから使うしかないじゃん こっちはレンタル鯖でやってて細かい設定できないの! ホント現実みないよなこういう意見の人は
お前は知障か
PDOだとset namse使う意外に手が無いんですが
>>407 具体的な攻撃例何も書いてないな。
攻撃もできないのに禁止と言われても全く説得力がない
お前WebPG向いてないからやめたほういいよ
>>412 攻撃例も出せないのによく偉そうに言えるなw
お前WebPG向いてないからやめたほういいよ
そもそもmysql_queryってセミコロン使えないよな。
sqlインジェクションどうやってやるのか、
WebPG
>>412 のサンプルコードに期待。
あくまでAPIのエスケープ処理が問題になるだけであって
SET NAMES utf8してる事を意識してPG側で適切にエスケープ処理を行えば脆弱性は回避出来るのだが。
具体的な攻撃方法出してくれよ。
>>407 のURL見て真に受けてるような奴こそWebPG向いてないね。
危険なのはShit JISが絡んでくる場合だけじゃねえのか。
417 :
nobodyさん :2008/10/22(水) 09:50:57 ID:4sQkv8n5
>>402 driver_optionsで
PDO::MYSQL_ATTR_READ_DEFAULT_FILE => 'path/to/my.cnf'
とか指定して、path/to/my.cnfには
[client]
default-character-set = utf8
と書いておく。
あるいはシステムのmy.cnfに適当なグループを作って
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP
を指定する方法もある。
ちなみに
>>407 のURLで、最終的な結論として作者本人がコメントしているのは
> 例えば元のエンコーディングがISO-8859-1で
> EUC-JP, UTF-8に変更した場合は安全。
俺もほぼ同様に理解しているが、本文中で理屈も攻撃例も示さず「禁止」では
良識的な技術者の態度ではないわな。
(「普段MySQLを利用していないので指摘いただくまで忘れていました」等とおっしゃるし、
mysql_real_escpae_stringをmysql_escpae_stringと書く致命的なtypoをしているし)
このSET NAMESの問題については『MySQL徹底入門』でも触れられていたはず。
処理に使うデータ(例えば項目名とか、質問文とか)や、構造化に使うクラス(例えばユーザクラスとか、グループクラスとか) ってどういう扱いにして、どこに入れてます? モデルと同じにしちゃっていいのか、別の専用の場所か。それともDB?
お前ほんと頭悪いな
どっちもどっち
ひっこみがつかなくなって傍観者のフリしてるのは恥ずかしい
引っ込みつかなくなってるのは420じゃん
425 :
nobodyさん :2008/10/23(木) 15:42:52 ID:kG4UC8qH
まぁ、結局使ってもおkってことだ
俺は使ってるけど問題ないよ
問題ないから使ってるとかってどんだけゆとりだよw
俺は使ってないけど問題あるよ
だから問題ある派は実証コード書けよ 適当なこと言ってんじゃねーぞ
問題が云々言ってる奴は日本語コードを理解してないカスプログラマだろ。 問題が起こる理由と、対策を知っていれば SET NAMES 自体が悪で無い事はわかるはず。 使わざる得ない環境が多々ある以上、対応出来るようにしておいて損は無い。
問題が云々言ってる奴=問題がある派 って捕らえたほうがいいの?
>>432 逆に問題って何?
エンコーディングの関係でエスケープAPIが動作不具合を起こす可能性がある。
って事理解してればいくらでも対策思いつくよね…それすら解らないのであればWebPG辞めた方がよいよ。
>>419 その値を変更したときに、ロジックに影響が出るか否か、で判断してる。
影響が出るなら、適当なクラスにまとめておく(別にMVCにおけるModelにこだわる必要はない)。
影響が出ないならDBに入れておく(必要ならWebからCRUDができるようにしておく)。
430=433な件。 はやく具体的にどんな問題が起こっちゃうのか教えてくれよ。
あのブログの管理者も、テストケース晒せって言われても晒せずに誤魔化してたな。
アフィ厨のあの人ですね分かります
>>436 >問題が起こる理由と、対策を知っていれば SET NAMES 自体が悪で無い事はわかるはず。
この日本語は、SET NAMESには問題があるけど対策を知ってればどってことないよ
って意味にしか取れないんだが何か最近新しい文法でもできたの?
正確にはSET NAMESに付随してだな
ってか、確かもう自動変換自体オフに出来るようになってたよね? オフにしたら何の問題もなくね?
>>439 >この日本語は、SET NAMESには問題があるけど対策を知ってればどってことないよ
SET NAMES自体にが悪では無いと書いてあるが。
しょうもない揚げ足取りはしないくていい。
>>433 で起こりうる問題点挙げてるだろ。
<font>タグは使わずにCSSでデザイン変えたほうが良いみたいな話だろ どうでもいい話題で伸びてないでZFの話しようぜ!
include_pathにはZendのある/libraryを設定してるんだけど Zend_Loader::isReadable('Validate/NotEmpty.php'); はtrue is_readable('Validate/NotEmpty.php'); はfalse になるんだけど これバグ?
お前の頭の中がな
ちがうちがう /test/Validate /library/Zend/Validate/NotEmpty.php ってあったとして include_pathに /test /library って設定してると Zend_Loader::isReadable('Validate/NotEmpty.php'); はtrue is_readable('Validate/NotEmpty.php'); はfalse になる
is_readableってinclude_pathは見てくれないのか でもなんで Zend_Loader::isReadable('Validate/NotEmpty.php');はturuになんの? なっちゃだめじゃね?
お前は何を言ってるんだ
存在しないファイルなのに存在するって言われるの?
もっかいまとめてくれ。 どの情報が正しくてそうでないのかが良く分からん。
453 :
まとめ :2008/10/26(日) 00:29:36 ID:???
include_pathには/Zendのある/path/to/libraryを
set_include_pathでセットしてあります。
それで
require 'Validate/NotEmpty.php';
みたいにやっても当然エラーが出ます
しかし、
Zend_Loader::isReadable('Validate/NotEmpty.php');
ってするとtrue(このファイル存在しますよ・読み込めますよ)になるんで
おかしいですよね〜
って話です。
で、多分これと同じことを言ってる公式のヤツ
http://framework.zend.com/issues/browse/ZF-2985
まぁなんかLoader.phpから見てるんだろうねぇ
isReadableの該当箇所読んでみ。 fopen("Validate/NotEmpty.php", "r", true); で判別してるから、一応readableではあるはず。
↑いやパス通ってないはずだろ
>>455 その挙動は正しくても
includeの前にisReadable()呼んでから
trueならincludeみたいにしてる箇所があるんだから
そういう動きじゃダメじゃん
Loader.phpの中のfopenからは見えるという挙動は間違ってないのか isReadableというメソッド名が誤解を招いてるだけで
PHPのfopenの仕様が悪い気もしないでもないな…
fopenの第三引数をtrueにするとはinclude_pathからも探索するんだけど、 どちらにせよカレントディレクトリにあるかどうかも探索するみたい。 // ※実行スクリプトは/path/to/libraryに置かないように。 set_include_path('/path/to/library'); // error! //require_once('Validate/NotEmpty.php'); require_once('Zend/Loader.php'); var_dump(Zend_Loader::isReadable('Validate/NotEmpty.php')); // true var_dump(isReadable('Validate/NotEmpty.php')); // false // hoge.phpは実行スクリプトと同じ場所にある var_dump(Zend_Loader::isReadable('hoge.php')); //false var_dump(isReadable('hoge.php')); //true function isReadable($filename){ ...Zend_Loader::isReadableからコピペ... }
コントローラー名って、HogeFugaControllerとかにできないの? なんか上手くいかない。 アクション名もHogeFugaActionとかにできないみたいだし…
うおwマジだ サンクス
Zend_Soap_Serverを使った簡単なサンプルって無いですか? WSDL自動生成も出来るみたいだけど...
465 :
94 :2008/11/03(月) 08:38:22 ID:???
>>92 ,93,339,356
Zend_Loader::isReadableの件ですが、93さんのおっしゃるとおり、error_reportingを使ってゼロかどうかチェックしてね、ということで落ち着きそうです。
Zend_Loader::isReadable自体の変更は影響範囲が広いため、回避することで話が進んでいます。
詳しくは
http://framework.zend.com/issues/browse/ZF-2900 のコメントのうち Simon R Jones - 02/Nov/08 07:11 AMをご覧ください。
466 :
94 :2008/11/03(月) 08:58:00 ID:???
>>453 ZF-2985はisReadableの引数の与え方については議論していないと思いますよ
Zend_Loader::isReadableでtrueならrequireしてるような箇所があるのに requireできないものがtrueになってたら ダメじゃんってことなんですよ 具体例出すと アプリケーションの独自のバリデータをMy_Validate_NotEmptyとかじゃなくて Validate_NotEmptyにしたいときに 困るんです
468 :
94 :2008/11/03(月) 13:09:34 ID:???
>>467 話がかみ合っていないように思われます。
ZF-2985は file not existの場合にwarningが発生することを問題にしており、
あなたが指しているであろうBasil Guevarra さんはSubversion Revision9451
のロジック変更によりデグレードすることを指摘しています。
ZF-2985で取り扱うべきだ、というご意見をお持ちなのかもしれませんが、
new issueを作成して取り扱うべきでしょう。
お手数ですが下記にて投稿お願いいたします。
http://framework.zend.com/issues/secure/Dashboard.jspa
469 :
nobodyさん :2008/11/16(日) 06:00:20 ID:WM8aCUuH
すみません、つい最近触りだした初心者です。
ゼンド・ジャパン監修の「ゼンドフレームワーク入門」ていう本読んでますがいまいちよくわからないので質問します。
たとえば、プロフィールを紹介するサイトがあって
http://www.myprofile.com/ http://www.myprofile.com/address/ http://www.myprofile..com/school/ http://www.myprofile..com/vision/ という構成のサイトをZendFWで作るとき、各ディレクトリに一つずつデフォルトコントローラを含むphpファイル(index.php)を
置くんでしょうか?
というか、従来の静的なサイト構造の時と同じように.com/以下に物理的なディレクトリファイルを置いてもかまわないんですかね?
/actionName/name1/val1/name2/val2 でアクションを引数つきで実行するのなら、/address/がディレクトリなのか
そこにあるindexphpに含まれるアクション名もしくは変数名・値なのかどう判断するんだろうと疑問に思っています。
それとも、 myprofile.com/ 以下には子ディレクトリは作らず全部index.php内のアクションで/address/や/school/の
ページの表示をするんでしょうか?
すごく非常識な質問かもしれないですが、公式を見てもピンと来なかったのでどなたか良ければお願いします
物理的なディレクトリファイルとはZendのライブラリでしょうか。 普通はおかないですね。 > /address/がディレクトリなのか > そこにあるindexphpに含まれるアクション名もしくは変数名・値なのか > どう判断するんだろうと疑問に思っています。 ディレクトリかどうかというとmode_rewriteの対する設定の問題で、 一般的なFWでは大概一緒です。 > それとも、 myprofile.com/ 以下には子ディレクトリは作らず > 全部index.php内のアクションで/address/や/school/の > ページの表示をするんでしょうか? FWに処理させたいないようはそうですが、画像ファイルや静的なファイルを ディレクトリを作って配置するケースはありますが、それは設計次第ですね。 URLの調整を詳細に行いたい場合はRouterをカスタマイズして利用します。 ただ、最初に機能を評価するときは、いきなりRouterの動作は検証しにくい と思うので、コントローラーを一つ作って、 /コントローラー/アクション/var1/name1/ といった形のURLでやるのがありがち。
471 :
469 :2008/11/16(日) 10:05:08 ID:WM8aCUuH
>>470 さん
ご回答ありがとうございます
>FWに処理させたいないようはそうですが、画像ファイルや静的なファイルを
>ディレクトリを作って配置するケースはありますが
繰り返しになってしまって申し訳ないですが、
.com/profile/にindex.phpを置いて、その中でZendFWを使った処理をしてもかまわないんでしょうか?
(ZendFWを使ったプログラムがいろんなディレクトリに複数存在することになりますが、いいのかな という疑問です)
それとも、そうしたFWを使った処理は .com/index.php の中のアクションで処理するんでしょうか?
というのも、本を見ると「公開ディレクトリに置かれるphpプログラムは最小限にする」と書いてあるので
(/profile/ディレクトリや/address/ディレクトリは設置せずに)
profile情報もaddress情報もそのほかも .com/index.php から出力しろという意味なのかと疑問で。。
たとえばprofile情報が極端に少ないときに長大な .com/index.phpをいちいち読み込むのは
無駄なんじゃないかと思って考え込んでいます
原則としては1つにするくらい少ないほうが良いけど、分けたければ分けろってことでしょうか?
>ディレクトリかどうかというとmode_rewriteの対する設定の問題で
ありがとうございます、それも気になってることでした。
結局のところ、URLを ?name1=var1を/name/var1/と表示するのはmode_rewriteも併用しなければ
無理ということでいいでしょうか?
本には単純にZFWの機能で出来ると書いてあり、mode_rewriteに触れてなかったので疑問でした。
お手すきの時に応えていただけると幸いです。よろしくお願いします
> 原則としては1つにするくらい少ないほうが良いけど、分けたければ分けろってことでしょうか?
とりあえず、Yesかと。
設計は自由ですね。
> URLを ?name1=var1を/name/var1/と表示する
というのは、変数と値のセットをURLとして表示するという意味なら、
mod_rewriteではなくrouter->assembleで可能です。
rewriteは、あらゆるURLをエントリーポイントに振り分けるために使います。
本もいいですけど、オンラインマニュアルは見てました?
http://framework.zend.com/manual/ja/zend.controller.html
あの・・・その程度の知識と経験でFWはまだ使わないほうがいいんでないかな
>>472 ほんとにたびたびありがとう、助かりました
公式をもう少し真剣に読み込んでみますね
>>473 確かに素人プログラマ?なんですが、FWに触れることで
スクラッチでピンとこなかったMVCやオブジェクトを理解するヒントが
得られるかもなぁと思ったので。
今のままの『とりあえず動いてる』っていうレベルの上にいけるよう頑張ります
mod_rewriteにせよ、ブートストラップ型のディレクトリ構造にせよ、PHPコーディング以外の部分を理解してないうちはZFを導入してもチンプンカンプンになる予感。
まぁ、半分同意。ZFは学習コストが高い。 開発力、設計力がないとまともなものは何もできないからね。 ただ、ガッツがあれば初心者が学ぶ題材にはいいと思うんだよね。 ソースはphp5ネイティブだしドキュメントはしっかりしてるし。 間違ってもいきなりサービス公開とかはしてほしくないけど。
ドキュメントはしっかりしてる風に見えるだけ。 作り込もうと思ったら情報抜け過ぎてて詰まる罠。
どんな情報が?
全体的に。 俺はコントローラ、ルータ、ディスパッチャあたりをカスタマイズしようとして萎えた。 結局ソース読んだけども。
480 :
469 :2008/11/16(日) 18:10:04 ID:NmOYkuM+
ZWFの入門書に書いてあることを理解したくらいじゃだめってことでしょうか 本や公式を理解してもその他の必要条件もクリアしたとは言えないわけですか? その場合、どんな資料や本を参考に学習したらいいのか良ければ教えてください もし書籍やサイトを教えてもらえたら幸いです 気が向いた方よろしくお願いします
自分で考えろ
ダメなんじゃなくて、本当に理解する為には基盤となる事を学ぶ必要があるわけで、 それはZFをいくら学んでも身につかない部分。
>>479 あのレベルのドキュメントとAPI読んだら、
あとはソースって正しいと思うけど、
萎えるってどこに?
>>480 本や公式がちゃんと理解できれば、まぁスタートラインには立てるよ。
ただ、他の方が書いているのは、
>>469 や
>>471 を見れば、
理解できていないことは明白だし、理解しようと思ったら、付随することも
自分で勉強しないとだめ。
それはたとえば、mod_rewriteだったり、デザインパターンだったりするわけで。
>>480 さんの技量、詳しくはわからないですけど、あの書き込みからだと
基本的なWebアプリの理解が足りないように思われても仕方ないですよ。
いろいろ意見ありがとうございました 参考にさせていただきます
比較的ソース綺麗なほうなんだから ソース読めばいいじゃん こんなもん
ソースは綺麗だが、冗長な実装なので隅々読むのは面倒だろうし時間の無駄。
多様な実装を可能にするために、冗長ぎみのソースになってるのは確か。 無駄をパフォーマンスに影響させない設計が必要になる。 この点、CIとは対極にある気はする。
Zend_Formで リンゴ 100円 [ ] みかん 90円 [ ] さかな 222円 [ ] [注文][リセット] みたいなのをテーブルで作るときって 一体どうしたらいいんですか? デコレーターを自分で作るのが一番なんですか? Zend_Form意味がわかりません><
デコレータ使うと面倒だから一度elementをrenderしたものをviewにassignする方がいいよ
デコレーターだったら、 DtDdラッパーをぱくってTrTdラッパーを作ってパスを通す フォームのHtmlTagデコレーターのオプションでtag=>tableするだけで 自動でテーブル作れるから、フォームの量産具合によるんじゃない?
1.7出たヨ
ProgressBarのサンプルキボンヌ
日本人って吉田さんだけか
496 :
nobodyさん :2008/11/20(木) 00:40:28 ID:HrZmpLyB
質問します
フロントコントローラが
http://hoge.com/~userDir/index.php というような位置にいるとき
これのコントローラの実体は
application/controllers/indexController.php という場所にあるとします。
このとき、indexController.php の中で行われている require_once '../test.php';は
フロントコントローラindex.phpの場所からの相対パスをとるべきなんでしょうか?
ためしに require_once '../test.php';を実行してみたところ
hoge.com/test.php の値を返してきました。
が、 require_once 'test.php'; をやってみたら
application/controllers/test.php の値を返してきたんですが、、
何か単純なミスしてるのか、ZFWの特別なやり方があるのか気になります。
すみませんが教えてください
>>496 PHPとして正常な動作です。
includeパスの優先順位の問題かと。
試しに application/test.php を設置してから、require_once '../test.php';を試してみてごらん。
498 :
nobodyさん :2008/11/20(木) 07:37:17 ID:HrZmpLyB
>>497 アドバイスありがとうございます
application/test.php と hoge.com/test.php が存在する状態で application/controllers/indexController.phpから
require_once '../test.php';を実行したところ hoge.com/test.phpの値を返しました
これで正常なんでしょうか?
正常なら、コントローラファイル内のrequireはフロントコントローラからのパスで考えればいいんですね。
ZF以前の質問になってしまって失礼しました。
正常じゃないですね。 エントリーポイントでなんかしてるとか? おいてあるファイルがなんかしてあるとか、実際のコードの該当部分が ないとわからないですけど。
正常ですよ。 PHP標準設定ではinclude_pathの最優先がカレントディレクトリ(上記の場合hoge.com/~userDir/index.php)なので、そうのような動作になります。 indexController.phpからの相対パスで記述したいなら require_once dirname(__FILE__) . '/../test.php'; と記述すればOKです。 他にも set_include_path() でinclude_pathの優先順位を変更したり、 chdir() でカレントディレクトリを変更する事で挙動を替える事が出来ます。
え、その挙動ってphp4から変わった?それとも前から? requireを書いたファイルからの相対が ".:/usr/lib/php"のドットの意味じゃなかったっけ?
いや、すまん、マニュアル読んだ。了解
みなさん詳しいレスありがとうございます。 本当にありがとう!
久しぶりに更新しようと思ったら、ダウンロードするのにいちいち登録しなきゃならなくなったのか。 面倒だからZFやめたw
そんなことでやめたり始めたりするなんて楽でいいね
山田祥寛のZend Framework徹底入門買ったけど、めちゃくちゃ良いよ。 ルーターやフロントコントローラのカスタマイズ方とか、 プラグインの起動タイミングとか、O/Rマッパーとか、Viewに関しても 凄く詳しく乗ってる。 巻末にクラスとメソッドリストも付いてるし libraryディレクトリの中のソース読む作業から開放される。 smartyとかpearとかの本がリファレンス写しただけ+ちょっとおまけな感じで 山田氏の本は微妙だと思ってたんだけど、この本は凄く良い。
マニュアル見れば分かることじゃん
あのマニュアルで分かるのは、 すべてがお見通しな天才か、すでにJAVAを齧ったことのある普通の人か 何も疑問に思わず丸暗記する凡才かのどれかでしょ。
読解力と応用力があるプログラマーなら分かると思うが
少なくとも公式マニュアルより読みやすくて、実践向けの解説かと思う。 数千円で勉強時間を短縮出来るなら安いもんだ。 俺は買ってないけど。 これから勉強する人には勧めたい。
>>507 昔藤野 真吾のPHPフレームワーク Zend Framework入門
っての見てやってたんだけど、そっちの方がいいのかな?
もし両方見た事あるなら、感想を教えて欲しい。
こっちは古いからVer的にも1.0辺りで今だと結構違いがあるしなあ。
その徹底入門はどのぐらいのVerで話しているのだろう。
>>512 緑本は公式マニュアル+多少のサンプルレベルで内容物足りなさ過ぎ。
コーディング規約がまるっと乗ってるのは便利だけど。
ひどい自演ですね
>>514 徹底入門立ち読みしてみなって。マジで中身濃いから。
PHP界隈では信じられない位ちゃんとした本。
数百冊売れれば良さそうなフレームワークの本に
ここまで頑張る所に俺は情熱を感じた。
マニュアルがかなりしっかりしてるから 本出すとなればそれなりの出来にしないと マニュアル読めばいいじゃんって言われるからな
本出すことありきなのが悪いんだろ
同じこと感じてる人が多くてビックリというか笑ったw
>>512 自分も以前買って半年放置してたZendFramework入門読んでやってるんだけど
その後出た徹底入門てやつみたらあまりの落差に鬱になった
〜入門に2800円払ってるし今から3800円?出すのはキツイ、、 でもわかりやすいんだよな明らかに
どっちもDBとかPDFとかコンポーネントの紹介部分はなくてもいいし
そういう意味じゃ同じなんだけど、概念の紹介部分に差がスゴイある
〜入門を放置してる間に徹底入門が出たみたいで自業自得なんだけど
ほんと大失敗した
というか、〜入門の通りにVer1.6で試してるんだけど動かないです。。
自分がバカすぎるのかもしれないけど
なんて悩んでる時間が無駄か 買ったほうがいいのか ホント鬱だ
山田本、今まで何冊か買って相性悪かったんだけど、この本だけはいいよ
もし今からはじめる人がいたら参考にしてください
マニュアルで理解できる頭のよさや経験があれば一番良いんだけどなぁ
519 :
518 :2008/11/23(日) 23:41:18 ID:fMqqqFAZ
すみません、本の話題が出たところでほんとに恥ずかしいんですが質問させてください 上にも書いたんですが、「ZendFrameWork入門」って本の第4章、「RSSまとめサイトを作る」ってやつですが ZFW1.6以上で本に書いてある通りやってちゃんと動いてる方いますか? 自分は出版社のサイトからサンプルプログラムDLしてそのままローカルのサーバに入れたんですが 動きません。 ループし続けてエラーになってます。 同じ本利用してる方の意見が聞きたいです、よろしくお願いします (こういうこと書くと宣伝みたいに思われそうなんですが、山田本だったらWINGSのサイトで 山田本についての疑問点やわかりづらい点質問したら教えてもらえるんですよね。。 そういう意味でも自分みたいなほんとの初心者は徹底入門買った方がいいかもです。)
あれは、結構前のバージョンのZFで試してもmod_rewriteで永遠ループ起すサンプルが 載ってた気がする。俺は場所突き止めて治したけど、作業的に無駄かと… どっかで、無いアクション読んで、リダイレクト先でアクションが無いから どっかにリダイレクトしてループ始めてたと思う。 うる覚えだけど。
うろ
すまん、うろ覚えしてた。
523 :
nobodyさん :2008/11/24(月) 00:31:13 ID:yMz0LXvo
>>520 ほんとですか? ありがとうございます
自分も自力で探そうかなぁ、でもどの道まともな本買いなおしたほうがいいか…
メドがついただけありがたいですが、買い物失敗を駄目押しされたようで悲しいですが
ありがとうございました
なんと、ありがちなデバッグ能力まで鍛えられる良書ですね!素晴らしい。
まだまだ、ゴリゴリ開発中のFWの本を出すっていう・・・ まぁ、それでも読みたいか本?って感じ Zend Studio for E 使ってたら本なんてイラネって思うけどなぁ
日本語でおk。
529 :
sage :2008/11/24(月) 23:11:17 ID:???
>>527 ,528
日本人で作業しているのは多分2人しかいない(翻訳がTakagiさん)ので、訂正箇所見つけたら修正協力お願いしま−す
>>531 私の場合は翻訳者に直接メールを送りましたよ。
Zend Studio For Eclipseでgetter setterを自動育成すると get_hogehoge() set_hogehoge() って感じになるんですが、Zendコーディング規約だとcamelCaseですよね。 これって設定で変更可能でしたでしょうか? 使ってる人います?
あ、そうじゃなくて、 protected $_hogehoge; ってしてる時に、setter getterを作ると「_」が入るって当たり前か・・ごめ。
そうだとしてもメソッド名にはいらんでしよ
_setHogehoge() _getHogehoge() が正しいんじゃないか?
537 :
nobodyさん :2008/11/25(火) 14:27:52 ID:TqJfzk7a
接頭の_は、メソッドのアクセス制限修飾子依存だよね。 クラス変数のアクセシビリティとは別で。
あ、すまん、日本語下手。忘れて
540 :
529 :2008/11/25(火) 22:20:33 ID:???
>>531 日本語翻訳の修正は532さんの方法で良いと私も思いました(笑
ロジックの修正はお手数ですけど531にて記載いただいたアドレスにお願いしますm(__)m
MatthewとかThomasとかRalphさんがあっさり直してくれるかもしれませんし。。
ありがとうございます 現状、特にレポートすることがあるわけではないんですが・・・ 翻訳者の方のメルアドってどこかに載ってますか?
542 :
nobodyさん :2008/11/26(水) 04:57:47 ID:4hnD4pTR
.htaccessでのmod_rewriteが動作しないんですが、その場合 httpd.confに処理を任せていいんでしょうか? RewriteEngine on #RewriteBase / #これはコメントアウトしてます RewriteRule !\.(js|ico|gif|jpg|png|css)$ "C:/Program Files/Apache Group/Apache2/htdocs/index.php" とhttpd.confに書いた場合は動作しているんです。今のところは簡単なサンプルを動かしてるだけですが、 .htaccessでちゃんと設定しないと複雑なアプリを作ってるうちにおかしくなるということはありますか? 環境はwinXP apache2 php5.23 ZF1.6です
AllowOverrideしてないだけじゃ?
というかスレ違い
httpd.confで設定できていれば問題ないよ。 あれだよね。 ZFのコントローラーを実装するのにmod_rewriteの設定が必要で mod_rewriteのスレで聞いたらあとは自分でやれと言われてここに来たって感じっしょ。 とりあえず、がんばれ
>>543 してるんですが挙動が変なんです
>>545 そんな感じです。
.confだけでOKとわかって安心しました、ありがとうございます。
549 :
nobodyさん :2008/11/27(木) 21:41:31 ID:nkJ4I6fb
コントローラの使い方がいまいちわからないんですが、 ページ全体の要素や構成を決めるのではなく、たとえばグローバルメニューや フッタ部分など複数のページで使いまわされるパーツを作るのに使うのも ありなんでしょうか? それはモデルで定義するべきなのかな?
それはテンプレートではないでしょうか
コントローラーの使い方じゃぁないね。 まぁ、だいたい設計は自由だけど、たとえば、 全体の構成ならZend_Layout 共通のメニューやフッターはviewのpartialヘルパーで、 モデル=データ由来のメニューであれば、 コントローラーで準備しとくとか。 もちろん、専用のコントローラを用意しておいてアクションヘルパーを呼ぶとか そりゃまったく自由なわけで
552 :
nobodyさん :2008/11/27(木) 22:14:33 ID:KUrXy2lE
アクションコントローラのinit()とpreDispatch()ってどういう場合に 使い分ける必要性出てきますか? 間になにか挟まる事がありえるんでしょうか。
>>550-551 どうもありがとうございます。テンプレートってsmartyとかかな?
Zend_Layoutてのがあるの初めて知りました、使ってみます
554 :
nobodyさん :2008/11/27(木) 23:29:14 ID:DhKL8FdT
AMFまわりの情報でどこか熱いサイトないでしょーか。 Flexとの連携は面白そーですね。
ZendFrameworkで業務系システムを作るとマジ死ねる。おすすめ。 おまいらはどんな何系のシステムでZF使ってますか?
それはなんで?
>>555 Zend_Amf_Server試してみたけど未完成過ぎる印象。
・提供していないPHPメソッドを実行できる(不具合?仕様?)
以下のコードでZend_Json::encodeをFlashから実行出来てしまう。
connection.call("Zend_Json.encode", responder, params);
これは Zend_Amf_Server::_dispatch() の実装が原因
・ネームスペースが機能していない
$server->setClass("Hoge", "Namespace");
としてもNetConnection.call("Namespace.method") が呼ばれない。
これも Zend_Amf_Server::_dispatch() / _handle() あたりの実装が原因
・エラーが起こる
Zend_Amf_Server::_dispatch() 150行目あたりに、
PHPのWarningが発生する箇所がある為、Flash側で不正なAMFパケットとみなされてしまう事がある。
例)存在するクラスの存在しないメソッドをコールすると起こる
connection.call("Zend_Json.hoge", responder, params);
不具合なのか、仕様なのかわからんので修正する気にならん。
Parser系は普通に使えそうなので自前でサーバ部分(リクエスト受けてレスポンス返すだけ)を作れるならいいかもね。
559 :
529 :2008/11/29(土) 09:54:36 ID:???
>>552 initは初回だけ実行すれば良いもの、たとえばデータベースへの接続作成とか
preDispatchはアクションを呼び出すたびに(どのアクションかにかかわらず共通で)実行したいものに使うと便利です
>>558 ソース見てみましたが、Unimplementedと記載されているfunctionたちが目に付きますね
560 :
nobodyさん :2008/11/29(土) 12:15:11 ID:Q7h0AD5b
エラーコントローラってのがあるけど、これは不動産サイトの物件情報で 物件IDが存在しない時なんかに、「該当の物件は存在しません」みたいに 使えばいいのかな?
物件IDが不正な値なのか、それとも 物件を検索したけど、該当するIDが存在しなかったのかによる。
そんなときにエラーcatchしてくれるか?
>>560 好きなように使えばいいんでは?
物件IDが存在しないときに、例外を投げ、かつエラーコントローラーにわたるように
設定し、エラーコントローラーでcatchすればそれに応じたエラーメッセージは出せるだろうけど、
物件IDが存在しない程度で例外か?ってのは気になる。
普通は、DBから不正な値が返ってきたとか、想定外を想定して作るもんじゃない?
検索でヒットしないってめっちゃ普通の現象のように思うけど。
まぁ自由なので個人的な感覚にすぎないけどね。
俺そんなときは_forwardでエラーコントローラーに飛ばしてる
ご意見ありがとう へんに機能として用意されてる分「使わなきゃ」って気になっちゃうなぁ 妙に考え込んでナチュラルじゃない処理をわざわざ作らないようにしよう、、ありがとうございました
日本の新聞社とかが古い記事IDを無効にする感じのニュアンスなら エラーコントローラに投げて このページは削除されました->TOPページのリンクへ誘導でOK。 もし、そういう意味じゃないならフレームワーク以前の問題だな。
リクエストオブジェクトのことで質問なのですが、 URI、GET、POST、COOKIEなど外来ではないデータで、たとえば認証済みのユーザーIDなど、 クライアントが自由にセットできるわけではないが、クライアント固有のリクエスト情報を 格納・取得するための仕組みはないでしょうか? リクエストオブジェクトを拡張するか、レジストリやフロントコントローラーに保存などを 使った方がいいでしょうか。 Zend_Controller_Request_AbstractにあるgetUserParamというのが使えそうかと思ったのですが、 実質的にgetParamとほとんど変わらない実装になっていますよね。 Zend_Controller_Request_HttpではgetParamでGET POSTから取得できるできないの違いは ありそうですが、/controller/action/key1/val1/userid/hoge/ みたいな感じでgetParamに混入できる可能性を制約したいと思っています。
セッション使えば?
なるほど。 リクエストの方がTestがやりやすいかと思って検討していたのですが、 セッションを使う方がすっきりしそうなので、セッションで行きたいと思います。 ありがとうございました。
getParamsはsetParamSources(array('_GET'))とかしておく事で ソースを絞れるっぽいけど。
そうなんですけど、基本的にルーターのインフレクターがセットするデータについては、 paramsに入ってしまうのでparamSourceじゃ絞れないですよね。 インフレクター側で何を受け入れるか、もしくは受け入れないという設定をしたものを 使えば制御できることはできるんですけど・・・
リクエストクラス自作するのはあかんの?
getParamの方がごちゃ混ぜでも getUserParam?みたいな名前の奴は、アクションとパラメータ?か こっちでセットしたデータしか入ってないんじゃなかったっけ? 何か使い分けられるみたいなのをどっかで見た覚えがあるけど。
>>572 そうですね。状況によってはリクエストを自作する方向で考えたいと思います。
ユーザーIDについてはZend_Auth::getInstance()->getIdentity()でいいやってことで
リクエストからの取得はあきらめました。自動的にセッションに保存されるようですし。
>>573 getParamとgetUserParamの違いは、Zend_Controller_Request_Abstractの段階では
$request->_paramsから返すだけで、ほぼ同じコードなので同じデータのようです。
セットされるのはルーター由来の値で、まぁ、リクエストオブジェクトなんだから当然といえば当然ですね。
マニュアルを読んだ時は、getUserParamってコントローラーでセットしたり
ルータでもルートで明示的に受け入れ設定した変数だけかな?
と誤解してしまったので、
>>567 みたいな質問をしてしまったのですが、
リクエストオブジェクトはリクエストなんだなと、今は理解しております。
テストが簡単だからという理由で、別の情報や機能をリクエストオブジェクトに
含めようという方が邪道だったと反省しています。
575 :
nobodyさん :2008/12/02(火) 12:22:41 ID:X8fwryD+
モジュールの機能について教えてください。 モジュールを使うことで、どんなメリットがあるんですか? 「モジュール自体が一つの完結したMVCアプリケーション」という解説を見ましたが、 それではモジュールをまたいでmodelのincludeやクラスのextendsをしては いけないのでしょうか? ディレクトリがまとまるからそこそこ大規模なサイトになったら見やすい・管理しやすいのかなと は思うんですが、モジュール不使用と比べた大きな長所があれば教えてください そういう経験談を聞かせてくれたら嬉しいです。
1.7.1
>>575 includeやextendsは自由に使っていいと思うよ。
Zend推奨のディレクトリ構成だと、モジュール単位で独立しちゃってるイメージだけど
自分は /controllers/ModuleName/ でディレクトリ掘って、サブモジュール的なイメージで使ってる。
サイトに大きめの機能追加をする時にモジュールを分けておくと、
ネームスペースが独立してコントローラ名の競合が防げるメリットがある。
トップにも開発ニュースにも書いてないからどこかと思ったけどダウンロードページ見たらあった、すまん
>>578 なるほどー 詳しくありがとうございました
モジュール使ってやってみようと思います
582 :
nobodyさん :2008/12/03(水) 14:09:39 ID:C1dbydXA
Zend_Db_TableのfindParentRowってイチイチSQL発行されてるの? 負荷とか大丈夫なの?教えて
MVCの各役割なんだけど、俺が最近入ったZF使ってる会社は、 各コントローラーの各アクションに、select()->from()-> where->leftJoin()->leftJoin()・・・以下略と書きまくっている のだが、これでいいのだろうか? 俺の理解だと、コントローラーはリクエストパラメーターにより 上で書いたような処理をモデルで行ったり、その結果をビューに 返したりするものだと思うのだが。 さらにいうと、ModelでForm部品用の設定をしている。DBの項目が フォームの項目だからだって。
アクションコントローラーがそういうことする場所って決めてるならそれでいいんじゃね?
MVCにに縛られる必要は無いんじゃない? 規模が膨らめばそれこそMVCに属さないコードとか出てくるしさ。 長期稼働させない一時的なシステムとか、叩き台程度の作成ならそのやり方でサックリ作るのもありでしょう。 そうじゃないなら、炎上する前に転職すれw
586 :
583 :2008/12/06(土) 03:22:51 ID:???
まあ、確かにMVCにこだわる必要はないか。 MVCじゃない、ライブラリ的なクラスを切り分けるくらいのことを したいとは思う。 でも、一時的なシステムじゃなくて、今後うちの会社の核になる システム。多分炎上はしないかな。メンテしにくそうだけど。
>>583 てか、それが普通だろ
ウェブフレームワークのMVCと言われている処理の主流はそんなのだよ
モデルはDBをオブジェクト指向で操作するインターフェイスを提供、
actionはそれをドライブって感じ
>>587 普通では無いだろw
そのAction内でしか使わないDBクエリならActionに直書きでいいだろうけど、
複数Actionから参照されるようなDBクエリなら、普通はモデルなりライブラリなりに切り分ける。
同じ処理がある時に切り分けるのはプログラミングの大原則だからするのは当然。 ここではactionにモデル操作を書くことの是非が問題になっているんだろう。
システムの決めごとの問題と言ってしまうと身も蓋もないけど、 ActionControllerからモデルを利用するにしても、newしてメソッドを呼ぶとして そのアクション固有のパラメータはやっぱりコントローラーで設定するんだよね。 境界線をどこに置くかっていう問題のような気はする。
>>589 >>583 ではモデルを作らずZend_Dbを直に使ってるから、MVC的にこれは普通はしないよねって事。
Zend_Dbみたいなオブジェクト指向DB操作インターフェイスを「モデル」と捉えて コントローラで操作するやり方は、railsとその影響を受けたFWでは一般的じゃね? ZFを実際には使ってないからZend流の普通は知らないが。 Zend流ではZend_Dbをいわば広義のモデルでラップするの?
>>592 Zend_Dbでselect()とか使ってるのであれば、SQL直書きとなんら変わらないんだぜ。
オブジェクト指向でDBへのコネクションを管理できるだけであって、
データの操作は最低限のAPIしか無い。
モデルを作るためのDBアダプタって感じかね。
Zend_Db_Tableなら低レベルO/Rマッパとして機能するけど、
やはり1枚ラップしてやらないとコードが汚れる気がする。
ZF、何か完成させようとすると超むずい…。
エラーコントローラーを、モジュール別に登録する事って可能ですか? モジュール別に404エラーの出力内容を制御したいのですが、 現状ではErrorControllerが全てのエラーをcatchしてしまう為、処理が無駄に入り組んでしまっています。
モジュールのコントローラーのpreActionやコンストラクタで個別のErrorController設定するか、共通のErrorControllerからモジュール判断してforwardしてもいい気がする
モジュールが追加された場合に、デフォルトモジュールの コントローラと名前が被った場合は モジュールが優先されて、次にコントローラ。 だから、モジュールと同じ名前のコントローラを作って、 __callから飛ばせば良いんじゃないかな。 モジュールにアクションが無い→同じ名前のデフォルトコントローラのアクションを探す __callで引っかかる。 __callがモジュールのエラーコントローラへ_forward やってみてないからわからないけど。
Zend_Loader_PluginLoaderについて質問があります ドキュメントでは ---------- Zend_Loader_PluginLoader には、 複数のプラグインの間でオブジェクトを共有する機能もあります。 その際にシングルトンインスタンスを作成する必要はありません。 この機能は、静的レジストリを用いて実現しています。 インスタンスを作成する際に、 コンストラクタの 2 番目のパラメータでレジストリを指定します。 // プラグインを静的レジストリ 'foobar' に保存します $loader = new Zend_Loader_PluginLoader(array(), 'foobar'); PluginLoader がインスタンス化したその他のコンポーネントで このレジストリ名を使用すると、すでに読み込まれているパスやプラグインを使用できます。 ---- と書いてあるのですが、オブジェクトを第2パラメーター付きでnewすると、 スタティックプロパティは初期化されてしまって、次にインスタンスをとった 時に再利用できるようには思えないんですが違いますか? 再利用するのであれば、シングルトン等で独自にインスタンスを保持 しないとだめなように思うのですが・・・
必要ないって書いてあるから大丈夫なんじゃない? ソース読んでないけど、例えば、Zend_Loader_PluginLoaderが シングルトンのフロントコントローラにプラグインオブジェクトを 預けたりしてるか、独自のシングルトンを作ってそこに保存してれば大丈夫だろうし。
someController: $loader = new Zend_Loader_PluginLoader(array(), "hoge"); forwardedController: $loader = new Zend_Loader_PluginLoader(array(), "hoge"); たぶん、こんな感じで2か所で呼ばれても同じ名前を使っていれば 同じプレフィックスパスやクラスが使えるという意味だと思うんですが、 実際には public function __construct(Array $prefixToPaths = array(), $staticRegistryName = null) { if (is_string($staticRegistryName) && !empty($staticRegistryName)) { $this->_useStaticRegistry = $staticRegistryName; self::$_staticPrefixToPaths[$staticRegistryName] = array(); self::$_staticLoadedPlugins[$staticRegistryName] = array(); } foreach ($prefixToPaths as $prefix => $path) { $this->addPrefixPath($prefix, $path); } } こうなってて、new したときに self::$_staticPrefixToPaths[$staticRegistryName] = array(); self::$_staticLoadedPlugins[$staticRegistryName] = array(); これで、スタティックに登録されたプレフィックスパスやプラグインが初期化されてしまうんですよ・・・ で、それをZend_Registoryにでも保存してるのかと思いきやそんな形跡はないんですよね・・・ レジストリ名一つにつき、自前でインスタンスを一つにしぼって、インスタンス化させないルールにすれば、問題ないんですけど、 ドキュメントの解釈が違うのかなぁ・・・
多分、他のクラスに受け渡すメソッドと受け渡す内容は この後も変更しないだろうし、入れ物は単に配列なので addPrefixPathとかget|set|clear PrefixPathとかを作って、 作り変えちゃえば大丈夫じゃないかと。 それかバグ報告ですかね。 ドキュメントの方が予定されていた物っぽく感じるので。
うーん、そうですか。 ちょっとSVN確認してみます。 if (!isset(self::$_staticPrefixToPaths[$staticRegistryName])) を加えればいいんだと思うんで・・・
603 :
nobodyさん :2008/12/12(金) 16:18:51 ID:5OtupgTi
zend_Layout使ってみようと思うんですが、 たとえばヘッダとフッタを定義したテンプレートファイルがあるとして、 これを取り込む各ページごとにユニークの<title></title>情報を入れようと思ったら どうしたらいいんですか? <html> <head> <title>ここを変えたい(例:12月13日の日記 / 「秋刀魚を食べた」)</title> </head> <body> <img src="header.jpg" /> ↓この下が各ページのコンテンツだよ <?php print($this->Layout()->content); ?> <img src="footer.jpg" /> </body> </html> っていうテンプレートです(現状)。
変数に割り当てる
レイアウトスクリプト内でも、ヘルパー使えるから $this->headTitle() などとする。 特殊なやつはレイアウトオブジェクトにアサインしてもいい。 その辺はドキュメントに出てるよ
XMLとオブジェクトとの変換にPEARのXML_Serializer/Unserializerを使っているのだけど、 Zend Frameworkには同等のクラスライブラリ無いよね? みなさんどうしてる?
>>608 さんくす。
XML_Serializer/Unserializerの手軽さはないが、これ使ってグリグリするかな。
どもでした。
Zend_Form使って確認画面出すのってどうやるんでしょうか? まさか確認画面なんていらないよ!てことじゃないですよね。
preDispathやinit内で、Actionの実行を止める事って出来ますか? preDispatch内で認証をしており、 未認証のユーザはエラー画面を表示したいのですが…
>>611 俺はpreDispathから未認証なら$this->_forward()でログイン画面に飛ばしてる。
$this->goto() 使ってるんだけど_forwardのほうがいいの?
goto()って元からあったっけ?
615 :
612 :2008/12/15(月) 14:38:58 ID:???
俺もgoto()ってはじめて知ったw
で、
>>611 なんだけど、エラー画面に飛ばしっぱなしなら_redirect()の方がいいかもね。
俺は認証後に本来表示すべき画面に戻したいから_forward()使ってるけど。
ありがとうございます。 でも、_forwardだと共通の画面しか出せませんよね? 状態によって、エラーメッセージを振り分ける必要がある場合はどうするのがベストでしょう? 理想としては public function preDispatch() { if (!$auth) { // ここで認証状態を判別して、個別のエラーメッセージを表示 // dispatchループを抜けて、継続するActionは破棄する } } みたいな処理にしちゃいたいのですが…。
617 :
612 :2008/12/15(月) 15:21:23 ID:???
>>616 > でも、_forwardだと共通の画面しか出せませんよね?
> 状態によって、エラーメッセージを振り分ける必要がある場合はどうするのがベストでしょう?
個別メッセージがどのような条件で切り替えられるのかにもよるが、
preDispatchで処理するぐらいだからそれほど細かいものでも無かろう?
で、_forward()してもUriは変わらない、$this->_getParam()でcontrollerやactionを取ると元のままなので、
それらで判別してエラーアクション内でメッセージを切り替えるってのはどうよ。
#ただ、コントローラの独立性が少し失われてしまうが...
他には、Zend_Registryに格納するしかないかなぁ。
俺なら、エラー内容をリクエストオブジェクトか、 レスポンスオブジェクトに設定して_forward
619 :
612 :2008/12/15(月) 15:43:30 ID:???
あ、そっか。
俺も
>>618 のレスポンスオブジェクトを使うのがいいかと思う。
>>617 は忘れてくれw
ありがとうございます! やはりAction間で値を受け渡す変数は必要になるんですね。 色々試してみます。
なんかさ、他のフレームワークはJavaのStrutsしか知らないんだけどさ。 ZFがフレームワークとしてユルイってのを実感してるよ。 Action中に十何個ものswitch caseがあってメンテする気起きねえ。
なんだそりゃ
日本語でおk
624 :
621 :2008/12/16(火) 02:49:58 ID:???
すまん。うまい表現が見付からないのだよ。 switch case文の嵐以外の方法を知りたいだけ。
まずなんでそれが必要なの?
ZF以前に設計が腐ってる。 という事に気づけない621が腐ってる。 って事でおk?
627 :
621 :2008/12/16(火) 03:53:21 ID:???
いや、解決は求めてないよ。ボヤイただけ。スマソ。 単にZF使っただけってシステムで・・・。 設計なんて誰もやってないさね。力技で作って・・・。
中級以上のPGなら、設計なして突貫工事しても、そんな悪夢みたいな状況にはならんだろw
actionの中で何でswitchするんだ??
actionの数を減らそうとして、複数actionをまとめて中に条件分岐を入れていたら どんどん条件が複雑になっていってactionが腐れた というよくある失敗例に見える
631 :
nobodyさん :2008/12/16(火) 13:37:31 ID:Rl9W2bGt
以下のようにしてるんですが、ページが出力されません どこに問題があるんでしょうか? よろしくお願いします //IndexController アクション require_once 'Zend/Controller/Action.php'; class IndexController extends Zend_Controller_Action{ public function indexAction(){ echo date('U'); } //不要な場合は、メソッドの中は空でも構いません public function helloAction(){ //helloアクションメソッド Zend_Registry::set('testParam' ,'12345test'); $this->view->testP = "設定したテストパラメータは".Zend_Registry::get('testParam')."です"; } } //テンプレ <html> <head> <title>Hello World!</title> </head> <body> <?php print($this->escape($this->testP)); ?> </body> </html>
viewRendererが無効になってるんじゃないかと、思うけど確かなことは何も言えない。 $front->throwExceptions(true); 等でエラーの情報を提示してみたらどうでしょう。
633 :
nobodyさん :2008/12/16(火) 20:56:47 ID:Rl9W2bGt
>>632 どうもありがとう
viewRendererは無効にしてないんです
根本的に書式とか構造とかに問題があるのかなと思ったんですが
指摘がないってことはそうでもないんですよね? なんでかなぁ…
require_once 'Zend/Controller/Action.php';って書いてあるってことは ローダー使ってないと想像するけれど、 require_once 'Zend/Registory.php';はどこかでしてるの?
635 :
nobodyさん :2008/12/16(火) 22:23:00 ID:Rl9W2bGt
>>634 お恥ずかしい!忘れてました、コンポーネント呼び出すの!
このZend_Registryコンポーネントって、変数や配列の宣言に使うんですよね?
スクラッチで書くときみたいに $hoge = "変数です"; みたいな定義はZendFWじゃやっちゃいけないのかな
引数が2つしかないけど、変数の型(数値・文字列)は気にしないってことでしょうか
お前は何を言ってるんだ?
全部の変数をZend_Registoryに登録してたら、 各アクションでプロパティ名が被りそうで怖くて フレームワークの意味が無さ過ぎるNE。
>>637 ですね、、 定数みたいに限定的な要素に対してだけ使うべきなんですかね
変なこと書いて済みませんでした
サービスロケーターつうやつですか?
ZFってPHP5.2.4以降をサポート
http://framework.zend.com/manual/ja/requirements.html ってなってるけど、いつから? 俺が使い出したときは5.1.xだったと思うんだけどな。
CentOS5.2は5.1.6で、個人のリポジトリで5.2.6を公開しているところがあることは知ってるんだが、
何となく躊躇してる。
とりあえずPHP5.1.6とZF1.7.1でも、今使っている範囲では問題なく動いているっぽいが、
どういったところでPHP5.1系で問題があるのか知っている人いる?
>>638 ZFはコントローラクラスのアクションメソッド内に記述するのがメインだから
ベタ書きと違って、変数作っても全部がローカル変数になるよね。
だから、別のアクションメソッドで
同じ名前の変数作ってしまっても被らない。
逆に言えば、他のクラスからは、意図的に変数を渡さなきゃ、
値が受け取れないって事でもある。
ビューで変数の値を出力するために
$this->view->hoge = 'hoge';ってしなきゃいけない様に。
主にビュー以外の用途で、変数を運ぶトラックがZend_Registory。
フロントコントローラなんかで、サイトのタイトルとかDBの情報みたいな
各コントローラで共通する情報を登録しておいたりするのが普通かな。
ベタ書きからのフレームワーク移行は最初は大変だと思うけど頑張ってなー
>>640 ZFは知らないけど、PHP自体のPDOのバグとかいくつか修正されてるし
Zend_Dbの中身はPDOだから、ZF動いてても気持ち悪ければUPじゃね。
設定地獄で逆に動かなくなるかもしれないけど…。
>>643 PDOのバグとかクリティカルな問題はディストリがメンテしてないかなぁ。
本当は
ttp://www.jasonlitka.com/ から5.2.6を入れてみたんだが、
マッチパターンに日本語が混じる正規表現がうまく動かないというのが手元の環境で出て、
mb_ereg、ereg、preg全てダメだった。5.1.6やソースからビルドした5.2.5はちゃんと動いた。
環境の設定がらみかなと思ったんだが解決せずじまい。
jason のビルドに問題有りと決めつけているわけじゃないのだが、
さらに検証するのも面倒なんで、本鯖では避けてる状態。
ソースからビルドしてもいいけど、後々メンテ面倒だし。
つっても、jasonビルドも5.2.6で止まってるがなぁーw。
645 :
nobodyさん :2008/12/17(水) 16:28:02 ID:Fnh4GsCx
MVCについてしりたいです 基本的にデザインの構成はテンプレートファイル(.phtml)でやるわけですが、 パラメータを受けて同じページでも画面の一部が切り替わることってあるじゃないですか たとえば、ポータルサイトでよくある ・ログイン済みならメールの受信状況 ・ログインしてなければアカウント作成への誘導 みたいに。 ああいうのって、表示切替の規模や内容が単純ならテンプレ中で.phtmlの中でif文で 振り分ければいい気がするけど、実際にはパターンごとに別々のクエリを動かす可能性も あると思います(上の例だとメールの新着確認するとか) その場合、タイプごとにモデルを作ってその中でクエリからhtmlの部分的な書き出しをして テンプレの中に出力するようにするんですか? みなさんどんな風に処理してますか? ご意見お願いします。
そういうケースでは、おれはスタックを使う。 コントローラーで必要な条件を割り出して、必要なモデルで処理をして 結果をスタックする。 ビューはスタックを出力しまくるだけ。
俺も必要なデータを全てassignして、テンプレートは表示の振り分け以外のロジックいれないようにしてる。
ループとかは?
Linux環境でController名がキャメルケースで指定できないんだが、俺だけ? Windows環境で、コントローラ名がFooBarController.phpで、Viewのパスを/view/scripts/FooBer/で指定してたんだが、 Linuxへ移植したら「コントローラ名が見つかりません」って言われた。 試しにFoobarController.phpで、Viewのパスを/view/scripts/Foober/で指定したら通った・・・orz マジかよ・・・
650 :
649 :2008/12/17(水) 23:31:06 ID:???
×試しにFoobarController.phpで、Viewのパスを/view/scripts/Foober/で指定したら(ry ○試しにFoobarController.phpで、Viewのパスを/view/scripts/foober/で指定したら(ry viewのディレクトリ名違ってた。
>>646-647 ありがとうございます
しかしよく理解できません、スタックって? IT用語辞典で調べたら一番最後に格納したデータが最初に出てくる
いろんな要素を格納する箱、のようなことが書いてありました
具体的にはどういうことなんでしょうか?
>俺も必要なデータを全てassignして、テンプレートは表示の振り分け以外使わない
つまり、assign前のモデルやメソッドで情報の最適化はするんですよね?
本来テンプレートに任せるべきhtml出力も場合によってはそれ以前(モデルなど)の中で
してしまうということですか?
ともかくありがとうございました
>>653 >本来テンプレートに任せるべきhtml出力も場合によってはそれ以前(モデルなど)の中で
>してしまうということですか?
しないよ。
HTML形成に必要な情報だけをassignする。
HTMLの生成はあくまでテンプレート側、
だからテーブル組とか複雑なページ構成だとテンプレートコードが超カオスになる…
どうするのがベストなんだろうねー。
>>645 の挙げる例をloginStatusとして
まずコントローラはログイン情報を元にloginStatusModelを生成。
このときログインしてなかったらloginStatusModelはnullでもいい。
あとはそのままloginStatusModelをビューに渡す。
全体的なビュースクリプト(ex. index.phtml)からログインバー部分のテンプレート(loginStatusBar.phtml)を
読み込んでその中で、loginStatusModelを元にログイン時のテンプレート(loginedStatusBar.pthml)か
未ログイン時のテンプレート(notloginBar.phtml)かを切り替えて表示。
もうちょっとコンポーネント指向的にやるなら、コントローラからビューにログイン情報オブジェクトを渡して
ビュー側でloginStatusModelを呼び出して表示してもいいと思うのだけどね。
>>653 スタックだけれど、たとえば、Zend_Viewヘルパーのplaceholderはスタックの一種。
プレースフォルダーに"スタック"していけば、
ビュー側ではプレースフォルダをechoするだけになります。
この場合、おっしゃられるように
> 本来テンプレートに任せるべきhtml出力も場合によってはそれ以前にしてしまうということですか?
完全に1枚のビューに任せるのではなく、部分的なrenderを行ってそれをスタック、
最後はそれを結合するというようなコントローラーになります。
しかし、段階的なビューの育成が気に入らない場合は、コンテンツとビュースクリプト名をセットにして
スタックを順にレンダリングしていくようなヘルパーを作成するとよいかと。
言われてみて思ったけど、おれも作るわw
656だけど、 placeholderはスタックじゃないね。ごめん 後入れ、先出し
>>654 >だからテーブル組とか複雑なページ構成だとテンプレートコードが超カオスになる…
ですよねぇ、、 これ嫌ですよねー。どうすんべ、、
659 :
nobodyさん :2008/12/19(金) 01:48:58 ID:Yo9sHh7s
Zend Frameworkでページキャッシュできる?
ここは人力検索エンジンじゃねぇんだカス
じゃ何
Zend Componentsに名前変えるべきだと思うよ
663 :
nobodyさん :2008/12/19(金) 13:41:41 ID:N7fEKEUT
ちょっとすれちなんですが、 流れるようなインターフェイスってや津を自分のスクリプトで実装したいです。 ZFのどのファイル見たらずばっと解決するでしょうか?
>>663 何が言いたいかわからん。
実装したいなら勝手に実装すればよろし。
>>664 ZFのマニュアルにあるように、流れるようなインターフェイスってのをやりたいと思っています。
以下のような記述です。
$hoge->setA('A')->setB('B')->setC('C')
function setA ($aValue) { $this->a = $aValue; return $this; }
ヽ('A')ノ
>>659 Zend_Cache_Frontend_Outputか Zend_Cache_Frontend_Pageのマニュアルが参考になるかも
>>665 return $this がキモ。
もう書いてるのにきめぇw
670 :
649 :2008/12/21(日) 11:18:40 ID:???
コントローラ名のキャメルケースの件でviewに関しては解決しましたが、 やっぱりコントローラ名は駄目みたい。 /application/apps/controllers/FooBarController.php <?php require_once 'Zend/Controller/Action.php'; class FooBarController extends Zend_Controller_Action { public function indexAction () { } } ?> Linux環境に限ってInvalid controller specified (FooBar)が出るわ、 windows<->Linuxの互換のためには、キャメルケースでコントローラ名 付けたら駄目なのか・・・orz これはFW仕様でしょうか?
viewの場合とControllerの場合とではパスの解決方法が違います。 それぞれの仕様をマニュアルで確認すれば問題のある動作はしないと思いますよ。 OSによってファイル検索時のケース依存が変わるので出来たり出来なかったりするのは 基本的に正しくないパスを与えている場合なので、今一度マニュアルを確認してみてはいかがでしょう
672 :
649 :2008/12/21(日) 11:54:28 ID:???
>>671 ありました・・・
http://framework.zend.com/manual/ja/zend.controller.basics.html コントローラクラスやアクションメソッドの名前に MixedCase あるいは
camelCase の単語を複数使用したい場合は、 URL 上での単語の区切り文字
として '-' あるいは '.' のいずれかを使用しなければなりません
(とは言え、ここで使用する文字は変更することができます)。
たとえば、アクションを FooBarController::bazBatAction() で定義したと
すると、対応する URL は /foo-bar/baz-bat あるいは /foo.bar/baz.bat
となります。
ご助力頂き、ありがとうございました。
池■田大■作の本名はソン・テチャク。小泉純一郎、小沢一朗は朝鮮人。
911では小型の水爆が使用されている。
http://ri ■ch■ardkosh■im■izu.at.webry.info/
創価の保険金殺人事件。
オウム事件は、統一・創価.北朝鮮の共同犯行である。CIAが監修している。
http://www15.ocn.ne.jp/~oy ■ako■don/kok_web■site/ir■iguc■hi.htm
与党も野党もメディアも全部朝鮮人だった。
http://jb ■bs.li■vedo■or.jp/b■bs/read.cgi/news/20■92/115794■1306/
2ちゃんねるは統一■教会が個人情報を集めるための道具。運営には統一■教会がいる。
駅前で「手相を見せてください」と勧誘してるのが統一教■会。(カルト宗教)
カルト宗教の下にいる人と上にいる奴を分けて考えないといけない。下にいる利用される人は上がどんなことをしてるか知らない。
ユダヤ権力の子分→2ちゃん運営=統一協会上層部=層化上層部=自民党清和会=野党の朝鮮人ハーフの政治家=
与党の朝鮮人ハーフの政治家=金 正日(キム・ジョンイル )=読売サンケイ=小沢十朗
ユダヤ人=ロックフェラー=ブッシュ=クリントン=ヒラリー=アドルフ・ヒトラー=オサマ・ビンラディン
毎日新聞スレを荒らしてる奴らも統■一教会の可能性が高い。
荒らしは洗脳するために「ネトウヨ」などのレッテル付けレスを何千回もする。
現実には「ネトウヨ」などは存在しない。
http://changi.2ch.net/test/read.cgi/ms/1230363385/
674 :
nobodyさん :2009/01/08(木) 22:12:51 ID:F2D+k5Ku
>>673 こういうのせっせとあちこちに貼ってる人間の心理ってどうなってるんだろう
これ全然はやらないねぇ 使ってみようと思ったら、日本語リファレンスは充実してるけど、 肝心のWebアプリを作るのにどこからはじめていいかわからないしさ 疎結合にもほどがある そこがいいとも思うんだけどね・・・
そりゃお前の能力が足りないだけだろ。ちゃんとクイックスタート書いてあるし。
ZFの最大のメリットはコーディング規約だってば。
初めてFWを使うオイラにとっては正しいプログラムの方がよっぽど知りたい。
Controller系はもっと詳細なヘルプと、逆引き出来るくらいのヘルプが欲しいよなぁ…。 今のリファレンスだけでは、何が出来るかすら理解し辛い。
そりゃ自分で考えるんだよ、キミ
いや、ソース読めばいいって話なんだろうけど、着地点すらわからないFWに無駄な学習コストはかけたくないよね。
うんまぁ君には無理だから諦めれ
自分で考えたからと言ってControllerとModelで使う全モジュールを index.phpでrequire_onceするのはどう考えても正しくない使い方だろ。 ZendFrameworkはどう使うことが正しいかということが知りたいんだよ。
> index.phpでrequire_onceするのはどう考えても正しくない使い方だろ。 index.phpはブートストラップの起点だろ
>>683 最新版ならスクリプトでモックを自動育成できるよ
683が何を言っているのか分からない件について
そもそもZendオフィシャルってのがウリなのに、大したサポートもリファレンスも無いんじゃ使う意味が無いよなぁ。 メリットも不透明じゃ誰も習得しようとはしないだろうし、廃れる一方な気がす。
>>688 一通り読んでるけど、アプリを作り込む上では情報足りなさすぎるよね。
結局ソースを漁る事になる。
phpDocとか無いの?
ドキュメントは十分なレベルだと思うけどなぁ。 どんなFWだってソースみないで開発する気にはならんし。 phpDocなら自分好みのフォーマットで自分で作った方が手っ取り早いし IDEがあればphpDocはいらんし。 まぁ、個人差?
おいおい、公式マニュアル読んでアプリ作り込んじゃだめだろ 先にFW作れよ
このFWだめだwwww
↑それ、中身おかしくない?
>>692 が諦めてくれてうれしいと思ってるのは俺だけ?
うん君だけ ユーザは多いに越したことは無い
なるほど。改心します
勘違いユーザーは要らんよ
そして誰もいなくなった。
詳しく
勘違いでも素人でもいいから、触れても貰えない状況を打破しない限り、発展しないよなぁ。 スレ的に、初心者の質問すら滅多に無いのは酷すぎるw
鎌ってちゃんは放っとけよ
ユーザー数は必要かもしれないが、 敷居を下げすぎて失敗した(しかかっている)FW(詳細略) とは方向性が違うってことは言える。
PHP5版PEARって感じだよなぁ… Zend Library という名前のほうが相応しい気がするよ。
Zend MVC Libraryとかが妥当
FWのためのFWですが何か?
>>706 それはない。
MVCまわりのものがいらなすぎる。
HTTPリクエストとかそっち系は結構よくできているけど
安定版とか用意してくれたら使いやすいんだけどなぁ。。。
>>708 ちゃんとカテゴリごとにパッケージングされたのをPEARインストーラ経由で
インストールできるといいんだけどね。特にWebサービス系とか。
展開後のファイル数とかサイズの問題じゃなくて、現状だと必要なコンポーネントの
更新やバグ修正もZend Framework全体のリリースを待たないといけないし、
SVNではstableかどうかの判断もつかない。
Zend_Dateのnewが異様に重い
>>711 自己レスだけどnewじゃなくてtoStringが重かったみたい。
(ループごとにインスタンスを生成せず使いまわしても変わらなかった)
14件のデータに対して表示まで1.33秒ほどかかるところを
$date->set($row['date_begin']);
$row['begin'] = $date->toString('YYYY年M月d日(EE)');
$date->set($row['date_end']);
$row['end'] = $date->toString('YYYY年M月d日(EE)');
↓
$row['begin'] = date('Y年n月j日', strtotime($row['date_begin']));
$row['end'] = date('Y年n月j日', strtotime($row['date_end']));
に変えたところ0.58秒ほどで終わった。
やたら重いです先生。
フレームワークはできるだけ使わない方向で。
>>713 toString のソースを読んで戦慄した。
timestampとってきて、strftimeなりで整形する方が良い気がするわこれ。
1.7.3 age
実際に使ってみたら思った使いやすいので気に入って色々試してみてるん だけど、意外と使ってる人の情報少ないね
ところでZend Dojoとかみんな使ってるの? Dojoなんてあんまり使ってる人みたことないけど
ある程度、規模のあるプロジェクト向きだから、 個人が試行錯誤してブログ書いたりってケースは少ないかもな。 おれは個人で使ってるけどw
dojoは使ってる
良くも悪くも疎結合だなぁ。 他のフレームワークみたいに、各コンポーネントを組み合わせて使うと手間半分で効果二倍!みたいな解りやすい恩恵が無いから、意欲的に色々使ってみよう!って気にはならないね。 ライブラリとしては割と優秀な気がするけど。
723 :
nobodyさん :2009/01/29(木) 22:20:22 ID:BSzN+ksd
質問です。 <?php require_once 'Zend/Date.php'; $date = new Zend_Date(); echo $date; ?> このプログラムを異なるPCで実行した場合以下のように 29.1.2009 xx.oo.?? 2009/01/29 xx:oo:?? 異なってしまったのですが、どうしてもドットではなく、スラッシュ形式で使用したいです。 どうにかなりませんか?
>>723 $now = $date->toString('yyyy/MM/dd');
echo $now;
これじゃだめなん?
toStringは重いから、toTimestampとdate()組み合わせる方が利口。
いや現在なんだからtoTimestampなんかいらんだろ
toStringが重いとよく言われてるけどそんなに重いと感じたことないんだけど・・・ しょっちゅう使ってるしそんなに重いかな?
うん
5000行以上は書いたことないからわからない
>>728 toStringのソースを読む作業に戻るんだ。
結構気に入ってます コーディング規約は無視気味に使ってますが・・・ だってタブを半角4文字ってねえ。手間としてもファイルサイズ面でも無駄なんじゃないの
Zend Framework徹底入門、すごい良く出来てるな。 読んでて解らないところが次のページには載っててどんどん書ける感じだわ。 少なくとも、白と緑の入門のアレなんかとは段違いで実用的。
4タブが手間・・・・? もしかしてタブをいちいち手かプログラムかなんかで空白に変換してるのか?
>>732 ZendFramework最大のウリはコーディング規約ですよ?
>>734 挿入は楽だが、修正/削除時の位置揃えががめんどい。
インデントに半角スペースを推奨ってのは一般的だと思うが、個人的にはタブの方が好ましいかな。
表示が崩れるとか云々はエディタ側で対応出来るし、
プロポーショナルフォント使った場合はどうするんすかwww って気もするし。
スペースだとタブに比べて 挿入は楽で、修正/削除がめんどい意味が分からない。 エディタ変えた方が良いんじゃないだろうか。
タブの場合 入力…タブキー一回 削除…バックスペース一回 スペースの場合 入力…タブキー一回(エディタ設定による) 削除…バックスペース4回、or 行を選択してShift+TAB等
オートインデント使えよ
>733 激しく動意。 初心者のひと白と緑のアレ買っちゃわないようにね。
保存時に一括置換するマクロ組んだらいいんじゃないかな
>>738 オートインデントとか、エディタ側依存を前提にするなら、
スペースだろうがタブだろうが関係無いって話になるから却下。
そもそもスペース4つとされてる理由は何?
タブだとエディタ環境によって、表示が崩れるからスペースを使いましょうね。 ってことらしい。
>>742 意味不明。オートインデントぐらいどのエディタにもあるだろ
>>745 タブ幅設定くらいどのエディタにもあるだろ。
tabか半角SPかこだわるのは頭の固い馬鹿だけw プロジェクトの迷惑になるから早めに死ねよw
白と緑のアレ持ってる俺涙目ww しょうがないんだよ。 俺がこれ買った時は徹底の方でてなくて事実上こっちしかなかったんだ・・・ 徹底を持ってないから比較できないんだけどさ。 この入門の方も一応多少は役に立ったんだけど。
まぁtabか半角スペースかに限らず、何かにつけてこだわる奴は プロジェクトの迷惑だわな。 フレームワークだったり言語仕様だったり。
白緑のはZF覚えるのにうってつけのいい本だと思うがなぁ 黒いの出る前から持ってるがZF初めての人なら買ってもいいんじゃね? とはいえ黒いほうが出ちゃったから黒でいいがw
黒アマゾンで値引きされてないのがなぁ
ちょっとZend Framework徹底入門買ってくる!
753 :
nobodyさん :2009/02/02(月) 19:17:23 ID:pyoydElk
Zend_Db_Table_Rowset_Abstract型のデータで、 object(hogeRow)#69 (8) { ["_data:protected"] => array(8) { ["id"] => string(1) "1" } ["_cleanData:protected"] => array(8) { ["id"] => string(1) "2" } ・・・ 次の方法で取得すると、「_data」側の値「1」が取得されます。 $object->id; 本当は「_cleanData」側の値「2」を取得したいのですが、方法はありますでしょうか。 宜しくお願いします。
>>753 rowsetのデータだったら、rowは返らないんじゃない?
rowsetから取得した行ってことでいい?
で、_cleanDataは自分で作ったの?それともどこかのオブジェクト?
いずれにしても、具象クラスを書くときに、current()を実装しなおして、
public function current()
{
$row = parent::current();
$row['data'] = $this->_cleanData[$this->_pointer];
return $row;
}
とでもしてみたらどうかな。ま、実装をエスパーしてるだけだから違うかもしれんけど。
↑ぬるぽが出るかもしれんから、その辺は自分でチェックして
Zend_Db_Table_Row_Abstractじゃないの?
Zend_Db_Table_Row_Abstractだとしたら、 自前で、Zend_Db_Table_Row_Abstractを継承したクラスを作って、__getを再実装 で、取得する側で、setRowClassでそのクラス名を充てて取得する。
>>757 すみません、Zend_Db_Table_Row_Abstractの間違いでした。
教えていただいたとおりできちんとできました。おかげさまで助かりました。
本当にありがとうございます。
Zend_Http_Clientで、keepaliveを有効にしつつ HEADメソッドを二回投げると、データが取得できませんでした例外が発生するんだけど仕様?
760 :
nobodyさん :2009/02/03(火) 16:15:28 ID:U0x1Z73i
Zend_File_Transfer_Adapter_Httpを使って、ファイルをアップロードしたら、 こんなメッセージが出る "image/pjpeg" not found by file transfer adapter どうすればいいか教えてくれ。
>>760 そのエラーメッセージをgrepして問題点を特定したらいいんじゃない?
Zend_Pdf_Font::fontWithPath()でOpenTypeフォント読み込ませると Cannot determine font type: /path/to/font.otf というエラーが出ます。 TrueTypeフォントの読み込みは問題ありませんでした。 ドキュメント上ではOTFの読み込みに対応しているはずですが、 何かほかのやり方があるのでしょうか?
763 :
nobodyさん :2009/02/04(水) 18:59:38 ID:0LHQjeSW
Zend.phpってなくなったの?
>>763 今まで昏睡状態だったのか?
それとも釣りか?w
765 :
nobodyさん :2009/02/06(金) 14:17:07 ID:rXNYLOMn
zendのフレームワークでpear/pager使った人誰かいる? パラメータで詰まってるから助けてください><
ページャーくらい自分で実装すれ
いまどきページャー自分で実装て…
pear pagerはちょっと使いいくよねぇ
Pear久しく使ってねぇな
確かに無駄にパラメータだらけで使いにくいね。
自分で割り算と掛け算くらいできるだろwww
車輪の再開発って言葉も知らない子が何を言ってるんだ
それを言うなら四角い車輪の再発明では?
またZend勝手に仕様変えやがったな… このライブラリいきなり大きく挙動変えてくるから最悪だ
詳しく
ページャーの話題の割に、Zend_Paginatorは話に上ってないみたいだね
無駄無駄 手書きで十分
>>775 Zend_Http_Clientをドキュメントどおりに使ってみろ
>>777 <?= $this->paginationControl($this->paginator, 'Sliding', 'my_pagination_control.phtml'); ?>
これお前の言う手書きで書いてみて。
ショートタグ使ってる時点でウンコだと何度言えば…
ノートに万年筆で書いてみました
割り算掛け算とか言ってる時点でウンコだと何度言えば…
ショートタグ使ってる素人に言われたかないわ
Zend Frameworkを使っているサイトを教えてください。
日本のサイトでお願いします
俺のサイト
追記:個人サイトで
793 :
nobodyさん :2009/02/08(日) 11:23:27 ID:IjLcqr1c
俺のサイトも
794 :
nobodyさん :2009/02/09(月) 15:26:56 ID:0eQmcoPc
Zend Frameworkは既存のコンテンツを環境移行などで改修する際に、 ライブラリ的な使い方しかしたこと無いなぁ。
<select>の中の<option>を、AJAXで読み込むようにしたんだけど 読み込みに時間がかかってしまう。 そこで、AJAX出力のMVC処理をPHPファイル1つにまとめて ZFアプリの外に置き、読み込みテストをしてみた。 以下、FireBugのコンソールに表示された読み込み時間 ZF・・・1.87s テスト結果・・・137ms これはwwww
どこがネックになってんの?
1.7.4を使用しています。 htaccessでRewriteEngineが設定できない環境なのですが、 その場合URLはどのようになるのでしょうか? 設定できない場合がドキュメントに書かれておらず困っています。
@todo OpenID 2.0 (7.3) XRI and Yadis discovery これはいつ対応してくれるんだろ。 PHP OpenID Libraryは使いにくくて・・・
index.php/controller/action
ルーティング使わないZFって何が嬉しいんだろうw
1.7.1を使っているんですが、 クッキーの処理ってどうしたら良いんでしょうか? ローカルホスト上で、単純にカウントするのを検証しているんですが、 $this->hoge = new Zend_Http_Cookie( "counter", 1, "localhost"); これで、$this->hogeにクッキーがセットされてたらクッキーから取得、 セットされてなければ上記のnewで生成、 これじゃダメなんですかね? private $hoge; $name = "counter"; $host = "localhost"; if( !isset( $this->hoge ) ) { $val = 0; $this->hoge = new Zend_Http_Cookie( $name, $val, $host ); } else { $val = $this->hoge->getValue(); } $val++; echo $val; $_COOKIEも使えないみたいで、indexActionでやってるんですが、 どうやってもカウントが出来ません・・・。 もしかして、全然検討違いなことやってますかね?
Zend_CacheのPageで、キャッシュのクリアってどうやるんだ??
>>803 アクションメソッド内で$this->hoge にCookieがセットされているって前提がワカラン。
>>805 レスありがとぅーッス。
1つのphpファイルの場合、
$_COOKIEにセットされているかいないか
と分岐させて書いてた事があり、
同じ感じで書いてみてるのですが、
アクション内ではセットされてないんですか?
>>806 $this->_getParam('counter') なり、リクエストオブジェクトから取らないとダメなんじゃね。
Zend_Http_Cookieが、値を渡さずにインスタンスを生成したときに、
リクエストの中に、名前が同じCookieがあれば、その値を代入するようになってて欲しかったなぁ。
>>807 レスありがとう!
やっぱダメなんですかね。
リクエストオブジェクトからだと、
クッキーとしての機能はどうなんですかね。
掲示板の入力項目の記憶とか。
う〜ん、どうやったらいいんでしょう・・・。
白緑、徹底入門を読んだり、
検索してるんですが、どうも情報が見つけられないっす。
かなりハマっています・・・。
クッキーを受け取ったかどうかが知りたければ、 Zend_Http_CookieJar
ん、ていうか君たち、$_COOKIEの代替だと思ってない?
>>809 さっぱり判んねぇっす。
>>810 ち、違うんですか。
すみません、どなたかクッキーの使い方の簡単なコード書いてもらえないでしょうか。
公式のマニュアルだけでは、すみません、
未熟な者でよく判らないです。
例えば
>>803 みたいにカウントさせて、
有効期限切れたら0からスタート、みたいな・・・。
つーか、何回もすみません。
ほんっと、どうしたら良いか判らなくて。
未熟な者なら地道に勉強すべし。急がば回れ。
>>811 クッキーを受け取る(アクションコントローラー内)
$this->getRequest()->setParamResource(array('_GET', '_POST', '_COOKIE');
としておくか
$this->getRequest()->getCookie('hoge',false);
みたいな。
クッキーの発行は標準関数のsetcookie
掲示板の入力項目の記憶ならZend_Sessionで、覚えててねフラグを立てる。
短いセッションを別に作りたいときは、Zend_Sessionのnamespaceを使う
徹底入門見てすげー興味わくけど、いざやろうとすると手が止まるわ。
815 :
811 :2009/02/15(日) 23:27:17 ID:???
>>813 ありがとうっす!!
できました!!!
Zend_Http_Cookieにばかり目がいってしまい、
リクエストオブジェクトのgetCookie見落としてました。
発行もZF専用のがあるかと思ったんですが、
setcookieでいけるんですね!!
前やった時できなかったので、
なんか間違えてたのかもしれません。
$_COOKIEもちゃんと入ってました。
おかげ様でスッキリ爽快!!
これでバリバリ勉強できます!!!!
>>813 さんは良い人!!!!!
ありがとうございました!!!!
ZF使いは変態だって話は本当ですか?
何故過去形なのか
誤爆スミマセン
1.75でたみたいです。 ここにいる人はコマンドからインストールだろうけど ウェブからやっちゃう人向けにスクリプト書いてみました。 <?php include_once 'Archive/Zip.php'; define('ZEND_ARCHIVE', './ZendFramework-1.7.5.zip'); define('INSTALL_DIR', '/php/includes/'); $path = basename(ZEND_ARCHIVE, '.zip') . '/library/'; $param = array( 'by_preg' => '#' . $path . 'Zend/#', 'add_path' => INSTALL_DIR, 'remove_path' => $path ); $zip = new Archive_Zip(ZEND_ARCHIVE); $zip->extract($param); echo $zip->errorInfo();
820 :
819 :2009/02/17(火) 14:06:50 ID:???
1.7.5ですね。 by_pregにはi修飾子つけないと一部のファイルが抜き出せないみたいです。 #' . $path . 'Zend/#i
FirePHPのプラグイン良いな・・
なんに使うの?
大分前に試したら、標準出力のエラー拾えなかったんだけど、parse errorとか拾えるの?
それは無理じゃない? 任意のデバッグメッセージやSQLトレースをクライアントに送りつけるものであって、 そういうのは対象じゃないと思うんだけど
826 :
nobodyさん :2009/02/18(水) 13:24:49 ID:OeM2TrBc
Zend_Db_RowのfindParentRowはすごく便利なんだけど、単一行しか帰ってこない。 複数で取得するにはどうすればいいか教えてくれ。
マニュアル嫁
>>826 rowを返すものなんだから、やりたいことと使い方が違うんじゃない?
徹底入門も買った。一通りDBと連携したアプリを作れるようになった。 ZFは疎結合とか言われてる割に、シンプルなMVCとして使えることも分かった。 ただ、ZFって提供してくれる実際の機能の少なさの割りに 工程数がアホみたいに掛かっててどうしょうも無く重い。 しかも、その工程数が、おかしな挙動と (個々のコードではなくクラス全体の)見通しの悪さに繋がっている。 まるでたらい回しにされたあげく、大した事もしてくれず 時間とコストばかり掛かる日本の地方のお役所みたいなFWだと思う。 コードが綺麗だから一見、しっかりしてそうに騙されるんだけど 体裁だけ整えた役所のレポートと同じで内容が駄目だよ。 ドキュメントも量ばかり多くて重要なところが省かれてるし 英語の方のドキュメントの質もアスペルガーの人がわめいてる並に 分かり難いから翻訳者が困ってるのが見て取れる。
>英語の方のドキュメントの質もアスペルガーの人がわめいてる並に >分かり難いから翻訳者が困ってるのが見て取れる。 ってどの辺?
832 :
nobodyさん :2009/02/19(木) 19:04:32 ID:aKK5Rtx4
Zend_Db_RowクラスのfindManyToManyRowsetを使って、 selectオブジェクト渡せるらしいだが、使い方がわからん。 そのテーブルに対するselectになるの?joinも書かないとダメなの?
ManyToManyが設定されてるなら普通join書かないと思うけど。
834 :
nobodyさん :2009/02/19(木) 22:37:20 ID:aKK5Rtx4
findManyToManyRowsetで一応は、取得してこれた。 だけど、そこから条件指定したり、並び替えしたりしたくて、selectオブジェクト使いたいんだけど、 どうやって使えばいいかわからない。 第5引数のselectは一体、どうやって使うのかわからないんだ。 どのテーブルに対してのselectオブジェクトを渡しても、期待通りの動きをしてくれない。
>>829 にわりと同感だな。
ZFは好きなんだ。
MVCモデルで作っていくのはいいんだけど、重さはいかんともしがたい。
Zendの有料ソフトをそろえたら少しはマシになるの?
大規模なプロジェクトの場合には、その辺が簡単に解決できるのかな?
ZFで作るとMVC設計の考え方がわかるので、
そこで理解した設計法を元に、オブジェクト指向(的も含む)スクリプトを書くのが
いいんじゃないかと思う。
そんなのが許されるのがPHPだし、
もしかしたら、それがPHPを一番活かせるのでは?と思ってしまう。
ビシっとガチっと設計したいなら
ほかの言語とフレームワークの方がいいのでは?と思ってしまう。
間違ってますかね・・・?
自由度が高いFWなんだから工程数が多くて当たり前なのでは 作業少しでも減らしたいならCakeでも使えばいい
てか工程数を少なく出来る程度にカスタマイズしてから使うのがZF
そのカスタマイズの工程が半端ないのがZF
お膳立てがセルフサービスなんだよな、要は 見た目は綺麗な箸とか食器とか並んでるけどさ 隣の席じゃ美味そうにケーキ食ってる奴がいて じゃあ俺も、と食ってみるけど いかんせん不味いんだな 向こうの席じゃヘッドフォンで楽しそうに音楽聴いてる奴がいて 何聴いてるのか尋ねると「クラシックだ」って言うんだけど どう聴いてもパンクなんだな 参ったな
841 :
nobodyさん :2009/02/20(金) 09:00:44 ID:LxVU4MGc
コントローラの粒度ってどうなってる? 入門書を読めば機能(例えば会員管理とか)ごとにコントローラ を作成して複数アクションを定義しているみたいだけど機能が増え たときにすごい大きくなりそうだし1画面1コントローラにしたほう がよいのかなあ。。
そんなのあなたの自由
>>834 取得してくるのはrowsetだし、selectを渡すのはmatchTableに対してだから、
たぶん、あなたの思い通りにはならないかと。
関係テーブルをSELECTでいじりたいなら、ベタにSQLでやったほうがよいと思います。
>>842 正しくこれだよな。
Frameworkって言っても、型にはめてもらえず、
右往左往してる内にとても面倒と感じてしまう。
俺はつまみ食いできるところが気に入ったんで馴染めたけど、
名前から期待する姿とのギャップに、ヘコタレる奴が周りにめっちゃいる。
スカッフォルドなりと、標準的な設計パターンのドキュメント充実したら、
良いと思うんだけどな。
まぁ、そういう意見はよくある。 Zend_Applicationとか。そういう意図なんだと思うけど、 結局これがリリースされると、好きに使ってくれっていうスタイルじゃなくて、 こういう風に使うのが王道みたいになると、オレオレなオレにはちょっとさびしい。
まさに指示されないと何もできない日本人と創造力のある欧米人の違いだな
既存のベタ書きやオレオレフレームワークからの置換にはかなり重宝する DBとか運用中のがあってそれに合わせないといけない場合とか
>>848 PEAR代替を考えるとそれが正解かもな
正解って言い方も変だが
Zend_Db_Adapter_Abstractのdeleteメソッドって なんでプリペアードステートメント使わないでwhere句が直実行なんだろ? あとreplace構文がないのは仕様なのか
プリペアドなんて糞プログラマーが使うものだからだろ
PHPプログラマ以外はみんな普通に使ってる機能なんだぜ
携帯サイトでZF使おうと思ったんだけどDocomoの糞仕様のせいでセッションが使えないけどなんなの? 未だにSID引き回せってこと? 最近だとiモードIDとかいう固定識別番号とDB連動でセッション管理するのが普通? しょっちゅうDB覗きに行くのはなんだかなぁ・・・
Zend関係なくそれが普通だよ
全然ZF関係ねーw
>>854 iモードIDは後から出来た規格だからSSL領域で送信されない
よって、SSLでのログイン等が必要ならiモードIDだけでセッション管理は無理
というか、他のキャリアの端末でも識別番号はHTTPでも送信されちゃってるから、
Amazonみたいな仮ログインぐらいにしか使えないよ
> しょっちゅうDB覗きに行くのはなんだかなぁ・・・
Zend_Session_SaveHandler_Interface実装したMemcachedアダプタとかどうよ
Zend_Db使うくらいなら、PDOに自作クラスをかぶせる方が早くて軽くてメシウマな気がする。 Zend_Sessionとか思想はいいんだけど実装が重すぎるのが気になるよね。
>>854 つかえるよ。セッションじゃなくて使えないのはクッキーだアホ。
勉強しなおせ。
>>859 > Docomoの糞仕様のせいでセッションが使えないけど
> 未だにSID引き回せってこと?
↑ドキュモがCookie使えないから、URLかHiddenにセッションIDくっつけて引き回さないとセッション使えないって意味としか見えないが
Zend_Dbを使うとSET NAMESで文字コード変換しかないのか。 mysql_set_charsetとか使えんのかね。そもそもSET NAMESってセキュリティ 的に大丈夫なのかな
Zend_Dbではじめてのデータベース入門なんだけど やっぱり別々に覚えるべき?
文字コード変換しないのが普通じゃないのか 連鯖でEUCとかやってるところがカスなだけで文字コード変換なんて文字化けの原因にしかならん
sqlの勉強は面白くないから実際にやりたいこととセットにしたほうがいいと思うよ。
>>858 > PDOに自作クラス
さーせん!こないだそれで済ませちゃいました。
正直ORMとか利点が理解できてません!さーせん
だれかおしええt
>>865 SQLインジェクション対策とかキャッシュ機構とか。
インピーダンスミスマッチの解消ってのは実際にはそんなに意味がない場合が多い。
あとEFやLINQ、SubsonicならIntellisenseが効くとか。
>>866 丁寧にありがとう。
小規模チームが多いせいか、あんま要らね。って思っちゃうなぁ。
でもキャッシュを隠蔽するにはいいかも。もしかしてZFにもあるの?
ちょっとマニュアル読んでくる。
868 :
nobodyさん :2009/02/26(木) 16:43:37 ID:z2y5dmsn
Zend_Controllerで共通のヘッダーを出力したいんだけどなんか良い方法無い? できればdispatchするファイルに設定しちゃいたい。
Zend_Layoutかビューヘルパーで echo $this->partialが普通っぽい やりたいことがいまいち読めない
ヘッダーってHTTPレスポンスheaderのこと? それならレスポンスオブジェクトの範疇だけど
871 :
nobodyさん :2009/02/26(木) 17:23:49 ID:z2y5dmsn
後付けで申し訳ない。 header()のことです。 モジュールが増えてきてさらに各コントローラごとにinit()で出力いているので効率が悪いです。 できればZend_Controller_Frontをdispatchするあたりで設定したいです。
フロントコントローラーでやっていいんなら、bootstrapでやっちゃえば? プラグイン書くほどじゃないし。 アクションコントローラーのスーパークラスとか書いてないの?
873 :
nobodyさん :2009/02/26(木) 21:57:21 ID:z2y5dmsn
>>872 どうもです。
bootstrapってのはbootstrap.phpなりを作ってインクルードってことでしょうか?
というかそもそもの設計が間違えている気がするんですが、
通常は各コントローラごとにヘッダを設定するものなんでしょうか?
ZFはuse-at-will だからね。どう設計しようが自由。 $response->setHeaderでセットしてるよね? 逆に言えば、$responseに干渉できる場所ならどこでも好きな場所でやればいい。 実際、generator ZFってぐらいならbootstrapでもいいわな。 共通なものは基底クラスのinitでもいいし、 個別コントローラーでセットするものがあってもいいんじゃない?
875 :
nobodyさん :2009/02/26(木) 22:33:02 ID:z2y5dmsn
>>874 はい。
$this->getResponse()->setHeader()でセットしてます。
class Header extends Zend_Controller_Action{}に__autoload
というのを作成して
class IndexController extends Test{}
で継承していく形にします。
>>875 後半がよく分からない
Zend_Controller_Actionを継承した俺俺コントローラ作って
そこのinitメソッド中に書くとかではだめなの?
877 :
nobodyさん :2009/02/26(木) 23:14:34 ID:z2y5dmsn
>>876 失礼しました。
autoloadではなくinitですね。
init使えるの忘れてました。
フロントにheader()使いたくなってきた。。
HeaderとTestって何?誤記かな? フロントにheaderって?$this->getResponse()->setHeader()で駄目なの?
879 :
nobodyさん :2009/02/26(木) 23:20:37 ID:z2y5dmsn
あーそこも間違いで。 dispatchするファイルの先頭あたりに直接header()で出力した方が楽な感じ勝手ことです。。
BaseControllerのinitに書くのがベターな気がする。 bootstrapに書くのは気持ち悪すぎる。
気持ち悪いとかそういう個人的主観はいいから、 納得できる説明しような
起動ファイルに共通処理書いちゃだめだろ 例外的にその共通処理をさせたくない場合に面倒 ましてやレスポンスヘッダの処理を bootstrapに書くとかありえないだろ BaseになるControllerに書いとけば その例外的なControllerのinitで 共通処理をしないように上書きするだけだ これで納得できるか?
アプリケーションに依存した入力チェック関連のクラスってみなさん どこに格納してる?models?それともviewsの下?
入力チェックをなぜにviewに入れるんだ?
>>881 別に気持ち悪くないなら、bootstrapに書いてもいいわけだし、
気持ち悪いからって評価基準は普通だと思うが。
気持ち悪いからって文字通り気分的な問題だと思ってるのか?
気持ち悪くてもいいからってのを突き詰めていくと フレームワークじゃなくてもいいじゃんみたいなことになってしまう
>>886 気分的じゃない問題があるの?
たとえば、サーバー情報をheaderに入れるっていう方針ならbootstrapでもいいんじゃね?
気分以外の理由があるんなら知りたいなぁ
ぐぐれ
>>879 symfonyでPDF、ajax、html、svg、csv、ファイルダウンロードを扱ってるが、
こういったファイル形式でヘッダ変えたい場合不便だぞ。そんなことすると。
任意の場所でシングルトンでレスポンスオブジェクト呼び出して、いじくり
まわせる便利さを体験するといい。
>>882 は起動ファイルとbootstrapが一緒なのか。
基底クラスマンセーって気持ちいいの?
>>891 そういうケースもあるってだけよな
だいたい、headerの処理を1か所でまとめてやらんでもいいわけで。
まさか、header追加したらすぐにheaderが飛ぶと思ってるわけでもないんだろうけど。
bootstrapは「自力で生きる手段」という意味だぞ。 何でも詰め込むのが正しい。
>>893 headerメソッドは追加したらすぐ飛ぶ仕様だけどな
>>893 >だいたい、headerの処理を1か所でまとめてやらんでもいいわけで。
これはないわ…
前提条件が示されてないんだから、気分次第で好きなように書けとしか言えんよな。 個人的にはbootstrapには最低限のコードしか書かないけどね。
headerの処理ってのは、単純に情報の通知にも使われるし、 ダイジェスト認証やリダイレクト、キャッシュの有無やら、OpenID認証やら、 もし、コンテンツヘッダのみならコンテキストスイッチでいいだろうけど。 こいつらひっくるめて一か所で処理はまず無理。
>>900 「headerの処理」?
ごめんheaderの処理ってのが、出力のことなのか、
吐き出す内容の決定のことなのかで全然回答が変わってくる。
cache-controlだけは一括で出力したい
>>901 $response->setHeader()をどこでやるかっていう話なんだから、
どこで内容をセットするかってことでしょ、普通
1.7.6リリース! ところで、こういうマイナーバージョンの変更点をダウンロードせずに ウェブから確認できるページってありますか?
おぉ、READMEをクリックすると出るんだw
ほんとだ。気づかなかったよ 分かりにくすぎ…
Zend_LogのFireBugへの書き出しってどんな風に使ってる? 例外とかはErrorControllerでキャッチしてるし 実行時間なんかはFireBug自体で計測できるし・・・ 変数の中身を見たいとき用とか?
ログメッセージ見たいけど画面に出すと不都合があるとき。 JavascriptやCSSをレンダリングするときとか。 まぁTextにログ出せばいいんだろうが、FirePHPの方が見やすいしね。
XMLとか出力する時には重宝するけど、 消し忘れが怖いから極力使わないようにしてる。
余計な分岐で性能落とすほどだとアレだけど、 そこらへんはStagingかProductionかで自動的に制御するようにするのがベストなんじゃない? RailsはFCGIの引数(?)で切り分けるんだっけ? ZFだとどうするのがベストかな
912 :
nobodyさん :2009/03/04(水) 21:45:42 ID:LvKH7NWy
どういうわけかphp+(oracle|mssql)とかって変な組み合わせ+複合キーの嵐なんでフレームワーク使おうと思うとzf一択… いやmodelだけzend_dbとかって手もあるんだけどsfとかcakeとかだと旨みが半分以上なくなるよね
913 :
nobodyさん :2009/03/07(土) 20:45:10 ID:LLWgp4UZ
そろそろZF使ってるオープンソースのアプリケーションとかあるんじゃないの? なんかお手本になるようなのない?
いや既存の見ないと分からないレベルってFW使う意味ないだろ
MVCのモデルにあたる部分を どうするのが理想的なのかがいまいち分からないんです
それは君が実現したい構造によって変わる
>>913 そろそろって昔からあるけどお前がそれを見つける能力すらないって事だろ
2個は見つけたんだz!
action用のメソッドが見つからなかったときに、デフォルトのアクションを実行させようと思うんですが、 そういう時のメソッド名について、ZFで使われている名前って何かありますか?
そんなの無いよ
名前ってなーに? __call()で受けて_foward()なり_redirect()で飛ばすとかじゃなくて?
よくわかんないけど俺はindexActionにしてる
924 :
nobodyさん :2009/03/23(月) 02:42:16 ID:cHToeHq1
csvをアップロードしたいのですが、よいサンプルとかありますか?? Zend_File_Transfer_Adapter_Http を使ってみてるんですが、どうあがいても No temporary directory was found for the file 'uploadedfile' となってしまいます。
925 :
nobodyさん :2009/03/23(月) 23:58:01 ID:uVBii4+5
ものすごく単純な基礎の処理を試してみたらやたら時間がかかって不安でしょうがない indexアクションでフォームを出力して、名前を記入+送信して受け手のhelloActionで 「こんにちは、○○さん」って出力するだけ それだけに3〜4秒くらいかかる なんでだ? サーバにしてるマシンがボロ過ぎるんだろうか、、 pentium3 933Mhzだが。。 それにしてもスクラッチで作ったほうがいいじゃんてレベルだ こういう不安はどう原因見つけて解決したらいいんだろう
>>925 まず、Zend_Formは遅いよ。
うちじゃフォームは自前の処理で書いてる。
それから、もしWindowsサーバーならPHPは遅い。
なんにしても、スペックだけじゃ判断しにくい。
その処理に3〜4秒かかって当然とは思わないけど。
スクラッチの方が...って不安は、
作ろうとするものが単純で少量であるほど付きまとう。
一通り機能の揃ったサービス作るつもりで使えば、
メリットが分かるよ。
ただ、ZFは小規模でもつまみ食いできるのがメリット。
このスレでも何度もあるように、
フレームワークとしての枠が凄く緩いから、
Zend_Dateだけ、Zend_Cacheだけって使い方も何てこと無い。
927 :
nobodyさん :2009/03/24(火) 00:47:11 ID:VfITkfEn
>パスを書き換えてくれる id=123 → /id/123 のが嬉しくて使っているので それフレームワークの機能じゃなくてWebサーバの機能なので
>>928 ええー、そうなの?
どのヘン調べたらいいんでしょうか?
他のFWも使ってみようかなぁ…
>>926 > それから、もしWindowsサーバーならPHPは遅い
それってFastCGI Extensions for IISで割と解決してない?
Server2003+FastCGIでWP動かしてるけど、それなりの速度で動いてるよ
まぁ、mod_phpがベストなんだとは思うけど
>>929 Zendはルータでやってるけど普通のフレームワークはサーバに任せて同じ事やってる
mod_rewriteでググるよろし
昨今、ルータでURLルーティングするFWの方が主流でそ
受け取ったパラメータの値によって エラーハンドラに404エラーを投げたいのですが、どのように書けばいいでしょうか?
まーでもURL置換だけならmod_rewriteでいいわな
>>933 switch (true) {
case 404にしたいパターンその1:
case 404にしたいパターンその2:
$this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found');
break;
defalt:
}
みたいな
935 :
926 :2009/03/24(火) 21:15:38 ID:???
>>927 テスト用だからか突っ込みどころは色々あるけど、
ソース見る限りじゃ極端に遅くなる原因は無いよ。
んで、ある時は3〜4秒で、今回は20秒、
ってのは流石におかしいんで、ZFより下の層の問題じゃね?
ソースのエンコードやらlocalhostって言ってるとこからすると、
WindowsにXamppか何かで環境作ってる?
どこを調べたらってのは広すぎて困るけど、
・マシンスペックの不足(メモリ足りねーとか)
・マシンの故障(メモリ、HDDの不良とか)
・ネットワーク(ルーター、HUB、NICが腐りかけとか)
・OS(そもそも何使ってて、どんな状態? 他の処理動いてない?とか)
・Webサーバー(これも何使ってる? 静的ファイルでも遅い?とか)
・PHPの設定(メモリ割り当てが何故か異様に少ないとか)
辺りが定番なのかな。
ZFは、ルーターだけでもまあ便利だけど、
一度はMVCとかConfig使い回しとかを組み合わせてみると、
フレームワークとしての向き不向きが見えてくると思う。
俺は変なDBに繋ぎたいんでZF使ってるけど、
フレームワークとして見るなら中途半端ではある。好きだけど。
>>930 ごめん、FastCGI版なら充分速い。
単なるCGI版なWindowsサーバーをよく見掛けるので、言い過ぎた。ごめん。
debugger入れて時間計ると良いのでは
937 :
nobodyさん :2009/03/25(水) 00:07:41 ID:4yhBz/QX
938 :
937 :2009/03/25(水) 00:14:24 ID:???
>>935 書き忘れました。XAMPは使ってません。
940 :
926 :2009/03/25(水) 00:38:37 ID:???
>>937 他にでかい処理やってるマシンなら、
そんぐらい遅いのもありえるんじゃない?
DLLのエラーが出てるのは関係あるかもしれん。
Windowsにまだしっかり環境構築できないなら、
Xamppなりにお任せしちゃえば。
941 :
926 :2009/03/25(水) 00:42:39 ID:???
>>939 mod_phpでも遅いのって、知らんかった。
なら解説本なんかでよく見る
「まずはxamppで環境構築しましょう」
に従った人は、みんなそのクソ遅い中でやってんの?
うちの発注元、全員xamppみたいなんだけど…。
Windowsだからクソ重いわけじゃないけどな Windows用のPHPやApacheはオプションがフルセット入ってたり コンパイルオプションが平易なものでそれぞれの環境に合わせてないってだけで まぁ1〜2割くらいは速度変わるかもしれないけど10倍遅いとかはない
よく遅いって言われるrequireやincludeがWindowsだとさらに足引っ張ってる気がするんだけどな
>>942 FWレベルの構成で試してみろって。1〜2割じゃ済まないぞ
944 :
nobodyさん :2009/03/25(水) 01:59:45 ID:4yhBz/QX
ZendFrameworkの使い方で知りたいんですが
http://www.iza.ne.jp/news/books/ のページで、仮にこれがnewsコントローラのbooksアクションで出力されてるとして
「最新ニュース」の部分はどうやって出力するべきなんでしょうか?
booksアクション中に該当の最新ニュース一覧を出力するSQLだとかを定義して、
それをviewのパラメータに割り当ててるんでしょうか?
どうも扱い方がわかりません
あと、右側にある「おすすめブログ」の部分ですが、ここみたいに他のページでも
表示されるような記事は、それを出力するプログラムを別ファイルとして持っていて、
それをアクション中にincludeしてviewに割り当てて使いまわすのが正解でしょうか?
フレームワークというより、この手のサイトの作り方の知識の問題かもしれないですが
良かったらアドバイスください。よろしくお願いします
つモデル
MVCとかオブジェクト指向とか全然わからへん もうだめや あかん 全然わからへん わて、全然わからへんのや〜
つ入門サイト
948 :
nobodyさん :2009/03/25(水) 10:41:33 ID:4yhBz/QX
>>945 一応モデルについても調べて、、それでもよくわからないので
上記の場合についてだけで良いので、アドバイスもらえたら嬉しいです
よろしくお願いします
949 :
926 :2009/03/25(水) 10:54:28 ID:???
>>944 分かってるとは思うけど、飽くまで一例として。
どうとでも組めるのがZFの方針なんで。
最新ニュース部分は、945の言ってるように、
「本・アート」に該当するニュースを引っ張るモデルを作っておき、
booksアクションからそれを使う。
モデルは、Zend_DBやZend_DB_Table使って、
組みやすいように組むのが良いと思う。
最悪はSQL直書きだけど危ないんで避けた方が無難。
但し、毎度毎度DB叩いちゃ困るんで、
どうせ書き出してあるRSSを読み込むか、
Zend_Cacheなどでキャッシングは必須。
おすすめブログ部分は、
Zend_Layoutを調べてみるべき。
http://framework.zend.com/manual/ja/zend.layout.quickstart.html このドキュメントの、
「最後に、Zend_Layout のフロントコントローラプラグインが持つ〜」を読もう。
アクションをfowordして、使い回し要素に値を割り当てるか分かるはず。
こっちももちろん、キャッシュは必要。
役立つアドバイスかは分からんが・・・ ある程度MVCを触ってみて自分なりに得た結論としては M,V,C,それぞれどう作ろうと自由.正解なんてない.特にモデルに関しては完全に好きなように作って問題ない.
951 :
nobodyさん :2009/03/25(水) 16:01:42 ID:4yhBz/QX
>>949-950 アドバイスどうもありがとうございます
あと、モジュールについて知りたいんですが、
モジュール化することでどういうメリットがあるんですか?
「ZendFW徹底入門」を読んでるんですが、機能というかMVCのセットを
フォルダに入れて一まとめにする程度の説明しかなく、
機能的にどう効率的になるというような説明がありません。
コントローラ名やアクション名が変わるというのはわかるんですが、
そんなルールを新たに適用してまで得られるメリットって何なんでしょうか?
その「ルール」が重要(効率的)ってことに早く気づけ
953 :
nobodyさん :2009/03/26(木) 02:21:26 ID:9dMsRXyr
BOOKテーブルとAUTHORテーブルがあったとして、 $row->findDependentRowset('BOOK') の結果は行セットだと思うのだけど、 この数をカウントしたり、ほんの名前順に並べたりってどうやるの?
954 :
nobodyさん :2009/03/26(木) 09:56:35 ID:QTaJbB0e
<form action="aaa/bbb" method="get"> <input name="namae" value="taro" /> </form> というフォームを送信して aaaコントローラのbbbアクションを実行してるんですが 送信先の画面のURL欄を見ると aaa/bbb?namae=taro となっています これで正しい処理なんですか? aaa/bbb/namae/taroとなるのかと思ってましたが… 上記のようになるのはどういう時なんでしょうか
<form action="aaa/bbb/namae/taro" method="get"> <input name="namae" value="taro" /> </form>
間違って投稿になってもーた。 <form action="aaa/bbb/namae/taro" method="get"> 〜 </form>
957 :
nobodyさん :2009/03/26(木) 10:13:44 ID:QTaJbB0e
>>956 どうもありがとうございます
正直、そうなの??って気分です
クエリで送られてきたパラメータを xxxx/yyyyって風に変換してくれるのではなくて
xxxx/yyyyってURLからxxxx=yyyyと解析するということでしょうか。。
スゴイ勘違いしてたのかなぁ
ZFの理解ってより、もっと基礎を勉強した方が良いと思われ。 クエリを送出するのは誰?ZF?
>>951 「モジュール化」そのものに大きな意味があるんじゃない。
開発する対象を切り分けて取り扱える事が重要。
無茶苦茶判り易い点だけ挙げれば、
単一のcontrollersディレクトリに100個もファイルあったら大変って事。
>>957 PHP以前の、どういう環境で何が起きているのか理解できてないと思う。
まずはFirefoxにLiveHTTPHeadersでも入れて、
自分の普段のWeb閲覧が、どんな通信なのか見てみ。
多分ここでZend Framework以前の質問してる人らは、 ある程度の規模のWebアプリケーションを組んでない、 若しくは何となく出来ました程度でしか作ってないんだと思う。 しかもPHPか、出来合いのPerlのCGIを改造したぐらい。 俺の周囲にもこの手の人が結構いて、みんな同じく全体の設計スキルが皆無。 例えば単純でもいいから、練習目的にネットショップを構築してみる。 トップページがあり、商品の一覧や詳細があり、注文がかけられる。 注文は複数の商品を対象と出来て、確定前に変更が出来る。 問い合わせページやお知らせページがあり、送料・手数料の案内がある。 裏には、商品管理、ショップ管理、顧客管理、各種統計もある。 こんな仕組みを、出来れば全部自前で素のPHPから、 PEARもZFも使わずに作れたら、フレームワークの価値がようやく分かると思う。 実際に作り上げなくても、自分だったらどう作るか、ノートに設計を書くだけでも良い。 たくさんの、自分が分かっていない点と、面倒だと感じる点が出てくる。 ZF以前が思い切り足りないから、 ZFが分かんないんだと気付かないと、結局遠回りだよ。
ネットショップとかハードル高すぎで挫折100%だろ 最初はblogくらいの規模でいいと思う ベタ書きスクリプト掲示板の次のステップとして
ブログや掲示板って設計でかなり端折れちゃうし、 スタンダードな設計が思い描き難いから、 分かってない人への課題として微妙なんよ。 今の所、ネットショップ課題に設計させると、 結構頑張って考えたの提出してくれてる。 突っ込みも、ユーザー視点でやりやすいし。
業界15年の俺の完璧なネットショップ設計 商品名と数量を明記したメールを以下に送付して下さい。 折り返し見積を送付しますので、銀行振り込みもしくは商品代引きでお支払い下さい。
964 :
nobodyさん :2009/03/26(木) 17:29:12 ID:xQu6jBsf
>>963 ショップ構築の引き合い受けた客先で、真剣にそれ提案して、
「その機会損失が無視できないから頼んでるだろが!」
って怒鳴られた先輩いたな。
でも俺も、未だに予算と能力が要求に見合ってない客には、
同じ提案やってるよ。必ずFAX注文用紙も付ける。
965 :
nobodyさん :2009/03/26(木) 21:11:39 ID:xQu6jBsf
大分前にもきいたんだが、 誰かZend_CacheのPageで、 キャッシュクリアするお作法、しらね?
>>965 その先輩カッコよすぎるな。
FAX注文用紙もウケタ、先輩が先輩なら、後輩も後輩だ。
お前ら面白すぎる。
俺も次そういう話があったら真剣に提案してみるよw
>>912 YiiFrameworkもARで複合キーサポートしてるよ。
ただ、今のところMySQLとPostgreSQLでしか動かないらしい。
ベースはPDOだから、DAOを使ってSQLごりごり書くならOracleでも使えると思うけど
。
>>965 お作法?
消し方は基本的にCoreと一緒
いつ消すかってのはアプリケーション実装しだいだと思うけど?
969 :
>>968 :2009/03/27(金) 06:39:23 ID:HWBmRKPr
Zend_Cache_Frontend_Pageの場合、他のフロントエンドと違って キャッシュのIDが自動で生成されるよね? で、その自動生成されたIDを使ってremoveする場合 何をどう使って、IDを指定すべきなの? って事をききたかったんだ わかりにくくてごめん
>>966 ネットどころかパソコンも触れたこと無いお土産屋のおっちゃんが、
雑誌でちょっと見て「ネットショップ作ってくれ」って言い出す地方だからな。
いや、真剣に、そういう店にはFAXが最適なんだよ。
購買層も爺婆がメインだし。
ちなみに某温泉特産の湯ノ花は、
静的サイト + FAX注文用紙 + その他宣伝
って構成で、月100は売り上げるようになった。
うちもほぼ放置で管理費もらえておいしいし。
>>969 なんか工夫して実装しないかぎり変更があったら全消しだろうね。
工夫ってたとえば、継承して同じオプションを使いながら_makeId _makePartialIdにアクセスする管理用クラスを書くとか。
972 :
970 :2009/03/27(金) 08:55:45 ID:???
>>971 やっぱりそうなるんかな
makeIdをオーバーライドするか、Outputに切り替えるかー
973 :
nobodyさん :2009/03/29(日) 01:01:11 ID:1IVpc3cd
preDispatchってforwardでも再度実行される?
毎回実行されるよ アクションコントローラーのpostDispatchは違うっぽいけど。
prepareメソッドって繰り返す必要ないときはいらないもんなの? 単純なデータ取得なら $sql = select * fro '〜〜 where ** = ?'; $db->fetchAll($sql, $var); で済むような気がした
スレチ・・・
977 :
nobodyさん :2009/04/08(水) 14:20:28 ID:UaY/lmRd
Model部分に対する規則等はあるのでしょうか? ControllerやViewには命名規則などがありますが、Model部分に関しては参考となるドキュメントを見つけられませんでした。
ないよ あったところでどうなるというのだ
979 :
nobodyさん :2009/04/08(水) 14:53:03 ID:UaY/lmRd
includeが楽になるとかそういったメリットを期待してました。 こんなことを想像してました。 loadModel('Class_Name');
確かにね でもモデルってのはコントローラと一対一で対応するものでもないし 複数のモデルを組み合わせることもしょっちゅうだからなぁ
981 :
nobodyさん :2009/04/08(水) 15:26:25 ID:UaY/lmRd
VCのような厳密な関わり合いはなくともせめて
>>979 のような関数なりほしかったです。
include先もある程度固定されていますし。
>>981 プラグインローダーでできるよ。
誰かがブログに書いてたな。
あと、1.8でZend_Applicationがリリースされる。
そっちの方が本命かも。
ってかそんな無茶なことできるのPHPだけだっての Javaの人に同じ事やりたいって言ったら怒られるぞ
>>979 自前でクラスファイルを探してインクルードする関数を書いて、
spl_autoload_registerで登録すればいい。
>>982 >Zend_Application
なんだこれ、またあいまいな名前のパッケージが出てきたな。
Zend_Controllerとどう違うんだ?
全然ちゃうがな
Zend_DSiはまだですか?
これってlibraryから必要なものだけ組み合わせて使って、 俺フレームワーク作るっていう使い方してもいいのかな?
いいわけないっしょ
むしろそういう使い方が主だろ
必要なものだけ組み合わせるっていうか そもそも全部使うサンプルなんかあるか?
991 :
nobodyさん :2009/04/09(木) 00:43:51 ID:iT6qHOmL
上の方にも似たような質問がありましたが、header関連をどこかにまとめることはできないでしょうか? 希望としてはZend_Layoutあたりでできたら無効化するのも簡単なのでありがたいのですが、どうやらないようです。 Zend_Controller_Action::init()に毎回記述する方法やZend_Controller_Actionを別途実装する以外の方法があれば教えてください。
addHeaderでどこでもいいんじゃ?
993 :
nobodyさん :2009/04/09(木) 22:48:43 ID:oDPn1AxL
大垣靖男って死んだの?
なんかブログがエラーになってるね
995 :
nobodyさん :2009/04/10(金) 01:38:26 ID:mTlvGODg
ブログだけじゃなく、会社のサイトもMODxのエラーだけ 倒産でもして夜逃げ中かね
特別セキュリティーに厳しい人という印象があったが エラーは吐く設定にしてたんだな どうせエラーなんて出ないしという専門家のおごりか?
>>996 素のエラーじゃないからいいんじゃね。
それとあそこは再々落ちてる。
ちょっと次スレたててくる。
規制でたてれなかった...orz
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。