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

ZendFrameworkってどうよ?

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2006/10/07(土) 02:49:15ID:6wQ8r0Dc
ようやくVer.1.0が出るらしいね
これってどうよ?

PHP5に移行したほうがいいのかな
0882nobodyさん2008/02/14(木) 22:07:34ID:???
いきなりどうしたんだ?
0883nobodyさん2008/02/14(木) 22:32:59ID:???
> これはインターフェースを使って実装したからうまくいったなんて例あったら教えてくれ。

Javaの例がそのままあてはまる。以上。
0884nobodyさん2008/02/14(木) 22:35:21ID:???
> Javaの例がそのままあてはまる。
0885nobodyさん2008/02/14(木) 22:45:12ID:???
>>881
インターフェイスはメソッドを実装せずにそのまま継承するとエラーを出すクラスを表現する糖衣構文。
絶対なくてはならないものじゃないけど、あった方が便利でいいよね。
0886nobodyさん2008/02/14(木) 22:54:53ID:???
それはabstract classじゃないのか
0887nobodyさん2008/02/14(木) 23:08:42ID:???
>>886
abstractはすでにいくつか実装されたメソッドを持ってるけど、interfaceは持ってない。
まあ似たようなもんだけど。

あ、もしかして>>881は全部abstractでいいじゃんって言いたいのか?
0888nobodyさん2008/02/14(木) 23:31:13ID:???
インターフェイスってタイプヒンティングにも使えたっけ?
0889nobodyさん2008/02/14(木) 23:35:13ID:???
もち。
使えなかったらインターフェイスの意味なくね?そうでもない?
0890nobodyさん2008/02/14(木) 23:41:04ID:???
PHPでの例ならZend_View_Interfaceが良い例だと思うよ。

正直JavaやC#やるまでインターフェイスの便利さが理解できんかった。
便利さが実感できるのは厳格な型がある言語とそうでない言語との違いじゃないかと思う。

08918812008/02/15(金) 04:02:49ID:???
>>890
まさにそうだと思う。PHPなんて何でも受け取れるんだからイランと思う。
PHPは方向を見失ってるな。matzは嫌いだが、言っていることは正論だ。
彼のオブジェクト指向に対する考えの深さには驚く。
0892nobodyさん2008/02/15(金) 04:13:23ID:???
ってかrubyも厳格な型がある言語じゃねーだろ
0893nobodyさん2008/02/15(金) 05:14:03ID:???
厳格もなにも型がない事の利点を見出して活用してる言語だし、881への指摘としては的外れじゃね
その割には仕様がない事による迷走具合が酷かったりするが、まあスレ違いだな

phpはどこに向かうんだろな。goto導入とか既にブロガー共の定番ネタ化してるが
0894nobodyさん2008/02/15(金) 08:03:17ID:???
>>891
Interfaceいらないっていう理由がよくわからんな
単に自分が使ってないだけじゃないのか?
理由をもうちょい詳しく言ってくれ
0895nobodyさん2008/02/15(金) 08:28:43ID:???
>>890はPHPではインターフェースの便利さが理解できなかったって書いてるのであって
インターフェースが要らないとは書いてないしな。
JavaやC#だってインターフェースを使わなくてもプログラミングが出来る。
しかし、OOPするならインターフェースは欲しい。
言語じゃなくてプログラミングスタイル(っていうのか?)次第じゃね。
0896nobodyさん2008/02/15(金) 08:54:29ID:WvlYrnu/
インターフェースってのはつまり、エラー報告機能のついたドキュメントだよね。
0897nobodyさん2008/02/15(金) 09:35:00ID:???
>>891 >>893
890だけど、ごめん言葉足らずだったわ。
要るか要らないかって言うと俺は便利だから要る。

>>895
言いたい事書いてくれてありがとうw
0898nobodyさん2008/02/15(金) 09:35:35ID:???
>>885,896
なんか"エラーを出す"にこだわっているというか重点があるように読めるんだけど、
インターフェースはクライアントに見せる仕様書みたいなものだから、
エラーは二次的なもというかそれ以前の話。
茶碗と箸を用意しても腹はふとらない。
茶碗と箸を使うことを決めてるだけで、クライアントは原則それを使う。
インターフェースでプログラムするのがOOPの基本だろ。
0899nobodyさん2008/02/15(金) 10:13:42ID:???
>>898
エラーを出すから仕様書みたいな扱いにできるんじゃね?
まあ鶏が先か卵が先かみたいな話になるけど。
09008982008/02/15(金) 10:59:35ID:???
>>899
いや、意外と重要だと思うんだ。間違いじゃないけど、理解度の問題かな?
俺もOOを100%理解しているとは思えないので間違ってたら叩いてくれ。

茶碗と箸を用意(実体化:new)して「飯が食えない」ってエラーが出て便利か? ってこと。
インターフェースが便利なのは、飯が和食じゃなくて洋食となりお皿とスプーンが
必要となったとしても、それは実装で変えればいいだけでインターフェースは変わらない。
クライアントコードは茶碗と箸で洋食が食える(クライアントコードを修正する必要がない)

例えが変な気もするが許してくれ、言いたいことは伝わると思ってるんだが。
0901nobodyさん2008/02/15(金) 11:00:22ID:???
> 茶碗と箸を用意(実体化:new)して「飯が食えない」

ワロタ
09028982008/02/15(金) 11:08:54ID:???
ごめん、ちょっと勘違いw。
もちろん、茶碗だけ用意して「箸忘れてんどー」ってエラーが出るのは便利。
>>885,896がインターフェースに対してnewしてエラーが出ると言っていると思ってたスマソ。
09038982008/02/15(金) 11:27:10ID:???
なんかツッコミどころを間違えて、ちょっとじゃなくて大きな勘違いだったな。マジでスマソ。
とは言っても、俺的には「実装し忘れてエラー」なんかよりも、
「実装が変わってもクライアントコードはそのまま」がインターフェースの本質だと思ってる。
だから「エラーが出る」とだけ書かれるとなんか引っかかる。
ついに言い訳モード(´・ω・`)
0904nobodyさん2008/02/15(金) 15:57:20ID:???
>>892
インターフェースがいらないといってるだけなんだが、良く読んでくれ。
Rubyは動的言語(ダックタイピング)をうまく活かして、インターフェースじゃなく
mixinで多重継承を実現してるといいたいだけ。

>>894
上に述べたことに答えは含まれているけど、
PHPでインターフェース宣言するメリットがどこにあるのかわからない。
Javaは受け取る変数の型によってもクラスを作り変えなきゃいけないからインターフェースで外面を定義するのはわかる。
matzの言葉を借りるなら、「仕様の継承」と「実装の継承」

PHPもJava真似をせずに、違う形で多重継承をサポートすべきといいたい。
0905nobodyさん2008/02/15(金) 16:18:44ID:WvlYrnu/
厳格性を重視するなら、mix-inとインターフェースは対立するよね。
0906nobodyさん2008/02/15(金) 16:33:07ID:???
>>904
上の方でいくつかインターフェイスの利点が挙げられてるけどそれについてはどう思ってるの?
それを言わずに、メリットがどこにあるのかわからない、って言われても俺には何言ってるのかわからない。
すまんけど、もっときちんと説明してくれ。煽りとかじゃなくてマジでわからんから。
0907nobodyさん2008/02/15(金) 17:26:39ID:???
PHPはJavaじゃねえっつーの。
interfaceなんかとりいれる暇があったらmixinを実装しろや。
interfaceの利点なんてmixinのそれに比べれば屁みたいなものだし。

ってことじゃないかと思った。
0908nobodyさん2008/02/15(金) 19:03:51ID:???
Zendの例で言うとViewを拡張してオレオレViewを作りたい、って時に
Zend_View_Interfaceで既定されたAPI通りに作ればそのまま
Zend_Controllerに放り込んでも動きますよ、っていう感じで
別のクラス内部で使われるものを拡張するような
ライブラリを使う場合にinterfaceの意味はちゃんとあると思うけど
(別になくてもいいけど使う側の苦労が増える)

rubyのmoduleのようなmixinが欲しいってのはそりゃ同意だけど、
配列をブラケット表現で書けるパッチに大半が反対意見の惨状を見る限り
ドラスティックに改善する見込みの無いこの保守的な言語に何言っても無駄だと思うので
PHPの言語仕様に文句言う暇があったら他の言語の勉強してる方がまし
それか、こんなところでウダウダ言ってないでinternalsに苦情のメールを投げつけたらいい
0909nobodyさん2008/02/15(金) 20:13:04ID:???
mixinてIDEの自動補完きかないよね?
そんなのイラネ
0910nobodyさん2008/02/16(土) 08:06:46ID:???
コーラ噴いた
0911nobodyさん2008/02/16(土) 12:52:02ID:???
静的で型の強い言語で得られる利点と、動的で型の弱い言語で得られる利点は違う。
型推論を持つ関数言語では、コンパイル時のほぼ全てのバグを検出できるというけど、
PHPはもともとそういうところを目指した言語ではないから、
PHPの性質からいえば、mixinみたいなものの方が緩くていいように思う。
var引数にどんなクラスのインスタンスも渡せてしまうというのが、
欠点なのか利点なのかというのは、バグ検出の立場から言えば明らかに欠点だけど、
例えばストラテジー・パターンでアルゴリズムを書いた場合に、
C++のテンプレート・アルゴリズムみたいに使えるという利点はある。
interfaceの話で言えば、ここである程度型の保証をしたいということになる。
0912nobodyさん2008/02/16(土) 14:07:24ID:???
これ以上PHPをゆるくするのは個人的には勘弁だなあ
そういうのはもうRubyでやればいいんじゃね?と思う
PHPはJavaのマネをすべきとは思わんがRubyのマネをすべきとも思わんしなあ
0913nobodyさん2008/02/16(土) 14:32:09ID:???
半端なのがまずいんでしょ
結局phpは緩い自由度提供したいのか、
堅いチェックできっちり作れる言語にしたいのか。

両方を上手く取り入れられれば理想なんだけど、そうもいかんしね
現状では妥協点がはっきりしないまま迷走してる
0914nobodyさん2008/02/16(土) 14:44:56ID:???
現状は前者だろ?
後者に揺れて迷走してるって具体的に何を指してるんだ?
0915nobodyさん2008/02/16(土) 15:11:24ID:???
え?おれ自由って認識ないな。制約だらけというか
とりあえずcreate_functionは不自由だと思う。透過的に引っ張り回せないし。
nullと空文字を区別してたり===/!==が必要になったりってのも
リフレクション周りも妙に不自由するじゃない

良い意味でユルい言語ではないし、良い意味で堅い言語でもない
0916nobodyさん2008/02/16(土) 15:12:20ID:???
「良い意味でユルい言語」ではないし、「良い意味で堅い言語」でもない

としないと意味が逆にw
0917nobodyさん2008/02/17(日) 01:52:40ID:HodSsYVt
array();なんて書くのかったるいから[]でいいし
hashも区別させたいから{}もつかいたい
でもinternalの中の人はそういうの好まないってきいた
0918nobodyさん2008/02/17(日) 05:11:24ID:???
ゆるい/堅いというより型が動的だからなぁ。
だからインターフェースがあっても意味が半減するかもしれないが...

以前「php4はメンバがオールpublicなんでカプセルかできねーYO」って書き込みがあって、
そんとき、「カプセル化は独立性が目的なんだから、PEARのようにコーディング規約で...」
って書いたんだけど、そんなんじゃ意味ねぇってことだったかな。
で、アクセス権が指定できるようになって、言語仕様上カプセル化が可能になったわけなんだから
カプセル化されたオブジェクトを弄るインターフェースも、ってのは普通の流れになると思うが、
なんでそれがJavaのまねごとになるかなぁ。

一番の自由はユーザの要望かw。
そんな俺はC#の静的コンストラクタが欲しい。
0919nobodyさん2008/02/17(日) 05:24:11ID:an+fL3fY
privateなメソッドの単体テストってどうしてる?
0920nobodyさん2008/02/17(日) 07:36:43ID:???
>>919
単体テスト?
何か問題でも?
0921nobodyさん2008/02/17(日) 12:53:01ID:???
>>915
> nullと空文字を区別してたり

いや、nullと空文字は概念的に違うものだろ。
ついでに空配列とfalseもそれぞれ違うもの。

たとえばデータベースなんかでも、
nullと空文字は違うもの扱いになっていることが多い。
0922nobodyさん2008/02/17(日) 13:07:00ID:???
>>919
それさぁ、前から思っているんだけど、privateなメソッドというものは、
その実装をクラス内部しか知らないわけだから、クラス自身が
自己テストという形でやればいいんじゃないかなと思っている。

つまり、クラスにpublicなtestメソッドを作ってそのメソッドが自己テスト。

問題点としては、クラス自身にテストコードが含まれるため
クラスのコードサイズが膨れ上がるということ。

この問題は、C# 2.0の話になるが、C#には一つのクラスを複数のファイルで書くことができる
partial というものがあってそれを使えばテストコードを分離しながらテスト時にはテストコードを
追加してコンパイルリリース時には省いてコンパイルという方法が使えると思う。

とここまで書いたが、単純に条件コンパイルでリリースモードの場合testコードを取り除くという方法でいいかw
テストコードを別ファイルにしたかったら、include。
0923nobodyさん2008/02/17(日) 13:11:50ID:???
Zend_Filter_Inputを各画面で使いたいんですけど、
validatorsには、受け取る可能性のある全てのフィールド (パラメーター) 名を指定しないと行けないのでしょうか。
どんなフィールド名が来るかわからない時にZend_Filter_Inputオブジェクトを取得する良い方法はありますか?

一部のフィールドにはvalidatorを掛けたいので、
validatorsに指定していないフィールドが来た時はvalidateなしでそのまま格納する、
と言うオプションでもあれば良いんですが、今のところ見当たらなくて。

こっちのフィールドがこういう値だったらこっちのフィールドはこういう値じゃないと駄目、
とか言うチェックもやりづらいし。。
09249222008/02/17(日) 13:44:48ID:???
雑にだけどPHP版で書いてみた。
class A {
 private $value = 1;
 private function foo() {
  $this->value++;
 }
 public function test($unit_case_object) {
  include 'a.test.php';
 }
}
//テストコード a.test.php
<?php
$unit_case_object->assertEqual($this->value,1);
$this->foo();
$unit_case_object->assertEqual($this->value,2);
$unit_case_object->assertEqual($this->value,100);
?>

//UnitCaseからこんな感じで呼ばれる予定
class UnitCaseMock {
 function assertEqual($value1, $value2) {
  if($value1!=$value2) {
   print $value1. ' != ' . $value2 . '<br>';
  }
 }
}
class TestCase extends UnitCaseMock {
 function test() {
  $a = new A;
  $a->test($this);
 }
}
09259222008/02/17(日) 13:47:15ID:???
privateメソッドはテストすべきとか
ユニットテストはそもそもpublicなものをやるものだとか
いう話はあるけど、自己テストという形でやるべきだという
話は聞いたこと無いんだよね。

まあ詳しく調べたわけじゃないから知らないだけだろうけど。
誰か知っていたら教えて。
09269222008/02/17(日) 13:57:17ID:???
思いついた改良ポイント

class Aをの親クラスでfunction testを作っておけば
class Aを継承させるだけですむ。

テストコードのファイルをクラス名から自動判断。
またフォルダにし、a.test/〜.php という形にすれば、
テストコードを記述したファイルを細かく分けられる。
そこに、setUp.php tearDown.php を作ることで、初期化・終了コードも実行できる。
0927nobodyさん2008/02/18(月) 09:53:58ID:???
Modelsって、一部の動作を簡略化するためにライブラリみたいな感じで置いて使ってるんだが、
こんな使い方でいいのかな?
0928nobodyさん2008/02/18(月) 10:48:32ID:???
modelが処理の根幹だろ・・・
0929nobodyさん2008/02/18(月) 11:12:15ID:IeH302DJ
modelsにPEARも置いてる俺
0930nobodyさん2008/02/18(月) 16:00:19ID:???
>>928
処理はあくまでコントローラで処理のサポートの主な部分がモデルだろ
0931nobodyさん2008/02/18(月) 17:09:03ID:???
通常はModelがビジネスロジックを持つ
WebフレームワークだとControllerはRouterになりがち
ただ、遷移の多いアプリであれば、Routerこそが処理とも思える
まあ、役割がちゃんと分かれていればいいんじゃないの
0932nobodyさん2008/02/18(月) 18:06:25ID:???
一つのモデルから、もう一つのモデルへ
データを移動するような処理は
どこに書けばいいのだろうか?
0933nobodyさん2008/02/18(月) 19:06:28ID:+oxjUq0H
http://framework.zend.com/manual/ja/zend.view.scripts.html#zend.view.scripts.templates

であるように、Zend_View_Smartyを使った場合、テンプレートファイルが
あちこちにある場合は、どうしたらいいのでしょう? setScriptPathだと
ひとつしか設定できないよね?
0934nobodyさん2008/02/18(月) 19:42:55ID:???
>>933
そもそもSmarty自体が複数のパスに対応してないからしょうがない
まあパスが複数必要になるケース自体も稀だと思うが
最悪、複数Viewのインスタンスを用意して別々のパスを設定すればいいよ
それが手っ取り早いだろう
0935nobodyさん2008/02/18(月) 20:57:41ID:???
コントローラの分割の仕方が良く分からない。
結局DB主体に作ってる。
4〜5のマスタを管理するコントローラと、3〜4の関係を管理するコントローラみたいな。
でも結合させるから境界なんてあいまいだし。
流用するモデルもあまりないから利点が実感できない。結局アクションごとに独立しちゃってる。
0936nobodyさん2008/02/18(月) 23:13:03ID:???
>>933
Zend_Controller_Action_HelperBroker::addHelper($viewRender);
で $viewRenderを指定すると、よろしくコントローラにひもづいたテンプレートを
取得してくれるけど、そういう話ではない?

単純に色んなパスから取得するのなら、毎回setSctriptPathを指定するしかないんじゃないかなぁ。
$smarty->setSctriptPath('path/to/foo');
$foo = $smarty->render('path/to/foo.tpl');
$smarty->setSctriptPath('path/to/bar');
$bar = $smarty->render('path/to/bar.tpl');

$smarty->setScriptPath('path/to/hoge');
$smarty->assign('foo', $foo);
$smarty->assign('bar', $bar);
$hoge = $smarty->render('path/to/hoge.tpl');
echo $hoge;
0937nobodyさん2008/02/18(月) 23:40:09ID:???
Zend/View/Smarty.phpの中身を好きなように書き換えればおk
0938nobodyさん2008/02/19(火) 00:07:36ID:???
なんだかんだでSmarty利用率高いよな
0939nobodyさん2008/02/19(火) 01:42:45ID:???
>932
それはたぶん、主となるマスタ側のモデルでしょ
モデルさえ定義しておけば自然にロジックが機能するのが理想
0940nobodyさん2008/02/19(火) 02:51:44ID:???
なんかMVCの良い見本になるオープンソースアプリとかないかね。
理屈は分かるんだけどやはり実物を見ないと理解が深まらない。
0941nobodyさん2008/02/19(火) 03:27:03ID:???
Struts
0942nobodyさん2008/02/19(火) 03:29:43ID:???
> Struts

重い死に行くフレームワークを持ってこられても・・・

0943nobodyさん2008/02/19(火) 03:47:56ID:???
SSH(笑)の一角を死に行くとかいわれても・・・
0944nobodyさん2008/02/19(火) 05:02:01ID:???
いや、SpringにとってのStrutsは、JSFに取って代わられつつある
というか、>940の言ってるのはフレームワーク使ってる側でしょ
たぶん、osCommerceとかXOOPSとか、
あのあたりがフレームワーク準拠のMVCで書かれると、
大きさとしてはいいサンプルになると思うけど
そういうのはまだないのかな…
0945nobodyさん2008/02/19(火) 05:09:47ID:???
リクエストを受け取って動作を決める部分をC
ストレージとのアクセスを担当する部分をM
レスポンスを吐く部分をVと言ってるだけだよ
疎結合とDRYを求めたら自然とそうなっていく形
「ここはCなのか?Mなのか?」とか考え始めたら本末転倒になりがち
0946nobodyさん2008/02/19(火) 13:49:56ID:BGhiTflR
osCommerceのソースって改めて見るとひどいな
0947nobodyさん2008/02/19(火) 14:05:42ID:???
XOOPSはXOOPS独自のフレームワークで書かれてて、見た目は結構いいね。
中身は良く知らないけど。
0948nobodyさん2008/02/20(水) 01:27:57ID:???
中身はいろいろ糞だと突かれてたな
最近のはどうなのかな。全体を包む部分の設計は良い感じなんだけど、掘り進むと(※現場適用を想定)あーこれこっちからも使えるようにしたいなーでもそういう組み方じゃないんだよなーとか色々悩んじゃうね

プロジェクト逼迫してる今やるこっちゃないなw
zendでメールマガジンサーバ/webUIをきっちり作り込んでみたものの、MTA選定が右往左往。。validationクラスは素性が良くて助かります。DB絡みのブリッジでもプレースホルダきっちりしてて良い感じです

ここで俺はぷかぁと煙草くゆらすわけです。
ほんとにこれでいいのかと。この後にDB版に投げて大丈夫なのかいなと。

cube以前のxoops採用は弊社では失敗で終わりました故の愚痴でしたお気に絵図
0949nobodyさん2008/02/20(水) 01:40:21ID:???
>>948
時間が出来たら、是非サンプルとか公開してくだちい>q<
0950nobodyさん2008/02/20(水) 16:43:41ID:???
オープンソースのウェブアプリって
なんか有名だから、簡単に採用できるだろ?と
思って使ってみると、こりゃダメだってのが多いよな。

スキル無くて、こういう機能は搭載されていません。
自分のところでは作れません。
できるのは設置とプラグインいくつか入れる程度です。
って所なら、こういうもんってあきらめて終わりなんだろうけど、

自社で開発できる所が、開発費・開発日数削減で使おうと考えると
自社で作ったら簡単に出来るであろうことが、
改造で組み込む→ソース汚い→改造しにくい→愚痴が出る。
ということになるんだよな。
0951nobodyさん2008/02/20(水) 23:34:42ID:???
愚痴ですか?
0952nobodyさん2008/02/21(木) 12:44:56ID:???
事実です
0953nobodyさん2008/02/21(木) 12:51:33ID:???
>>940
http://sourceforge.net/projects/zfcms
http://sourceforge.net/projects/zfblog
http://sourceforge.net/projects/zfbk
http://sourceforge.net/projects/zfweb20

こういうの?
0954nobodyさん2008/02/22(金) 05:29:10ID:???
そのプロジェクト、ぜんぶ空みたいだけど
なんかZFに対していいしれぬ不安を覚えた…
0955nobodyさん2008/02/22(金) 05:38:46ID:???
始める→ZFショボ!!→他やるわ
こんな感じじゃね
俺もだけど
0956nobodyさん2008/02/22(金) 13:41:19ID:???
MVCの切り分け方は自由であることを承知の上で聞くけど、
各コントローラに対するアクションって、confirm,update,deleteみたいな3〜4個の機能を実装するのが基本なの?
0957nobodyさん2008/02/22(金) 14:47:32ID:???
>>956
1コントローラに対して1リソースのCRUD関連アクションを
実装するのはまあ普通だ、わかりやすいからな
0958nobodyさん2008/02/22(金) 18:56:33ID:???
前にSmartyについて質問したもんです。おかえさまで解決。
サンクス。

しかし、デフォルトと違うディレクトリ構成にしたせいか。
ルーティング?でこけて404になる。

<?php
require_once 'Zend/Controller/Front.php';

$front = Zend_Controller_Front::getInstance();
$front->setParam('noViewRenderer', true);
$front->setControllerDirectory(array(
'default' => '../../application/modules/aaa/controllers',
'aaa' => '../../application/modules/aaa/controllers',
'bbb' => '../../application/modules/bbb/controllers',
'ccc' => '../../application/modules/ccc/controllers',
'ddd' => '../../application/modules/ddd/controllers'
));
$front->dispatch();

aaaとかはモジュール名です。ここに書いたパスにちゃんとコントローラーが
置いてあるんですけど、404になるんです。この程度のことでルーター系の
クラスとかいじらないといけないんでしょうか???
0959nobodyさん2008/02/22(金) 20:06:26ID:???
.htaccessちゃんと設定できてるか?
routingのエラーなら404にはならないよ少なくともデフォルトでは
0960nobodyさん2008/02/23(土) 00:27:27ID:???
routingのエラーならZend_Controller_Dispatcher_Exceptionが発行されるはず。
パスの指定に相対パス使ってるけど、それって行けるの?
いつも絶対パス使ってる。。

とりあえず$front->dispatch(); を try-catchでくくって例外エラーひろってみたら?
0961nobodyさん2008/02/23(土) 22:32:04ID:NHRB8E0h
漏れも絶対パスつかてるよ。
相対パスは試したことないから分からないけど…

Zend_Db_Table って JOIN できるの?
マニュアルには出来るって書いてあるけど出来ねー
例 10.97. は嘘か
09629582008/02/24(日) 00:34:51ID:???
Zendの入門本が相対パスだから、相対パスにしてみた。
それで簡単な(Hellow Worldだけ)IndexControllerを書いたら、
ちゃんと動いた。

しかし、ちょっと進化したController書いて958のように
したら、404に。そこで、絶対パスに変更してみたところ、
960氏の言うようにZend_Controller_Dispatcher_Exception
が発行された。よく分からない・・・。
0963nobodyさん2008/02/24(日) 01:33:29ID:???
君にゃFWはまだ早いんでは・・・
0964nobodyさん2008/02/24(日) 01:49:07ID:???
>>962
>>958 見て思ったんだけど、
'default' => '../../application/modules/aaa/controllers',
'aaa' => '../../application/modules/aaa/controllers',

ってこれって同じディレクトリ指定してるけど、'aaa' => の方を消したらどうなる?
aaaの方は要らないと思う。
0965nobodyさん2008/02/24(日) 19:40:49ID:???
http://akrabat.com/2008/02/21/simple-zend_form-example/
Zend_Formないわー
QuickFormの悪夢再びじゃねーか
こんなもんに力注ぐくらいならViewHelperをちゃんと作ってくれよって感じ
0966nobodyさん2008/02/24(日) 20:40:53ID:???
フォームはテンプレートから呼び出せた方が良いと思う
0967nobodyさん2008/02/24(日) 21:13:55ID:???
禿同。オレも使わん。

ファイルのアップロードのクラスとか、Zend_Configでyamlをデフォルトで使えるように
サポートして欲しい。
09689582008/02/25(月) 01:00:35ID:???
だめだ・・・直接index.phpを呼んでも404だ。
index.phpを単なるハローワールドにして呼ぶとちゃんと出てくる。
でもZendにフロントにすると404だ。
俺にはFWは早いって言うか、プログラマやめっかな。
0969nobodyさん2008/02/25(月) 01:20:38ID:???
ホントに404か?それ
0970nobodyさん2008/02/25(月) 02:27:59ID:???
ひょっとしてErrorHandlerとかErrorControllerが設定されてない?

ほんでもって、アクセスしてるURLは規約通りか?
09719582008/02/25(月) 12:44:26ID:???
ErrorHandlerもErrorControllerもないです。

昨日とは状況が変わって、http://host/index.php と呼ぶと
defaultのIndexControllerが呼び出されるけど、http://ホスト/index/
とかにすると、

Not Found
The requested document was not found on this server.

になるんだよね・・・。
0972nobodyさん2008/02/25(月) 12:55:59ID:???
htaccessだろ
09739582008/02/25(月) 18:56:29ID:???
自己解決。

モジュールごとにコントローラーのディレクトリを分けているんだけど、
コントローラーのクラス名にモジュール名のプレフィックスを付けないと
ダメっぽい。

http://framework.zend.com/manual/ja/zend.controller.modular.html
0974nobodyさん2008/02/26(火) 04:50:16ID:???
.htaccess以前だな

規約に従えってことか
0975nobodyさん2008/02/26(火) 08:30:48ID:???
addModuleDirectoryを使ってるとよくわかるけど
モジュール名が必要というよりは、
defaultモジュールの場合だけモジュール名が省略できると思っていればいい
0976nobodyさん2008/02/27(水) 11:18:30ID:???
Zend_FormのaddElementでselectを作りたいんですが、
optionsはどうやって指定すればよいのでしょうか?
$form->addElement('select', 'test', array(1 => 'a', 2 => 'b'));
$form->addElement('select', 'test', array('options' => array(1 => 'a', 2 => 'b')));
$form->addElement('select', 'test', array('attribs' => array('options' => array(1 => 'a', 2 => 'b'))));
上の三つは全てダメでした。分かる人教えてください。
0977nobodyさん2008/02/27(水) 11:36:06ID:???
今見てみたら俺のZFにZend_Form入ってねぇ
0978nobodyさん2008/02/27(水) 12:09:51ID:???
Zend_Form は 1.5.0RC1 からだと思う
09799762008/02/27(水) 16:53:34ID:???
自己解決しました。
$form->addElement('select', 'test', array('multiOptions' => array(1 => 'a', 2 => 'b')));
マニュアルにサンプルソースを書いておいてほしかった…
0980nobodyさん2008/02/29(金) 14:15:21ID:???
どのレベルからmoduleを分けたら良い?
いま、全部デフォルトモジュールにしてるんですが、
ユーザー画面と管理画面くらいは別モジュールにするべきか、
または、もっと細かいレベルで分けるべき?
0981nobodyさん2008/02/29(金) 14:22:55ID:???
ほんとそれは俺も目下の問題
何か指針になるものがあればいいんだが
レス数が950を超えています。1000を超えると書き込みができなくなります。