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

【PHP】フレームワークについて語るスレ【総合】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2005/08/10(水) 02:21:08ID:CBjrwwHd
※フレームワーク
Phrame本家
http://phrame.sourceforge.net/
Mojavi Project
http://www.mojavi.org/
mojavijapan
http://mojavi.p0t.jp/
Agavi本家
http://agavi.org/
Agavi.JP
http://agavi.jp/
[ 日本発 ] Maple Project
http://kunit.jp/maple/
[ 日本発 ] Ethna -PHPウェブアプリケーションフレームワーク-
http://ethna.jp/ethna-tutorial-startup-practice1.html

※関連スレ
【PHP】フレームワークMapleに舌鼓
http://pc8.2ch.net/test/read.cgi/php/1122105465/
【PHPフレームワーク】Ethna【スケルトン自動作成】
http://pc8.2ch.net/test/read.cgi/php/1123070439/
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/

その他>>2-5参照汁
0853nobodyさん2005/12/15(木) 02:23:24ID:???
http://trac.agavi.org/trac.cgi/wiki/HowToSetupBasicAuthentication
この公式サンプルも、全然>>839みたいな定義になってねぇし
08548392005/12/15(木) 03:13:21ID:???
>>852
たしかにそうだね。それが
> つーか今読み返してみたら、Sean Kerr的にはActionでビジネスロジックもありっていうスタンスっぽいなw
と言った理由なんだけど。
ただ、俺自身はドメイン層の処理はModelでやる方針でやってるって話。
Actionでドメイン層・データソース層に手を出すのも利点があるなら大いに結構だとは思うよ。

>>853
えーっと一応言っておくけど>>839は設計(or実装)方針の話ね。
(それまでの議論の内容も多少加味したつもりなんだが偏見もあるかも・・・)
あと、そこのサンプルは>>844の「ユーザーアカウント」にあたるものをModelとして抽出せずにActionで済ませちゃってるんだね。
だから839と違って見えるってのも無理はないかも。
まあロジックが複雑になってきたらそんなことは言ってられないので俺は認証用に作ったModelを再利用してるよ。
必要ならそのModelをもう一段継承してカスタマイズとかできるのでそこそこ便利だし。
0855nobodyさん2005/12/15(木) 03:28:55ID:???
>>841に対して、はじめは何言ってるんだろうこの人…と、>>842
同じ気持ちでしたが、
http://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/DesMVC.asp
ここを読んでみて>>841の言ってることがよくわかりました。
MVCの図にあるとおり
>ビューとコントローラの両方がモデルに依存していることに注意してください。ただし、モデルはビューとコントローラのどちらにも依存していません。
モデルは両方に依存していないものなんだね。
そう考えるとたしかに>>839の言ってる図は話にならない。
でも、それを言い出すとAgaviの設計自体がおかしいことになるね。
08568392005/12/15(木) 03:51:45ID:???
>>855
たぶんUMLを見慣れてる人が多いんだろうから誤解を与えたかもしれないけど、>>839は「依存関係」を表してるつもりじゃなかったんだなぁorz
Controller→Action→Controller→Viewってのは制御が移る順番。
他の⇔はデータの受け渡しであって、基本的にはメソッドの呼び出し+リターンなので制御が移る順番としても解釈できるかも。
>>855が依存関係の話を持ってきてくれたのでそれも考慮すると、⇔の矢印をすべて外側向きに変えたら少しはましになるかな?
矢印の意味は
・依存してる側→依存されてる側
・呼び出し側→呼び出される側
という関係で。(唯一Action→Controllerの部分だけリターンなので矢印の色でも変えてくださいw)
「ビジネスロジック」って言葉は俺も再考する必要があるかも。
>>846をもうちょっと咀嚼してみる。
0857nobodyさん2005/12/15(木) 03:53:25ID:???
http://forum.mojavi.org/index.php?showtopic=1281
こういうの見るとますますわからんくなる…
0858nobodyさん2005/12/15(木) 04:01:35ID:???
そこまでごちゃごちゃ深いこと考えなくても、
保守性の高いコードってWebアプリケーションなら結構つくれちゃうからなぁ…
ビジネスロジック云々より、ビジネスや運営自体について考えてたほうがよっぽど金になる
08598392005/12/15(木) 04:09:49ID:???
>>858
俺的もそう思う。どっちでもいーじゃんおまいらw、と
でも「間違っている」というつっこみをたくさんいただいたので、ヘコみつつ悪戦苦闘中であります。
0860nobodyさん2005/12/15(木) 04:22:02ID:???
>>855
マジでAgaviのView周りってModelに依存性あるの?
ステートレスなWebアプリでは切り離されてるのが当たり前だと思ってたけど。
アクティブモデルにせよオブザーバはかませるっしょ
0861nobodyさん2005/12/15(木) 04:40:08ID:???
View生成はクライアントリクエストのみを起点にしているから、
コントローラかアクションにぶらさげることは出来るね

前者はコントローラがMediator(と言ってもモデルかアクションから
データを受け渡すだけ)となり、後者ではアクションはコマンドオブジェクト
(ビジネスロジックとViewの呼び出しをカプセル化したもの)ということになる

どっちもパターンとしてはMVCとは呼ばないんだろうけど
http://www.martinfowler.com/eaaCatalog/applicationController.html

Viewがモデルに依存したほうがいいかアクションに依存したほうがいいか
まとまった見解ってある?
0862nobodyさん2005/12/15(木) 04:43:36ID:???
>>860
Agavi自体の仕様では依存性は発生しないよ。Modelは一つもなくても動くし。
でもModelを使った時点で依存はゼロではないと思われ。
「切り離す」ってのはいわゆる疎結合にするって意味だとは思うけど、元々依存してしまうものだからせめて疎結合にしましょうって感じじゃなかったっけ?
>>855の言ってるのは、逆向きの依存はゼロってことでしょう。
「Viewを変更したらModelが動かなくなりました」とかしゃれになんないし。
でもModelを変更したらViewに支障が出るのは仕方ない。
それでも最小限にしましょうってのが疎結合だと思う。
オブザーバはContextのことでおkかな?
0863nobodyさん2005/12/15(木) 05:25:53ID:???
依存性=オブジェクトをNewするかパラメータに取ってメンバにアクセスすること

結合の程度というようなファジーなものは存在しない
Framework界隈で依存性といったらこれのことだと思う
0864nobodyさん2005/12/15(木) 05:52:18ID:???
> 結合の程度というようなファジーなものは存在しない
疎結合って結合の程度がゆるいことじゃないの?
つーかどのレスに対してなのか反論なのか何なのかわからんな。
08658632005/12/15(木) 06:11:06ID:???
直上に対するレス

結合にはもちろん程度があるよ
しかし依存性にはそういうものは無くゼロイチだということを言ってみた

>>860>>862の愛でどうも考えている依存性が違って
かみ合ってないように見えたので
0866nobodyさん2005/12/15(木) 06:12:18ID:???
× 愛で
○ 間で

すまん
間違ったものを芽生えさせた
0867nobodyさん2005/12/15(木) 06:12:22ID:???
>>860
Modelにするにせよ別もんにしてつくるにしても、
初期のViewだけじゃなにもできんじゃん。
ごてごてタグとテンプレートと定数混ぜることになってしまう。
その辺のモデルもつくるでしょ?ふつう
0868nobodyさん2005/12/15(木) 06:16:08ID:???
いや、Mojaviだとビジネスロジックの呼び出しはアクションあたりに集約するのが一般的だと思う
ビュー内でモデルは呼び出したくない
0869nobodyさん2005/12/15(木) 06:20:08ID:???
>>868
MVCはもともとそういうものだけどな。View - -> Model
08708622005/12/15(木) 06:21:54ID:???
>>865
そかそか。曖昧な言い方ですまんかった。
基本的には「依存性はゼロイチ」ってのは同意だよ。
だから>>860への答えはViewからModelへの依存性は「あり」。
ただ「切り離されてるのが当たり前」って表現をしてたので、862で「それは疎結合のことであって≠依存性だよね」っていう意味で言った。

>>868
実際にはそうだよなw
0871nobodyさん2005/12/15(木) 06:23:49ID:???
>>869
パッシブモデルね
0872nobodyさん2005/12/15(木) 09:58:57ID:???
モデルをフレームワークから独立させる派は
モデルからUserにアクセスする必要がある時はどうやってるの?
0873nobodyさん2005/12/15(木) 10:10:17ID:???
>>872
モデルはフレームワークに依存していない設計なので、
モデルから User にアクセスする必要がない。
0874nobodyさん2005/12/15(木) 10:21:58ID:???
extends Modelすらしないってこと?
0875nobodyさん2005/12/15(木) 10:26:14ID:???
>>873
DBはどうしてる?
0876nobodyさん2005/12/15(木) 11:14:48ID:???
Mojavi系の場合DBみたいな下層にも入ってくるから
フレームワークに依存しない設計がいまいちイメージしにくいな
0877nobodyさん2005/12/15(木) 11:38:55ID:???
というか、一度 Mojavi を頭から追い出して一般的な設計の話をしろよw
もうあんな設計は古いって…。
0878nobodyさん2005/12/15(木) 11:43:23ID:???
話変えたいなら自分から話題を提供すればいいのに
0879nobodyさん2005/12/15(木) 11:51:42ID:???
スルーしとけ
0880nobodyさん2005/12/15(木) 11:55:01ID:???
Mojaviはたたき台としてまだ価値あるだろ
影響受けてるフレームワークいっぱいあるしな
0881nobodyさん2005/12/15(木) 14:16:48ID:???
rails!rails!
0882nobodyさん2005/12/15(木) 15:21:47ID:???
PHP on TRAXときたか
0883nobodyさん2005/12/15(木) 21:48:05ID:???
S2Baseがいいと思うんだけど、どう?
ValidateやらFilterは自作になるけど、結構いいと思う。
0884nobodyさん2005/12/15(木) 23:18:51ID:???
S2PandNで出席者が質問してたが、S2やMapleのDIはどこまでパフォーマンスが出るか疑問。
プロダクトとしてリリースするなら、自分のところできちんと性能評価をやった方がいいよ。
0885nobodyさん2005/12/16(金) 00:48:04ID:???
もうMojaviでいいや。 
0886nobodyさん2005/12/16(金) 01:35:11ID:???
S2をそのままPHPに移植してるのかな
08877682005/12/16(金) 09:02:11ID:???
zend framework待とうよ!
0888nobodyさん2005/12/16(金) 09:14:05ID:???
末広がりget, zuzaa
0889nobodyさん2005/12/16(金) 18:13:50ID:???
Mojavi初心者なんですが
エスパー募集してもよろしいでしょか?
0890nobodyさん2005/12/16(金) 18:41:40ID:???
>>889
ここは語るスレだ。質問はスレ違い。
08918892005/12/16(金) 18:51:08ID:???
>>890
そうですか、失礼しました。(´・ω・`)
0892nobodyさん2005/12/17(土) 00:42:49ID:???
POSTされたデータをDBへupdateする場合はmodelでするの?
0893nobodyさん2005/12/17(土) 01:13:05ID:???
>>890
多少質問あったほうが盛り上がるからいいんで内科医?

>>892
基本的にvalidationはactionでやり、DBの扱いはmodelでやってるけど、このスレ読んでたらもしかしたらactionでやったほうがいいのかな?とも思えてきた。
0894nobodyさん2005/12/17(土) 01:30:36ID:???
>>893
エスパー募集な質問でもか?
0895nobodyさん2005/12/17(土) 01:39:26ID:???
あー、エスパー募集はよろしくない罠w
0896nobodyさん2005/12/17(土) 01:50:31ID:???
>>892
modelを作るほど複雑でなく(単なるログとか)、
また他のアクションで同じ機能を利用しないならアクションで済ませてしまってもいいとは思う。
0897nobodyさん2005/12/17(土) 02:02:35ID:???
>>896
modelでDBに登録するとしたらサニタイズもmodelでやるってことになる?
でないとmodelがactionに依存してしまう気がするんだけど。
0898nobodyさん2005/12/17(土) 09:32:09ID:???
そしたら
サニタイズはactionでやるべきだね。
0899nobodyさん2005/12/17(土) 09:36:15ID:???
アクション前にフィルタ処理は済んでるはず
モデルは自身のためのサニタイズは自身で持つ
いずれも定義は括りだす
0900nobodyさん2005/12/17(土) 09:39:35ID:???
インプットフィルター → アクションDeバリデーション → モデルサニタイズ

てことか。
実際どこで何をやるんだろ。
0901nobodyさん2005/12/17(土) 10:04:30ID:???
つーかModelでDBに書き込む場合、フィルタでサニタイズするのもおかしいじゃん。
てことはActionでDBに書き込むのが正しい?
0902nobodyさん2005/12/17(土) 10:55:36ID:???
ありえなす
0903nobodyさん2005/12/17(土) 11:29:14ID:???
俺はmodelからdbクラスいじってやってるけど。
0904nobodyさん2005/12/17(土) 12:05:30ID:???
mojaviの質問はどこですればいい?
0905nobodyさん2005/12/17(土) 12:12:34ID:???
ここですればいいよ
答えが返ってくる時もあれば返ってこない時もあるけど
0906nobodyさん2005/12/17(土) 13:19:27ID:???
>>904
あなたの質問がこのスレの命運を決めるかもしれません。
慎重に質問してください。
0907nobodyさん2005/12/17(土) 13:24:57ID:???
何のプレッシャーだよw
0908nobodyさん2005/12/17(土) 19:16:29ID:???
おい、agaviのサイトがエラーですよ!
http://www.agavi.org/
0909nobodyさん2005/12/17(土) 20:58:41ID:???
>>908
多分5.1にしたんじゃないか
0910nobodyさん2005/12/17(土) 21:00:06ID:???
>>908
多分PHP5.1に変えたんだろ
timezone関係の警告でてるし
0911nobodyさん2005/12/17(土) 22:24:03ID:???
バージョン上げてからチェックしないとはアホもいいとこだなw
0912nobodyさん2005/12/18(日) 03:06:20ID:???
>>911
逆だろ
チェックしてからバージョン上げないなんてアホもいいとこだなw
0913nobodyさん2005/12/18(日) 03:09:01ID:???
まあフレームワークのサイトが
危機管理意識なしでエラーメッセージ垂れ流しっていうのは
あまりよろしくないよなぁ。
そもそも確認すらしないのかと。
0914nobodyさん2005/12/18(日) 06:17:14ID:???
あれ、こんなエラー自分の環境じゃ出なかったのに
0915nobodyさん2005/12/18(日) 09:07:58ID:???
isSecure()
return true


filters.iniで以下設定
[BasicSecurityFilter]
class = "BasicSecurityFilter"
param.comment = "On"

と挙動が違う。


filters.iniで設定すると、controllerの$this->loadModuleFilters($filterChain);
でBasicSecurityFilterがregistされ
BasicSecurityFilterクラスの$controller->forward(LOGIN_MODULE, LOGIN_ACTION);

でLOGIN_MODULEのフォワード無限ループになります。


http://ozaki.kyoichi.jp/mojavi3/authfilter.html
ここのサイトではちゃんとできているようだけど、
同じようなトラブルにあっている方はいますか?
0916nobodyさん2005/12/18(日) 11:43:36ID:???
そのドキュメントは古いよ
BasicSecurityFilterの使用はsettings.iniのUSE_SECURITYで決定する
filters.iniに設定する必要はないよ
0917nobodyさん2005/12/18(日) 14:07:02ID:???
o
0918nobodyさん2005/12/18(日) 21:17:43ID:???
>>916
ちがうでしょ。
controllerでは下のように条件分岐している。
if (USE_SECURITY && $actionInstance->isSecure()) {
0919nobodyさん2005/12/18(日) 21:42:33ID:???
>>911-912
それがPHPクオリティ
0920nobodyさん2005/12/18(日) 22:12:04ID:???
>>918
なにが違うんだ?
USE_SECURITY && $actionInstance->isSecure()で
filterChainにSecurityFilterが登録されるわけだが。
なんでfilter.iniで再登録する必要がある?
$actionInstance->isSecure()の意味解ってないだろ
0921nobodyさん2005/12/18(日) 22:48:36ID:???
>>920
申し訳ございません。
私が間違ってました。
0922nobodyさん2005/12/18(日) 23:39:16ID:???
俺も間違ってた・・・。
再登録以前に、filters.iniにBasicSecurityFilterを登録したら
未認証時に遷移するはずのLoginAction自体にもBasicSecurityFilterが適用されて強制無限ループ。
正確には、forwardが20回再帰すると例外投げるから無限ループにはならないみたいだけど。
すみませんでした。
0923nobodyさん2005/12/18(日) 23:54:26ID:???
それそれ!
BasicSecurityFilterは$this->loadModuleFilters($filterChain);
でregistすると、ループする。
(Default_LoginActionにisSecure ()適用したと同等の現象)

いちいちactionでisSecure ()をtrueに書き直すのめんどくさい。

何とかなりませんか
0924nobodyさん2005/12/19(月) 17:48:44ID:???
mojaviでadodb+DB_Object使ってる香具師いる?
0925nobodyさん2005/12/19(月) 18:34:07ID:???
その組み合わせってなんか変じゃね?
0926nobodyさん2005/12/19(月) 21:25:50ID:???
headerを出力したいんだけど、viewにそのまま書いていい?
0927nobodyさん2005/12/19(月) 21:49:37ID:???
>>925
変だからやってる香具師いるかなぁと
普通ならPEAR::DB+DB_Objectだろうけど、PEAR::DBってadodbより遅いって言うし。
0928nobodyさん2005/12/19(月) 21:53:15ID:???
そこでPDOですよ。
0929nobodyさん2005/12/19(月) 22:05:31ID:???
>>925
viewに書くのか。
新しい考えだけど俺はactionに書いてる。
だってviewじゃないし。
0930nobodyさん2005/12/19(月) 22:08:30ID:???
>>927
DB_DataObjectは確かに内部でDBを使っているが、
基本的に抽象レイヤーと組み合わせて使うもんじゃないぞ
DB_DataObjectのソースに手を入れるなら別だけど
0931nobodyさん2005/12/19(月) 22:42:40ID:???
DB_DataObjectつかうならFlexyもどうぞ。
0932nobodyさん2005/12/20(火) 00:41:08ID:???
>>931
Alanさん早くDBDOをFixしてください
0933nobodyさん2005/12/20(火) 02:33:17ID:???
というよりみんなは何を使ってるの?

PDO使いたいけどPHP5.1で動かないアプリがあるからムリポ
DB_DataObjectで楽するかadodbで早さを取るか迷い中
0934nobodyさん2005/12/20(火) 12:06:31ID:???
agaviサイトまだエラー直ってないじゃん
やる気ねーーー
0935nobodyさん2005/12/20(火) 14:49:28ID:???
Mojavi2は PHP5で動作しますか?
0936nobodyさん2005/12/20(火) 15:07:17ID:???
>>933
そもそも PHP を使ってない(゚Д゚)
0937nobodyさん2005/12/20(火) 16:02:57ID:???
コスモを感じる
0938nobodyさん2005/12/21(水) 09:02:46ID:???
agavi直りますた。
0939nobodyさん2005/12/21(水) 10:14:48ID:???
Mojavi < agavi < 江角 < Maple ?

今、Mojavi勉強中なんです。 ながら気になってます。
0940nobodyさん2005/12/21(水) 11:02:52ID:???
mojavi以外ならどれでも自分が使いやすいのを使えばいいと思う。
0941nobodyさん2005/12/21(水) 15:41:11ID:???
ありがとう。Mojavi以外を考えたほうがいいのか? Mojaviを習得するか?
Mojavi覚えるの大変なんですが、何日くらいで慣れますかね?
0942nobodyさん2005/12/21(水) 18:11:03ID:???
>>940
なぜmojavi以外?
0943nobodyさん2005/12/21(水) 19:57:44ID:???
M3かagaviをすすめる。
オブジェクトを理解するのにちょうど良い。
0944nobodyさん2005/12/21(水) 21:52:51ID:???
M3とは?
0945nobodyさん2005/12/21(水) 22:03:21ID:???
mojavi3
0946nobodyさん2005/12/21(水) 22:51:55ID:???
あれ?ひょっとしてagavi0.10.0が出た話題出てない?
0947nobodyさん2005/12/21(水) 23:05:54ID:???
そういえば出てないねぇ。ってかagavi自体の話もあんまり無いような・・・
0948nobodyさん2005/12/22(木) 00:27:18ID:???
おお!agavi0.10.0がほんとにでとる!
アップデートしてそのまま使えるんか
0949nobodyさん2005/12/22(木) 12:52:20ID:???
agavi Mojavi3 Ethmi Makiko

結局Mojavi2で落ち着きました。 その後はまた考えます。
0950nobodyさん2005/12/22(木) 18:28:57ID:???
php4つかってんの?
後々のこと考えるとphp5とm3の方がいい。
0951nobodyさん2005/12/23(金) 02:00:04ID:???
フレームワークを使うならPHP5+なんかだろうね。
php4使うぐらいならフレームワーク使わないでいいと思う。
どうせ将来性ないし。
0952nobodyさん2005/12/23(金) 04:49:25ID:???
まだまだPHP4が使われつづけると思う。
今のようなPHPの使われ方なら、PHP4で問題ない。
レス数が950を超えています。1000を超えると書き込みができなくなります。