[PHP]フレームワークについて語るスレ2[総合]
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/29(木) 18:03:44ID:PQZNoJbD■Phrame
http://phrame.sourceforge.net/
■Mojavi Project
http://www.mojavi.org/
■Agavi
http://agavi.org/
■[ 日本発 ] Maple Project
http://kunit.jp/maple/
■[ 日本発 ] Ethna -PHPウェブアプリケーションフレームワーク-
http://ethna.jp/ethna-tutorial-startup-practice1.html
■[ 日本発 ] guesswork
http://www.guesswork.jp/
■Biscuit
http://bennolan.com/biscuit/
■PHP on TRAX
http://phpontrax.com/
■Web Application Component Toolkit (WACT)
http://www.phpwact.org/
■symfony
http://www.symfony-project.com/
■XOAD
http://wiki.xoad.org/index.php?title=Wiki_Home
■[ 日本発 ] pokox
http://www.glamenv-septzen.net/pukiwiki/index.php?pokox
■[ 日本発 ] 速構Web Framework
http://www.pm9.com/newpm9/itbiz/php/framework/
■CakePHP
http://cakephp.org/
0041nobodyさん
2006/01/01(日) 23:54:37ID:???0042nobodyさん
2006/01/02(月) 03:04:07ID:???0043nobodyさん
2006/01/02(月) 03:33:36ID:I7zXcpPdどのへんが画期的だったのか良ければ教えて
0044nobodyさん
2006/01/02(月) 09:40:50ID:???誰も使わないと思うよ。
0045nobodyさん
2006/01/02(月) 12:13:33ID:???0046nobodyさん
2006/01/03(火) 22:51:09ID:???検索しても出てこないのだが
0047nobodyさん
2006/01/03(火) 23:52:45ID:???http://www.zend.com/collaboration
ZPFのまとめページみたいのも用意されてるけど、まだこの前のwebcastの要約程度の内容しかないよ。
0048nobodyさん
2006/01/04(水) 00:17:17ID:???Zend Frameworkの開発に関わっているのが以下の企業だよね?
IBM, Oracle, MySQL, Intel, Actuate, ADP, FileMaker, Schematic,
StepUp Commerce, OmniTI, 100days.de, SugarCRM, bebe.com,
and Marco Tabini, publisher of PHP Architect Magazine
日本の企業が全く入っていないな…
中小企業でもはいっとけばいいのに
0049nobodyさん
2006/01/04(水) 05:46:25ID:???0050nobodyさん
2006/01/04(水) 12:13:25ID:ST4/dfIz今の所なにもしてません。
0052nobodyさん
2006/01/05(木) 00:07:25ID:???0053nobodyさん
2006/01/05(木) 10:47:48ID:???0054nobodyさん
2006/01/05(木) 10:56:52ID:???0055nobodyさん
2006/01/05(木) 11:34:05ID:???0056nobodyさん
2006/01/05(木) 18:17:59ID:???0057nobodyさん
2006/01/05(木) 19:11:17ID:???使いやすいよ。
0058nobodyさん
2006/01/05(木) 22:16:48ID:???日本人向きだとmaple ethnaあたりがよさそうかねぇ。
0059nobodyさん
2006/01/05(木) 22:59:09ID:???0060nobodyさん
2006/01/06(金) 01:14:32ID:???たしかにSymfonyはMojavi派生のようだが、Mojavi/Agaviとはずいぶん方向性が違うような
そんな自分の愛用は未だguesswork classic
0061nobodyさん
2006/01/06(金) 01:58:03ID:???0062nobodyさん
2006/01/06(金) 08:35:45ID:???かなりぴったりハマるしこれでいいやって思ってたけど、action filterでregistってのはどういうことなの?
0063nobodyさん
2006/01/06(金) 12:00:54ID:???0064nobodyさん
2006/01/06(金) 12:12:45ID:???0065nobodyさん
2006/01/06(金) 12:18:13ID:???0066nobodyさん
2006/01/06(金) 12:37:28ID:???父「ネタ詳細キボンヌ!」
母「mojaviですが、何か?」
兄「キタ━━━━━━(゚∀゚)━━━━━━!!!」
妹「キタ━━━━━━(゚∀゚)━━━━━━!!!」
姉「>兄>妹 ケコーン」
兄「>妹(;´Д`)ハァハァ…」
妹「キモイヨ━!!」
姉「バ�iタ逝ってよし」
母「オマエモナー」
父「--------終了-------」
兄「--------再開-------」
妹「再開すな!ヴォケが!!それより情報うpキボン」
母「URLうp」
兄「guesswork age」
母「↑誤爆スマソ」
兄「guesswork age」
父「ほらよ>プロジェクトメンバー」
妹「神降臨!!」
兄「guesswork age」
妹「肉ねーよ!!」
兄「guesswork age」
父「肉ねーよ!!」
兄「guesswork age」
母「ジサクジエンカコワルイ」
兄「guesswork age」
姉「guesswork age厨uzeeeeeeeeeeee!!」
母「ageっていれればあがると思ってるヤシはドキュソ」
爺「mojaviは日本語サイトがないと(mojaviを美味しく食べるのは)難しい」
セールス「イタイ リーダーがいるのはこのプロジェクトですか?」
兄「guesswork age」
妹「兄必死だな(w」
0067nobodyさん
2006/01/06(金) 13:03:52ID:???0068nobodyさん
2006/01/06(金) 13:19:49ID:???今後もこの流れだと思う。
0069nobodyさん
2006/01/06(金) 16:34:54ID:???Mojavi JapanにあるMSQDなんかをダウンロードするとわかる
filterでsmartyを使ってる
他のサンプルでもそうしているやつを見た
どういうポリシーの違いだろうか
007062
2006/01/07(土) 09:49:50ID:???あーM2の話だったのか。
M2だとSmartyRendererが用意されてるから、その初期化をfilterでやるのが普通なのかも(俺はM2経験ない)。
M3の場合だとSmartyViewっていうのが入ってるけど、まだ中身が何も実装されてない状態だったから自分で書いた。
基本的にM2のSmartyRendererと一緒で、$smarty->assignとかのラッパを書いたってだけの話だけど。
Agaviでは実装済みだね。
要は>>61の質問は結局はM2かM3かって話になると思う。
0071nobodyさん
2006/01/08(日) 01:12:59ID:???forms/ 以下にまとめているものをよくありますがactionsでかいちゃう人もいるようです。
僕はmodelの下で executeForm()で処理させようかと思っていますがどうでしょうか?
0072nobodyさん
2006/01/08(日) 01:29:16ID:???mapleってMLも2chのスレも全然活気無いけどはやってるの?
質問の必要が無いほど完成されてるのかな?
最近Ethna始めたけどこれも結構いい感じだね。
0073nobodyさん
2006/01/08(日) 02:44:47ID:MOiqJ8HA>MLも2chのスレも全然活気無い
はやってるはずがない。
0074nobodyさん
2006/01/08(日) 10:42:21ID:???Zend PHP Frameworkの一番の宿敵になりそうって言われてるけど。
http://ez.no/
mod_rewrite使ってるのあたりが個人的に微妙。
eZ publishはドキュメントとかやたら張り切って書いてあるわりにサンプルコードが少なくて、結局使い方がイマイチわからなかったよ・・・。
機能が豊富そうっていう印象はあったけど。
eZ componentsは要はクラスライブラリ群?
0075nobodyさん
2006/01/08(日) 11:54:37ID:???モノは良いと思うんだけど……
とにかくドキュメントやサンプルが不足すぎて手を出しにくいこと、
作者がアレコレ色々なものに手を出していて完成品が全然出てこないこと、
利用者コミュニティがブログ周辺で完結してしまっていて参加しにくいこと、
などなどから、利用者はさほど多くない雰囲気。
気に入らないコードを自分でばんばん書き換えちゃえるくらいだと
けっこう良いフレームワークだと思う。
0076nobodyさん
2006/01/08(日) 13:34:08ID:???ドキュメントないからソース読めないと困るかもしれないけど。
0077nobodyさん
2006/01/08(日) 13:45:51ID:???良いものでも、「Hello world を出力してみよう」ってくらいで・・・
0078nobodyさん
2006/01/08(日) 13:51:56ID:???ソースを読むことが必須な状態からは脱却してほしい。
いろんなレベルの人と協業するのに今の状態では辛すぎる。
0079nobodyさん
2006/01/08(日) 14:17:24ID:???0081nobodyさん
2006/01/08(日) 15:11:12ID:???Extreme Simplicityとか謳ってるくらいだし。
.NET、Struts、RoRのパクリがほとんどで真新しいものはないけど、逆にPHPでそれらが全て利用可能になるってのは大きいんじゃないかな。
PHPらしく多くをベタ書きで書きつつ自然にフレームワークの恩恵に与れるっていう形になるんじゃないかと。
今あるフレームワークはどれも癖のあるクラス設計を強いられるから、PHPらしくないんだよね。
0082nobodyさん
2006/01/08(日) 15:14:17ID:???エクスパンションなのかなあ?
0083nobodyさん
2006/01/08(日) 15:29:57ID:???Zendのフレームワークも、べた書きなんてありえないバリバリのOOデザイン
だとおもうよ。なにせあのPHP5を作ったZendだからね...
>>82
PHPの拡張ってこと?
そうすっと今度は微妙な振る舞いをCソースがよめないせいで確認できなくて
困る人が多発する気が...
0084nobodyさん
2006/01/08(日) 16:07:45ID:???0085nobodyさん
2006/01/08(日) 16:12:08ID:???エクスパンション == extension ?
Webcastでは全てPHPでオープンソースで書くって言ってた希ガス
>>83
そうかなぁ。
フレームワークのコード自体はOOで書いてあっても、我々ユーザにはOOの設計を強要しないって感じになってもらえるとありがたいんだけど(つまりOOは「使う」だけであって「作る」必要がないって感じ)。
フレームワークのコンポーネントを最小限の部分だけ継承して2〜3行ちょろっと書いとけばあとは勝手に動いてくれる、みたいな。
>>84
Pearはおろか既存のものはSmartyなども含めて一切使わない方針で、完全に独自の設計になるらしい。
テンプレートも独自のものみたいだし。
そこに批判もけっこうあるみたいだけど。
0086nobodyさん
2006/01/08(日) 19:15:49ID:???0087nobodyさん
2006/01/08(日) 19:54:48ID:???0088nobodyさん
2006/01/09(月) 08:33:20ID:???とりあえずmaple見てみたんだけど、なんかディレクトリ深すぎない?
設定とかで変えれるのかも知れないが、
あっち行ったりこっち行ったり面倒なような。
どんな環境でどのくらいのファイル数になるのを想定してるのかな…。
008988
2006/01/09(月) 08:38:56ID:???単にああいう構成になってる理由が疑問って話。
他のは違うのかもしれんが…。
0091nobodyさん
2006/01/09(月) 13:05:13ID:???UPDATE 2005-01-08: 0.10.1b has been released!
0093nobodyさん
2006/01/09(月) 17:20:33ID:???オレオレフレームワークのたたき台を目指してるみたいだね。
標準になるべくZendフレームワークが出てきたので
戦略的に正しいと思う。
009486
2006/01/09(月) 18:22:40ID:???いや、88ともダブるんだけどさ、なんかみんな大げさすぎない?
そういうのが必要な場合があるってのは分かるんだけどさ、、
ちょっとしたもん書く時にさ、ベタで書くより
なんちゃってMVCにしとけば、楽じゃん?みたいな感じなのないかな。
逆流してる?
0095nobodyさん
2006/01/09(月) 18:39:27ID:???そのフレームワークが対象とするもののうち一番大掛かりなものになるのは当然と思われ。
0096nobodyさん
2006/01/09(月) 22:12:40ID:???0098nobodyさん
2006/01/10(火) 00:10:58ID:???0099nobodyさん
2006/01/10(火) 09:07:54ID:???mojaviを改造でもしてんの?そうでなかったら編集する必要すらないと思うけど。
一応LGPLだしランセンス表示を含めどんな改変をしても構わないけど、改変後のプログラムはGPLかLGPLのもとでオープンソースとして再頒布しなきゃいけないんじゃないかな。
間違ってたら訂正よろ。
0100nobodyさん
2006/01/10(火) 10:23:12ID:???ここは堂々と著作権者に自分の名前を追記して配布汁。
頒布っていうか、べつに広く配布する必要は無いし、ソースを売って金にしてもいいけど、
そのソースコードをもらった人にLGPLによるソース再配布の権利を認めないといけない。
だからLGPLコードを暗号化して顧客に納品しちゃダメ
...て感じだと思う。
0101nobodyさん
2006/01/10(火) 11:07:16ID:???なるほど。フォローサンクス。
ちょっと気になったけど、LGPLはソース保持者が配布することができる「権利」ではなくて、(要望があれば必ず)配布しなければならないことを使用条件とする(というか強要する)ものじゃないかな。
だから売って金にするってのはまずいのでは?
0103nobodyさん
2006/01/10(火) 12:05:36ID:???広く一般に公開する必要は必ずしもあるわけじゃない。どんな高い金で売ってもOK
ただし、ソースをもらった方はLGPLに基づきいくらでも再配布出来る。そしてそれを縛ることはできない。
0104nobodyさん
2006/01/10(火) 12:14:40ID:???"work that uses the library(ライブラリを利用した著作物)"は違うから、
mojavi部分と独自のビジネスロジック部分とを分離して独自部分を配布する場合は
LGPLの範疇にならないんじゃないかなぁ。
まぁ、>>98のライセンス表示削除は確実にアウトですが。。。
0105nobodyさん
2006/01/10(火) 12:49:50ID:???飽くまでmojaviを改変した場合の話。
ライセンス表示は削除したとしても、新たにLGPLの全文か全文へのポインタ相当のものを示せばいいんじゃないの?
著作者の表示に関しては、元の著作者(mojaviの場合Sean Kerr)を載せる必要ってあったっけ?
PHP Licenseだとそういうのは明示的に書かなきゃダメってなってるけどLGPLはそういう項目ある?
0106nobodyさん
2006/01/10(火) 14:54:44ID:???ライセンスはどうか知らないけど、ファイル中の著作権表記の削除はGPL以前に著作権的によくないと思う。
あと、一緒に配布するかぎりはLGPLでもGPL的縛りを逃れられないような...
このへんの成果物の扱いはGPL/LGPLで記憶も理解も混乱しているのでよくわからん。
010798
2006/01/10(火) 16:03:17ID:???自分で作ったのです。
それの著作権は自分にあるのでサンプルにあるような著作権表示は削除しても
いいと思っていたのですがどうですか?
または、Mojaviからextendsしたファイルとかはどうなるんでしょうかね。
要らないと思っていたんですが、違うのかな。
0108105
2006/01/10(火) 16:14:49ID:???たしかに著作権の表記を削除ってのは仁義的にもよろしくないな。
なんかpublic domainとか著作権放棄とかの話がごっちゃになってた。
GPLかLGPLかはwork that uses the libraryにも同じ制限が課されるかってのがあると思った。
LGPLの場合はmojaviを使用するだけなら、その使用したコードにはLGPLの制限は一切かからないんじゃないかな。
以下はLGPLのTERMS AND CONDITIONS 〜 から一部抜粋。
> 5. A program that contains no derivative of any portion of the Library, but is
> designed to work with the Library by being compiled or linked with it, is
> called a "work that uses the Library". Such a work, in isolation, is not a
> derivative work of the Library, and therefore falls outside the scope of this
> License.
コンパイルやリンクってPHPには適用しづらいけど、include/require等によって使うことと考えて差し支えないと思う。
0109105
2006/01/10(火) 16:25:47ID:???mojavi使って作ったソースって、GPL/LGPLを明記する義務があって且つ再配布されても文句言えないってこと?
なんかわからなくなってきた。
0110nobodyさん
2006/01/10(火) 16:46:51ID:???0111nobodyさん
2006/01/10(火) 16:49:43ID:???0112nobodyさん
2006/01/10(火) 17:23:22ID:???自分であらたに開発すればいいので、それを使うスクリプトは独立しているとみなしていいはず。
だから、自分の製品の一部に組み込んでmojaviを配布する場合はLGPL縛りで、
独立したものとして配布する場合のライセンスは自由なんじゃないかな。
スクリプトの場合、全部のファイルが独立しているという見方も出来るから、
このへんは難しいとこだとおもうけど。
0113109
2006/01/10(火) 17:49:43ID:???> Such a work, in isolation, is not a derivative work
ってのはmojaviを使った著作物「単体」では派生物と見なさない(つまり著作物+mojaviをひっくるめて「派生物と見なさない」わけではないってことをin isolationで単に明示してる)って意味っぽい。
つまりmojaviを使用することを前提にしてつくったActionとかViewとかModelとかはLGPLの影響は一切ないってことかな。
>>107
というわけで自分で作ったActionにはLGPLやSean Kerrは必要ないと思う。
0114nobodyさん
2006/01/10(火) 23:55:03ID:???0115nobodyさん
2006/01/11(水) 00:04:17ID:???Model=作業員
0116nobodyさん
2006/01/11(水) 02:52:36ID:0BNMEQyQどこか変更する必要がある時、
「どのファイルをいじったらいいのか?」が
パッとイメージしにくくない?
とりあえずAction開いて、
そこから読んでるけど。
何かいい方法ないかなぁ…。
0117nobodyさん
2006/01/11(水) 03:05:05ID:???0118nobodyさん
2006/01/11(水) 07:49:18ID:SLuQbgaX保守性を考えるならまともな仕様書/設計書を残しておけ。
0122nobodyさん
2006/01/11(水) 22:58:55ID:0mCKrO3oaction の initialize で false を返すとexception投げて来るんだけど、
どこでどうやって捕捉すればいいのかわかんね。
0123nobodyさん
2006/01/11(水) 23:01:22ID:SURfFh1Uワロタ
0124nobodyさん
2006/01/12(木) 09:51:00ID:9A+OuFozttp://agavi.org/
ParseException
Message: Configuration file "/var/www/sites/agavi.org/webapp/config/autoload.ini"
specifies class "MailAppender" with nonexistent or unreadable file
"/var/www/agavi/logging/MailAppender.class.php"
Code: N/A
Class: AutoloadConfigHandler
File: /var/www/agavi/config/AutoloadConfigHandler.class.php
Line: 7
0126nobodyさん
2006/01/12(木) 15:06:57ID:???GlobalFilterでregistして、executeのあとに処理を書けばいいんでしょうか?
googleで3時間程検索しましたが全然出てきませんでした。
よろしくお願いします。
0127nobodyさん
2006/01/12(木) 16:02:51ID:???こんな感じになるんじゃないかな。
<filter>.class.php
class <filter名> extends Filter{
function execute(&$filterChain,&$controller,&$request,&$user){
static $loaded;
// ActionChainやAction::forwardを使った時にフィルタが複数回適用されるのを防ぐ
if($loaded == NULL){
$loaded = TRUE;
// 前処理フィルタ
...
// filter chain の次のフィルタを実行
// pre-filterとpost-filterの分岐点
$filterChain->execute($controller,$request,$user);
// 後処理フィルタ
...
}else{
$filterChain->execute($controller,$request,$user);
}
}
}
0128nobodyさん
2006/01/12(木) 16:47:35ID:9A+OuFozそんな感じでOKだとワシも思う。
それより、>>126
まともにグーグル先生すら使えんもんが、何を作ると言うのだ。と、小一時間。
0129nobodyさん
2006/01/12(木) 17:35:39ID:???ありがとうございます。
Googleでも同じようなことが書いてあったのですがそれでもよくわからないの
です。
> $filterChain->execute($controller,$request,$user);
> // 後処理フィルタ
この後に処理を書いたものが「Viewの後に」実行されるという認識であってますか?
何個もFilterを使っている場合、どのフィルタの中で処理を書けばいいかが
わからないです。
最後に処理されるフィルタのところで書くような気がするのですが、そのような
記述をしているところがありませんでした。
0130nobodyさん
2006/01/12(木) 17:48:31ID:???前スレあたりに書いたのにちょっと手を加えたものを再掲すると、
個々のフィルタには前処理・後処理という2段階の実行順序があって、
登録した順に前処理が全て実行されてから、今度は逆順に後処理が実行される。
Actionの実行部分もフィルタの一種として扱われていて(ExecutionFilter)、
全てのフィルタの登録後に登録されている。
Viewの実行(View::execute())はExecutionFilterの中で実行されている。
結果、登録順に1,2...の番号を付けた時に、
1. GlobalFilterのpre-filter1,pre-filter2...を実行
2. moduleFilterのpre-filter1,pre-filter2...を実行
3. ExecutionFilterを実行(認証や特権の判定、action処理)
4. Viewの実行
5. moduleFilterの...post-filter2,post-filter1を実行
6. GlobalFilterの...post-filter2,post-filter1を実行
という順番で処理されることになる。
0131nobodyさん
2006/01/12(木) 20:45:08ID:???詳しい説明ありがとうございます。
動作順序がよくわかりました
なんでそういう複雑な感じになってるかはよくわかりませんがw
検索用用語
プリフィルタ ポストフィルタ prefilter postfilter mojavi2
0132nobodyさん
2006/01/12(木) 21:57:58ID:9A+OuFoz>検索用用語
>プリフィルタ ポストフィルタ prefilter postfilter mojavi2
mojavi filter だけである程度答えでてくるよ。
ttp://www.google.co.jp/search?hl=ja&c2coff=1&q=mojavi+filter&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0133nobodyさん
2006/01/14(土) 14:30:31ID:???0134nobodyさん
2006/01/14(土) 19:24:49ID:???何かと思ったらMojavi2の話か。
libとoptってMojaviのコンポーネントのソースが入ってるとこじゃないの?
自分で作ったものは基本的にwebapp/libだと思うけど。
0135nobodyさん
2006/01/15(日) 02:12:19ID:???>Viewの実行(View::execute())はExecutionFilterの中で実行されている。
じゃあ、ExecutionFilter以降のPostFilterは何をしてるの?
0136nobodyさん
2006/01/15(日) 02:35:42ID:???それは君が決めること。
ExecutionTimeFilter.class.php(配布物に含まれる実行時間を計測するやつ)の場合、
ob_start();
... // GlobalFilterに使った場合、一番最初に呼び出される。タイマー初期化
$filterChain->execute($controller, $request, $user);
... // Glo(ry 。実行時間を計算。
ob_clean();
echo "〜"; // ob_*でバッファに取り込んだものと、計算した実行時間を合わせて出力
ってな感じで使っている。
0137nobodyさん
2006/01/15(日) 03:11:54ID:/IaCdmhr仕込む場所と
使う場所が離れてるから、
知らないうちに使われない変数やオブジェクトが
増えて行ったりしない?
あといつの間にか使わなくなった関数とかも増えがちだ。
0138nobodyさん
2006/01/15(日) 04:26:13ID:???0139nobodyさん
2006/01/15(日) 04:27:39ID:???■ このスレッドは過去ログ倉庫に格納されています