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

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

■ このスレッドは過去ログ倉庫に格納されています
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参照汁
0369nobodyさん2005/10/07(金) 23:26:18ID:???
>>368
フレームワークとオブジェクト指向とは関連性があるわけじゃないとも思う

って関連ありまくりじゃん。
OOのエッセンスが分かちがたい程たっぷり入ってると思うよ。
OOを使わずともライブラリ集は作れるだろうが、
フレームワークは作りにくいだろう。
0370nobodyさん2005/10/08(土) 00:07:12ID:???
>>368
今時「PHPでOOPすると性能が落ちる」とか言ってるのは時代錯誤もいいとこ。

03713672005/10/08(土) 01:39:24ID:???
ViewHelperで解決した(゜д゜)
0372nobodyさん2005/10/08(土) 01:55:47ID:???
デストラクタもないのにオブジェクト指向ってありえるんだろうか?
0373nobodyさん2005/10/08(土) 02:24:56ID:???
なんだこの掃き溜めは
0374nobodyさん2005/10/08(土) 02:26:59ID:???
デストラクタがないとオブジェクト指向なプログラミングができない、
という思考回路が判らない。言語仕様に捉われすぎてる悪寒。

0375nobodyさん2005/10/08(土) 02:28:24ID:???
ありだと思うな。
Cでもオブジェクト指向でまとめられたライブラリやツールキットは山ほどあるし。

オブジェクト指向プログラミング自体はべつに大抵の言語で可能だとおもう。
たしかにPHPはオブジェクト指向言語として設計されたわけじゃないが、
これとPHPでオブジェクト指向プログラミングをする事は矛盾しないだろう。
0376nobodyさん2005/10/08(土) 02:45:50ID:???
てか5にはデストラクタもあるよ。
でもウェブアプリでデストラクタを使う機会はあんまりないだろ。
0377nobodyさん2005/10/08(土) 05:08:37ID:???
>>372
あるよ
0378nobodyさん2005/10/08(土) 05:09:53ID:???
>>370
時代錯誤というより、単に知識が乏しいだけだと思う。
0379nobodyさん2005/10/08(土) 05:32:22ID:???
このスレでPHPによるオブジェクト指向プログラミングを否定している
連中は、オブジェクト指向じゃなくてC++ or Java指向になってるんじゃないか?
rubyもデストラクタは持ってないしな(GCがあるからだけど)。
0380nobodyさん2005/10/08(土) 06:07:15ID:???
確かにウェブアプリじゃデストラクタなくても、なんとかなる。どうせ1回こっきりでプロセスごと終了するんだから。
そうすると、こったオブジェクト作ってもしょうがないじゃん。シングルトンとか、ウェブアプリでどれくらい意味あるのか。
0381nobodyさん2005/10/08(土) 07:48:43ID:???
>>380
SingletonはDB接続に関するクラスで使ってるな俺は。
スゲー便利だしすっきりするなぁって思ったね。
要は使い方によるかなと。
0382nobodyさん2005/10/08(土) 07:56:41ID:???
ほっといてやれよ。
0383nobodyさん2005/10/08(土) 08:43:12ID:???
>>381
1回のアクセスでオブジェクトが全部ご破算になるWebアプリでシングルトンの意味はある?

$_db_ = new MyDB();
function getDB() {
global $_db_;
return $_db_;
}
:
:
//実際使う場所
$db = getDB();

これでいいんじゃない?
0384nobodyさん2005/10/08(土) 09:07:34ID:???
>>383
グローバルオブジェクトを利用したSingletonの実装の一形態だろそれ
いいんじゃない? と言われりゃそうですねと言うしかないな
Java厨って実装から何から全部Javaと一緒じゃないと否定したがるのがうざいな
0385nobodyさん2005/10/08(土) 09:16:29ID:???
>>383
意味が無いと思ったら使わなければいいだけの話じゃん
0386nobodyさん2005/10/08(土) 09:45:38ID:???
PHP5にはデストラクタあるだろ。
0387nobodyさん2005/10/08(土) 10:47:02ID:???
あるって何回も書かれてるってw
0388nobodyさん2005/10/08(土) 10:56:20ID:???
383のやり方だとグローバル空間が汚れるじゃん。
_を使うのはやっぱり苦肉の策だし、クラシックな作法だろう。
0389nobodyさん2005/10/08(土) 11:00:17ID:???
おれはsingltonならstaticで書きます。
0390nobodyさん2005/10/08(土) 14:36:34ID:???
DB_DataObjectなんかは>>383みたいな感じだね

Java厨というよりJavaを意識しすぎたPHPユーザー、みたいな印象を受ける
Javaを意識するあまり、「PHPじゃないと出来ないことをしないといけない」みたいな傾向ってあったと思う
最近はその対象がRubyに移ってきたみたいだけど
0391nobodyさん2005/10/08(土) 16:18:59ID:???
俺はDB接続部分をSingletonにして、各テーブルに発行するSQL文などを集めたクラス
がgetInstanceするって感じに使ってるけど、おかしいのかな?
各テーブルというと語弊があるかな。ある程度のテーブルを纏めたクラス。
JOINする場合(というかJOINしない場合が珍しいけど)は基となるテーブルのクラスに入れる。
$a = Atables();
$b = Btables();
print_r($a->getSelect());
print_r($b->getSelect());
って感じで。
全然スマートじゃないなぁとは思うけど、
DB周りはどうやったらスマートになるのか
全然わからん。解説サイトではロジック部(?)とSQL発行部
が混じっているが、個人的にそれはすごい抵抗があるし。
誰かご教授下さい・・・。

あ、今月のPHPプログラマーズマガジン無料だって!
JPSPAN扱ってるね。あれ@ITかなんかで廣川さんが
解説してて、それ以来使ってるけど、あれ使ってる人って
聞いたことないから不安になってた。
スレ違い&長文すまん。
0392nobodyさん2005/10/08(土) 16:42:29ID:???
OOにデストラクタを重視する奴は意味が分からないな
前時代の遺物的存在じゃん
後片付けは言語側で勝手にやってくれる方が今風だし、キレイだ
0393nobodyさん2005/10/08(土) 17:14:13ID:???
C++でOOP入りした人は感覚的に染み付いていて、抵抗あるんじゃないかな。
オレも昔はそうだった。ruby, PHP, C#で、すっかり骨抜き?にされたけど。
なんつーか最初の頃は堕落した感じがしたもんだ。
(良い悪いとかじゃんくて、楽チン→堕落、みたいな妙な感覚)
0394nobodyさん2005/10/08(土) 17:52:40ID:???
お、お前ら・・・お前ら何言ってんだ??
お前らの会話の内容がサッパリ分からんぞ、DQNな漏れは。

もうね、難しいとか難しくないとかいうレベルじゃない。
何の予備知識もないスワヒリ語を聞いてる感じ。
0395nobodyさん2005/10/08(土) 18:06:12ID:???
>>394
それはDQNだからじゃなくて単にオブジェクト指向開発用語を知らないだけだと思う
つまりそれを勉強すればこの会話の意味はすっかり解るだろうし
勉強して損ないものなのでぜひ習得してみるべし
0396nobodyさん2005/10/08(土) 18:38:45ID:???
>>395
勉強できる Web をうpきぼん。
0397nobodyさん2005/10/08(土) 19:05:01ID:???
>>392
勝手に行うのはメモリ開放だけだろ。
さらにPHPはfinally構文がない。
0398nobodyさん2005/10/08(土) 21:14:56ID:???
finally構文ってオーバーライドを禁止するfinalのことか?
finalならPHP5にあるが。
0399nobodyさん2005/10/08(土) 21:17:47ID:???
>>398
例外処理のfinallyでしょ。
Javaなら以下のように書けるけど、PHPではfinallyが書けないので
リソースの破棄を行いたい場合などに二度手間になることがある。

try {
 例外の起こりそうな処理
} catch (Exception e) {
 例外発生時の処理
} finally {
 例外が起きても起きなくても実行したい処理
}
04003832005/10/08(土) 22:26:28ID:???
>>390
> Java厨というよりJavaを意識しすぎたPHPユーザー、みたいな印象を受ける

JavaはHelloWorldくらいしか書いたことないな。
俺のよくいじる言語はSmalltalk, Ruby, PHP, JavaScriptだよ。
あとSchemeも好きだな。

わざわざclass定義してstatic変数用意して2つもメソッド書いて、
結局>>383のたった6行でできることをかえって複雑にするのはアホらしい
ってことだ。
0401nobodyさん2005/10/08(土) 22:41:27ID:???
まあ、「Singletonって書きたいだけちゃうんか」というコードが多い
という気はする。
0402nobodyさん2005/10/08(土) 22:43:38ID:???
>>309
>>他にもデメリットとして、smartyのようなテンプレートエンジンを使うと実行速度がぐっと下がるし、

これはウソでしょ。
0403nobodyさん2005/10/08(土) 22:45:32ID:???
Singletonパターンってイディオムみたいな感じだよね。
確かに無理して本に乗ってる書き方通りにしなくても良いとは思う。
Javaみたいにマルチスレッド環境になることもないし。
0404nobodyさん2005/10/08(土) 23:03:48ID:???
383の書き方だと、呼び出し側のコードを見ただけでは
それがSingletonなのかどうかは判別できないじゃん。
確かに伝統的な書き方は記述が面倒だけど、
一人の思考ではなかなか太刀打ちできない強度があるもんだよ。
たくさんの頭脳を経た思考の蓄積や時間による淘汰は馬鹿に出来ない。
0405nobodyさん2005/10/09(日) 00:09:28ID:???
>>400
わざわざ冗長に見える記述をするのはそれなりの理由があるからで、
それが感じられないならオブジェクト指向自体が冗長だろう
ていうかSmalltalkとかRubyのほうがよりオブジェクト指向が強いと思うのだが
0406nobodyさん2005/10/09(日) 00:13:58ID:???
冗長って何?
0407nobodyさん2005/10/09(日) 00:26:12ID:???
>>406
君は初心者向けの本とかをたくさん読んできなさい
フレームワークスレはまだ早い
0408nobodyさん2005/10/09(日) 01:17:58ID:???
>>400
class aClass {
function &singlton(){
static $me;
if(!is_object($me)) $me =& new aClass;
return $me;
}
}

$instance =& aClass::singlton();

これがそんなに複雑かな?
わざわざgetDB()とか$_db_とかというのをグローバルな名前空間に
つくる方が複雑化を招く気がする。

実際に作る時はこのままではなんとなく気持ち悪くてスタティックな
コールであることを保証したりしちゃうから、そういうときはたしかにphp4で
ちょっと損した気分になるね。
0409nobodyさん2005/10/09(日) 03:49:12ID:???
PHPでのシングルトンには、「リソースを効率よく使うため」ではなくて
「意図を表すコーディング」としての効果を期待しろ、ということで。
0410nobodyさん2005/10/09(日) 07:15:34ID:???
>>400
なんか実用的なプログラム書いた事無くて、頭の中で屁理屈こねくり回してるって印象を受けるな〜
0411nobodyさん2005/10/09(日) 07:19:12ID:???
PHPに限らずアクセスレベルなんかも、
実際に使っちゃうリスクへのヘッジというよりも
意図を埋め込む意味合いの方が強いよね。
0412nobodyさん2005/10/09(日) 11:23:06ID:???
意図なんてコメントとして書いておけばよい。
0413nobodyさん2005/10/09(日) 12:57:50ID:???
>400
そもそもシングルトンで重要なのは、コンストラクタを private とかにして、
オブジェクトの生成が出来る箇所を限定することの方だろ。
0414nobodyさん2005/10/09(日) 14:48:09ID:???
↓これはシングルトン?

/**
* シングルトンとして使ってください(オブジェクトは1度だけしか生成しないでください)。
*/
class Example
{
 :
}
0415nobodyさん2005/10/09(日) 14:58:42ID:???
プログラムは改変されていくものだから、
コメントがいつの間にか嘘の説明にならないよう、
むしろ少なめ推奨がモダンな作法。
独善的持論をぶってる奴はもう少し勉強しれ。
0416nobodyさん2005/10/09(日) 15:04:08ID:???
DB鯖がセッション用と顧客データ用と別だったりとかさー
DBオブジェクト複数接続先で使いたい時とかって割と無い?
0417nobodyさん2005/10/09(日) 15:06:04ID:???
↑解かりづらいか、「DBオブジェクトを接続先別に複数生成したい時」と言い換え
0418nobodyさん2005/10/09(日) 15:18:56ID:???
俺はSingletonなDBオブジェクトにコネクションコンテナを持たせてる
0419nobodyさん2005/10/09(日) 16:51:24ID:???
>>415もまた独善的持論なわけだが。
0420nobodyさん2005/10/09(日) 16:53:47ID:???
ハイハイそうだね
0421nobodyさん2005/10/09(日) 18:16:42ID:???
あー、415のせいで荒れ始めただろ……責任とって下さい、415
0422nobodyさん2005/10/09(日) 18:49:57ID:???
何で糞ガキがこんなスレに迷い込んできたんだ…。
0423nobodyさん2005/10/09(日) 18:52:26ID:j3jR0Qvz
ままー おなかすいたー
0424nobodyさん2005/10/09(日) 18:56:57ID:???
>>415
>プログラムは改変されていくものだから、
まあ、その通り。
>コメントがいつの間にか嘘の説明にならないよう、
確かに気をつけないと。
>むしろ少なめ推奨がモダンな作法。
いきなり妄想が入ってきました。
>独善的持論をぶってる奴はもう少し勉強しれ。
独善的持論乙
0425nobodyさん2005/10/09(日) 19:30:17ID:???
>>424
だから勉強してから書けって言ってるだろ?
お前の浅薄な意見なんて何の参考にもならねーんだよ。
0426nobodyさん2005/10/09(日) 19:38:21ID:QrQMlw6M
ソースのコメントを少なめ推奨している、モダンな作法とやらのポインタくれ。
0427nobodyさん2005/10/09(日) 19:38:25ID:???
お子ちゃまたちは
XP(エクストリーム・プログラミング)についてなど
調べてみようね。
最近よく出版されてる軽めのプログラミング読本も
結構参考になるよ。
0428nobodyさん2005/10/09(日) 19:39:39ID:???
底が知れたなw
一瞬俺の知らない技術体系が発生してるのかとおもた
0429nobodyさん2005/10/09(日) 19:45:20ID:???
XPってコメント少なめ推奨してるのか?
0430nobodyさん2005/10/09(日) 19:50:40ID:???
コメントなきゃ判らんコードはリファクタリング候補ってこと
量が少ないほうがいいとかモダンとか言うのはオカルトつーか誤認
0431nobodyさん2005/10/09(日) 19:56:38ID:???
>>430
同じことを簡単に言ってるだけだろ。
まあケチつけたいだけの奴は
Singletonをコメントで実現しとけばいいんじゃねーの?
0432nobodyさん2005/10/09(日) 20:03:13ID:???
全く違うよ。XPのレトリックが読めてない典型ワナビー君じゃん。
コードとの差異が出ないようにコメントを最小化する、なんてのは
アジャイルでもなんでもないし、リファクタリングしないことが前提の
固定的な開発思想でしょ。
0433nobodyさん2005/10/09(日) 20:07:19ID:???
ここはフレームワークについて語るスレですよ。OOPの話は↓でしない?
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/
0434nobodyさん2005/10/09(日) 20:18:50ID:???
よしフレームワークにおけるアノテーションやAOPの意義について考えようぜw
0435nobodyさん2005/10/09(日) 20:29:41ID:???
>>432
あー、お前の言うことにも一理あるね。
というか、お前が俺の言葉をどのように捉えたのかは理解したよ。
言葉のツラだけ捉えればまさにオカルトという言葉が相応しいかもしれない。
世の中には言葉をそういう風に使って金儲けや愚かな事をする輩が溢れているから
ダイレクトにそう捉えられたのも無理はないと思う。
だけど俺が言いたいのはそういうことじゃないんだよ。
なんか議論がつまらない方向に発展していきそうなのでこのへんで切り上げますが。
0436nobodyさん2005/10/09(日) 20:35:02ID:???
>>435
上の流れがあるから指摘の意義は判ってる奴は普通に判ってるだろ
幼稚な煽りで見れたものじゃないがな
0437nobodyさん2005/10/09(日) 22:21:08ID:???
>>434
PHPでリフレクションを利用したコメントアノテーションはちょっと興味ある
言語仕様になくても無理矢理実現できるのがPHPらしいというかなんと言うか
0438nobodyさん2005/10/09(日) 22:33:52ID:???
まあ今のとこお守りみたいなもんでコメントと大差ないけどね
0439nobodyさん2005/10/09(日) 23:00:25ID:???
>>434
XPはコメントとかコード外のメタデータや宣言を否定するわけじゃないっつの
それがリファクタを困難にするとも言ってない
読めるコードを書けっていう当たり前のことが言いたいだけなんです
0440nobodyさん2005/10/09(日) 23:22:19ID:???
みんな理屈はいいから結論を書いてくれよ
>>414はアリ?ナシ?
0441nobodyさん2005/10/09(日) 23:24:45ID:???
お子ちゃまは寝る時間ですよ
0442nobodyさん2005/10/09(日) 23:40:49ID:???
オフィシャルではアノテーション導入する気はないみたいだなあ。
やっぱりコンパイラが対応してくれないと…フレームワークレベルでは実効力に欠ける。
Maple以外でDI+AOPなフレームワークってないのかな?
0443nobodyさん2005/10/10(月) 00:43:37ID:???
>>440
本当に理屈は要らないんだな?

ナシ。
0444nobodyさん2005/10/10(月) 02:00:10ID:???
フレームワークのメンテナが提供してるサンプルは
どれもこれもシンプル過ぎていまいち参考にならないなぁ
もっと踏み込んだサンプルをチボンヌ
0445nobodyさん2005/10/10(月) 07:29:44ID:???
議論を読んでない俺が思うのは、開発手法の議論は他のスレでやってくれということだ。
つーかガチガチのクラス使いたいならJavaでやれ。
PHPでやらなきゃならん制約があるなら新スレでも立てるろや。
0446nobodyさん2005/10/10(月) 07:35:31ID:???
俺が思うのは
フレームワークの開発がどれも停滞し過ぎということだ。
0447nobodyさん2005/10/10(月) 09:25:29ID:???
YAMLってJSONみたいな物?
0448nobodyさん2005/10/10(月) 09:35:59ID:???
>>442
上にも出てたけどpok。
実務レベルでどうか知らんけど、勉強用にはとても良かった。

>>446
最近はMapleが活発になってきたんじゃないかな?
0449nobodyさん2005/10/10(月) 10:57:46ID:???
MapleってM3のDecoratorみたいな
CompositeViewを実現する機構がなくない?
そこが俺的には痛いッス
0450nobodyさん2005/10/10(月) 11:04:05ID:???
>>447
違うね。
0451nobodyさん2005/10/10(月) 11:09:10ID:???
>>450
どっちも汎用の構造化データ記法でしょ?
同じような物じゃないの?
0452nobodyさん2005/10/10(月) 11:45:47ID:???
>>451
JSON と XML が同じようなものである程度には,
JSON と YAML は同じようなものだとは思うが,
一般的には「違うもの」として捉えられていると思う.

てゆーかJSONって形式としちゃ汎用とはいえ
例えばPHP→Javaのデータ転送にJSON形式使う奴なんていないんじゃないかと……
0453nobodyさん2005/10/10(月) 11:50:50ID:???
構造をあらわすっていう超大雑把な括りに何か意味あんの?
0454nobodyさん2005/10/10(月) 11:55:22ID:???
>>452
だがJSONはそれでいい
0455nobodyさん2005/10/10(月) 12:03:23ID:???
>>453
意味っていうかプロトコルの一種だろ
やりとりのための約束ごととして決めておく。
絶対的な必然性はなかなかありえないから
「どっちでもいい」に落ち着きそうな気はする。
0456nobodyさん2005/10/10(月) 13:49:15ID:???
強いて言えば
 人間に読みやすく設計されてるのがYAML
 JavaScriptに読みやすく設計されてるのがJSON
 誰もが読みにくい代わりに高機能なのがXML
って感じかねぇ?
0457nobodyさん2005/10/10(月) 13:54:12ID:???
確かにYAMLは人が見やすいなぁ
中庸っぽさがPHPと似てるかも
JSONも嫌いじゃないけど
0458nobodyさん2005/10/10(月) 14:37:54ID:???
JSONは専らJavaScriptと連携するときに使う印象。

ところでMapleはPHP5には対応しないのかな?
Mapleの目指す方向からしてPHP5で書いた方がずっと楽&適してるように思うんだけど。
0459nobodyさん2005/10/10(月) 14:44:41ID:???
前から4で続けると明言してる
やったことないけど、5じゃ動かんの?
0460nobodyさん2005/10/10(月) 17:11:33ID:???
っていうかつまらん議論してるならコンピュータなんて捨てちまえ!!!
別に無くてもあまり生活に困らないぞ。
0461nobodyさん2005/10/10(月) 17:17:24ID:???
>>460
この議論がつまらんと思うなら460にはそれが良かったんだろうな
幸せな人生を歩んでくれ
0462nobodyさん2005/10/10(月) 19:13:07ID:???
Mapleって4なんだ。
プレゼンテーション層をActionだけにしたところは共感してるんだけど
機能的にはまだMojavi系の方が厚いっぽい。
0463nobodyさん2005/10/10(月) 19:28:10ID:???
DIってのは簡単に言うと
器だけおいておくとフレームワークが勝手にオブジェクトを
放り込んでくれるウンコホウリナゲ!( ゚∀゚)つ=====o
みたいなことを言ってるのかな?
0464nobodyさん2005/10/10(月) 19:38:53ID:+MnfvWOk
>>463
そんな感じかな。
0465nobodyさん2005/10/10(月) 21:11:32ID:???
ウンコホウリナゲ!( ゚∀゚)つ=====oられるために
Mapleは設定ファイルを用意、
guessworkはプロパティーを用意すると。
Actionだけを見てざっと把握できるから
その点ではguessworkがいいかな…。
0466nobodyさん2005/10/11(火) 12:40:17ID:???
勉強してる余裕ないから、いまだにguessworkしか使えない。(´・ω・`)ショボーン
0467nobodyさん2005/10/11(火) 18:13:27ID:???
Mojaviで
属性をメソッドから返す作法が面倒くせーと思ってたけど(プロパティー用意で良くね?と)
内部条件によって属性を変えられるメリットがあるんだな。
Mojaviは知るほどに、「よく考えられているなー」という部分がある。
0468nobodyさん2005/10/11(火) 19:47:53ID:G45STU1Q
>>467
Mojaviだからではなくて、ただの情報隠蔽だろ。
■ このスレッドは過去ログ倉庫に格納されています