トップページ⇒php
985コメント270KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/24(火) 01:21:08ID:???
PHPのフレームワークに関する話題用のスレッド

●国外産●
symfony
 ttp://www.symfony-project.com/
code igniter
 ttp://codeigniter.com/
Zend Framework
 ttp://framework.zend.com/manual/ja/index.html
CakePHP
 ttp://www.cakephp.org/
Yii Framework ←New!! (Dec 03, 2008)
 ttp://www.yiiframework.com/

●国産
ちいたん
 ttp://php.cheetan.net/
Ethna
 ttp://ethna.jp/
guesswork
 ttp://classic.guesswork.jp/
maple
 ttp://kunit.jp/maple/

●前スレ
【PHP】フレームワークについて語るスレ12【総合】
http://pc11.2ch.net/test/read.cgi/php/1229960175/
0140nobodyさん2009/05/19(火) 14:33:19ID:???
で、グローバル変数を使ってる or 推奨しているフレームワークってあるの?

グローバル定数の代替え手段を理解していない素人が喚いているだけ?
0141nobodyさん2009/05/19(火) 15:09:14ID:???
>>140
フレームワークの話題でなければスレ違い、って意図だと解釈しておく。
配布されているような汎用フレームワークでは、さすがにグローバル変数は使えないだろう。

ただ、そこら辺で実稼働してるような俺流フレームワークなどの規模や必要性なら、
ガチで原理主義なOOPコーディング(っぽいもの)なんかより、読みやすく
手入れしやすいグローバル変数の使い方もできるだろうし、されてるかもね。
要は使い方だって。
0142nobodyさん2009/05/19(火) 17:05:54ID:???
>ガチで原理主義なOOPコーディング(っぽいもの)なんかより、読みやすく
>手入れしやすいグローバル変数の使い方もできるだろうし、されてるかもね。

全く想像つかんw

複数人で開発した際に変数名の競合を防げなかったり、
引数としての型チェックやデフォルト値が設定出来ないわけだが…

コーディング規約を徹底管理すれば何とかなるが、
後者はテストを含め、実装には無駄な手間がかかるだろう。

ロジックや変数の局所化はOOP以前の話だと思う。
0143nobodyさん2009/05/19(火) 17:45:17ID:???
>>142
だから、$_POSTやら$_GETやら$_COOKIEにどこからでも代入出来る時点で、
変数の局所化なんて崩れてるって。
# こいつらを最初にいちいちコピーして空っぽにするのが最近は普通なのかな?

なんで「グローバル変数を使う」 = 「無制限に読み書きする」に直結するんだろう。
読むだけなら何の問題もないって。

規約って言ったって、(決まってる初期処理以外で)$GLOBALSに代入する奴は死刑、
ってだけでいいじゃないか。あくまで、$GLOBALSのみ使うっていう前提だけど。

俺はまあまず使わんけど、便利そうな使い方は想像できなくもないよ。
01441432009/05/19(火) 17:59:28ID:???
って書いて、なんかわかってきた。
自分がそう思うのは、関数(メソッド)の外でスクリプトを書くって事がないからか。
もう全部、下敷きのディスパッチャがある環境でしかスクリプト書かないし、
トップレベルのスコープで書かれた部分って数枚で、増えない。

もしトップレベルでいろいろ書く必要があるなら、グローバル変数に
代入しないわけにはいかないか。
そうなると、さすがにいきなりグローバル変数の参照は怖くてできんわな。

まあどっちにしろ、局所化できるかどうかの話だけだとは思う。
0145nobodyさん2009/05/19(火) 18:04:18ID:???
>だから、$_POSTやら$_GETやら$_COOKIEにどこからでも代入出来る時点で、
>変数の局所化なんて崩れてるって。

言語レベルで周知されている値と、ユーザーグローバル変数を同列には語れないかと。
(素人でも $_POST を上書きしちゃマズイって事くらいは理解しているだろう)
一部の局所化が既に崩れているから、さらに崩して良いという考えかい?


>なんで「グローバル変数を使う」 = 「無制限に読み書きする」に直結するんだろう。

制限事項を規約で作るくらいなら、定数化なりクラス化するのが普通じゃないかね。
言語レベルで制限御出来る機構が提供されているのに、それを使わない理由がわからない。
0146nobodyさん2009/05/19(火) 20:12:14ID:???
全然関係ないけど、CodeIgniterは$_GETを空にするよね。
全然関係ないけどね。
0147nobodyさん2009/05/19(火) 21:13:04ID:???
結局自分がやってるお仕事のせまい範囲でかたってる人がいただけだったというオチ
しかもフレームワークそんな関係ない
0148nobodyさん2009/05/19(火) 21:39:39ID:???
いや、フレームワーク使ってるからこそ、グローバル変数容認論が出るんじゃないかと
そういう意味では関係ある、ような無いような
0149nobodyさん2009/05/19(火) 21:54:40ID:???
PEARは使ってるな
0150nobodyさん2009/05/20(水) 00:06:53ID:???
まぁ、使いまわしをする前提で作成したライブラリにグローバル変数使うのは避けたいかな。
0151nobodyさん2009/05/20(水) 02:14:41ID:???
変なオブジェクト(ビューから呼べないとか)使わされるより、$_REQUESTや$_SESSION使った方がいい。
0152名無し募集中。。。2009/05/20(水) 02:19:49ID:by98XaTN
なんで渡されるのが変なオブジェクト前提なのか解らんが
0153nobodyさん2009/05/20(水) 02:35:48ID:???
Viewからrequestやsessionなんて呼ばないだろ。
0154nobodyさん2009/05/20(水) 07:21:54ID:???
>>151
もう一度MVCを勉強した方がよくね?
0155nobodyさん2009/05/20(水) 13:20:19ID:???
数年使った事ないと書いたモノだが...

サービスロケーターを実現するために、他のクラスに依存しないということにおいてグローバル変数は有用だと思う。
PEARが使ってるのもそういう理由じゃないかな。
スコープがグローバルなのはクラス名も同じ。名前衝突解決法も同じで良いと思うしPEARもそうしてる。
0156nobodyさん2009/05/20(水) 13:50:50ID:???
クラスだと名前衝突が起きた場合にPHP側が警告してくれる。
グローバル変数だと知らぬ内に値が書き換えられる可能性がある。

この差は大きいと思うので、極力クラス化している。
0157nobodyさん2009/05/20(水) 16:36:09ID:???
クラスだと関連する定数持たせたりできるしな
グローバル変数なんて石ころみたいなもん
0158nobodyさん2009/05/20(水) 20:18:38ID:???
PHP標準のセッション管理やクエリーパラメーター管理は、連想配列のグローバル変数。皆これを使ってる。それで十分だから。
0159nobodyさん2009/05/20(水) 20:24:27ID:???
もしPHPのデベロッパーがセッション管理をオブジェクトにすることが有意と思ってるなら、組み込みクラスを実装してるだろう。
が、そんなことしてもメリットは薄いし、初心者に優しいPHPの良さを消すことになる。ので、PHPのセッション管理は連想配列のまま。
0160nobodyさん2009/05/20(水) 23:22:06ID:???
だからこそフレームワークがあるわけだが。
0161nobodyさん2009/05/20(水) 23:37:13ID:???
>>159
クラスオブジェクト作るときってただ単純にセッションを管理したいってだけで作るわけじゃないだろ。
ある一定の目的が定義されてて、その定義にあわせて管理することを考えたときに
一つの意味の集合であるクラスを作るのであって。
PHPのデベロッパーはセッション管理をすることの意味なんて凄く広義的に考えて設定してるから、
グローバルな連想配列になってんじゃないのか。
0162nobodyさん2009/05/20(水) 23:39:50ID:???
そもそも、PHPのスーパーグローバルを否定してる奴はいなくね?
ユーザが勝手に作るグローバル変数をスーパーグローバル変数と同列で語るのがおかしいわけで…
0163nobodyさん2009/05/21(木) 00:01:09ID:???
「ユーザが勝手に作るグローバル変数」が問題になるのは、
結局、仕様書だの会社で規定されてる命名規則だの何だのとかきちんとしてないのに
>>109のようなことをつぶやいて>>127のような人を量産する場合なんだろ。

結局オープンソースだとか使いまわし前提のライブラリだのでそんなの使ってると後で使う人が困ったことになるってだけで。
0164nobodyさん2009/05/21(木) 00:26:39ID:???
スーパーグローバル変数をグローバル変数と勘違いしている輩に振り回されるだけじゃない?
0165nobodyさん2009/05/21(木) 01:01:42ID:???
グローバル変数主張してる人はメリットばかりでデメリットをあげないからなぁ、
単なる素人発言にしか見えないんだわ。

実際になんらかのフレームワークを使った上で、
グローバル変数のメリットデメリットを比較してみてくれよ。
0166nobodyさん2009/05/21(木) 02:12:20ID:???
定数はどうなの?
定数もグローバル(define)じゃなくてクラス定数にしてんの?
0167nobodyさん2009/05/21(木) 02:26:54ID:???
defineは使わん
0168nobodyさん2009/05/21(木) 09:09:50ID:???
定数と変数じゃ用途が大分用途が違うしなぁ
使ったとしても最低限のフラグ程度にしか使わないし
DEBUG_MODE とか、そんな感じのやつ。接頭子もつけてる。

クラスに関する定数は、当然クラス定数にしているよ。
0169nobodyさん2009/05/21(木) 09:46:04ID:???
作りすぎなければ良いだけのこと。まあ、たくさん作ったとしても、どうせリクエストの度に消滅するんだから、それほど気にすることもないが。
0170nobodyさん2009/05/21(木) 10:17:04ID:???
リクエスト内で競合する可能性が問題視されてるのでは?
0171nobodyさん2009/05/21(木) 10:34:56ID:HWozpBcz
>>109に釣られ過ぎだろ
いや、それ以下か。シングルトンいらんって話が、引数を渡すのにとか名前がぶつかるからって話にダウングレードしてるし
0172nobodyさん2009/05/21(木) 13:53:57ID:???
定数を多重定義したらエラーが表示される。
0173nobodyさん2009/05/21(木) 14:55:07ID:P779ZgB3
最近、はてな界隈ではCakePHPとSymfonyの話ばっかりだよ。
あいつら、ZendFrameworkやCodeIgniterの事なんて気にもしてないよ。
0174nobodyさん2009/05/21(木) 15:00:58ID:???
>>173
たんなる感だけど、日本で流行らないのは名前の文字数のせいだと思ってるw
0175nobodyさん2009/05/21(木) 16:23:26ID:P779ZgB3
>>174
マジでwww!!?
0176nobodyさん2009/05/21(木) 16:24:30ID:???
PerlよりRubyよりもちろんJavaよりも短いPHPやっぱり最強だな
0177nobodyさん2009/05/21(木) 18:32:40ID:???
比較的大きな案件ならCodeigniterなんて論外だろ。
0178nobodyさん2009/05/21(木) 18:41:02ID:???
なんで?
だいたい、どれくらいで「大きな案件」よ
はてな住人はそんなにみんな大きな案件ばっかりやってるのか?
0179nobodyさん2009/05/21(木) 19:18:31ID:???
いざって時に情報や技術者が少ないと困るからじゃね?
Codeigniter出来る人を求人してもいなさそうなイメージ…。
0180nobodyさん2009/05/21(木) 22:34:08ID:P779ZgB3
phaだって、CakePHP使ってるんだぞ!
0181nobodyさん2009/05/21(木) 22:51:25ID:???
CodeIgniter(笑)
0182nobodyさん2009/05/22(金) 00:15:18ID:???
うまく説明できないけど、CodeIgniterはないと思うに一票。
0183nobodyさん2009/05/22(金) 00:22:03ID:???
CodeIgniterは、コア部分とかをオーバーライドして簡単に修正出来るのと
実際公式サイトに書いてあるように習得が楽なので、ないこたないと思うけど?

バリデータがしょぼかったから別の使ってるけど。

まぁ、一人で適当にアプリ作るには割りとちょうどいいかな。
階層も薄いからどこでどう動いてるかとかも把握しやすいし。
0184名無し募集中。。。2009/05/22(金) 00:30:33ID:f3nFju+F
グループ開発になるとZend,Symfony,Cake,Ethnaくらいしか選択肢ないよ
それ以外は経験者集められない
0185nobodyさん2009/05/22(金) 00:55:57ID:RzyQ8gRW
>>184
ありすぎて、問題だなw
0186nobodyさん2009/05/22(金) 01:13:02ID:???
>>174
ありえそうな気がしてくるw
CodeIgniterとかよめねぇwwwwみたいなのいっぱいいそうwwwww

こでいぐぬぃてぇあ
0187nobodyさん2009/05/22(金) 01:35:28ID:???
>>178
比較的大きな案件といっても中規模レベルのことで、
それ以下の更に以下ぐらいにCodeigniterの選択肢があるわけで。
0188nobodyさん2009/05/22(金) 01:35:53ID:???
なんでコードまで読めなくなるんだよw
0189nobodyさん2009/05/22(金) 02:03:28ID:???
なんだかんだでZendブランドは強い。
0190nobodyさん2009/05/22(金) 09:57:18ID:???
>>186
せめて名前が、Code Igniter だったらまだマシだったのかw
0191nobodyさん2009/05/22(金) 12:25:09ID:RzyQ8gRW
yiiとかどうなの?
0192nobodyさん2009/05/22(金) 14:29:39ID:???
>>191
文字数的にはヒットの予感w

パフォーマンス的には結構よさそうだけど、使い難そうだね。
日本に限らず流行らないほうに1票。
0193nobodyさん2009/05/22(金) 15:46:56ID:???
なるほど、じゃぁ文字数的にはやっぱりCが最強なんだな。
0194nobodyさん2009/05/23(土) 09:51:40ID:???
Cって検索するとき困る
0195nobodyさん2009/05/23(土) 10:02:39ID:???
付き合うならDぐらいは欲しいな
0196nobodyさん2009/05/23(土) 11:28:31ID:sw/qjhoP
Dと付き合ってるけど毎年性格が豹変するから疲れる
0197nobodyさん2009/05/23(土) 19:45:31ID:???
そこで颯爽とR登場。マニアックな魅力にみんなイチコロ(死語)
0198nobodyさん2009/05/24(日) 00:13:51ID:???
エラー表示が優れてるフレームワークはどれ?
0199nobodyさん2009/05/24(日) 00:17:05ID:???
php
0200nobodyさん2009/05/24(日) 01:25:18ID:UrsSuZGN
>>198
Cakeじゃね?DBのクエリーを見れるじゃん。
0201nobodyさん2009/05/24(日) 08:19:09ID:???
クエリー出るのはいいね
0202nobodyさん2009/05/24(日) 09:51:07ID:???
SQLクエリのエラー表示、ってだけで見るのもどうかと
PHP5に特化して統一されたエラーハンドリングができる方がフレームワークとしてはいいかもよ。

SQLのエラー(例外)をキャッチできればクエリ出すことも簡単だろうし。
ZFやらKohanaとかもいいんでね?面倒なのでやってないけど。
0203nobodyさん2009/05/24(日) 10:02:26ID:???
その面倒がだめなんでしょ
0204nobodyさん2009/05/24(日) 10:10:00ID:???
うん。なるほど。納得
0205nobodyさん2009/05/24(日) 11:18:37ID:???
ZFはDBアダプタにプロファイラ設定するだけで、
クエリから実行時間まで全てログれる件。

表向きに簡単!便利!と売るより、
プログラマにとって地味に嬉しい機能を全面に出すフレームワークは無いものかね
0206nobodyさん2009/05/25(月) 00:26:34ID:???
>>205
地味に嬉しい機能って何?
0207nobodyさん2009/05/25(月) 00:28:25ID:n6zT/Oby
ZendもCakeもSymfonyも表向きだけじゃなくてプログラマ向けに便利だと思うけど
0208nobodyさん2009/05/25(月) 00:44:44ID:3dtn4t5a
>>206
http://framework.zend.com/manual/ja/zend.db.profiler.html
0209nobodyさん2009/05/25(月) 03:07:58ID:???
> getQuery() は、クエリの SQL テキストを返します。
パラメータつきのプリペアドステートメントの場合、 クエリがプリペアされた時点のテキストを返します。
つまり、プレースホルダを含んだままの形式ということです。
実行時に置き換えられた値を知ることはできません。

orz
0210nobodyさん2009/05/25(月) 05:21:49ID:???
Perlの場合、フレームワークとか関係無しに、DBI経由でSQLをダンプできる。
0211nobodyさん2009/05/25(月) 05:32:16ID:n6zT/Oby
それはPHPでもなんでも出来るので
0212nobodyさん2009/05/25(月) 07:03:40ID:???
perlすごいな
PHPは捨てることになします
ありがとうございました
0213nobodyさん2009/05/25(月) 07:28:25ID:???
さようなら
文盲はもう帰ってこなくていいよ
0214nobodyさん2009/05/25(月) 09:11:31ID:???
PHPの組み込みDB関数にSQLのダンプ機能ってあるのか?
0215nobodyさん2009/05/25(月) 09:44:24ID:???
あるんじゃない?必要ないから使ったことはないけど。
0216nobodyさん2009/05/25(月) 11:30:40ID:???
どうやるの?php.iniで設定するとか、コネクション張るときに引数に渡すとか
0217nobodyさん2009/05/25(月) 11:37:50ID:???
ひょっとしてDBのログをtailfで見ている俺は勝ち組?
0218nobodyさん2009/05/25(月) 12:31:52ID:???
>>200
それsymfonyからパクった機能じゃん
0219nobodyさん2009/05/29(金) 04:53:50ID:???
>>217
勝ち負けは知らんが、確立された方法があるなら素敵なことだと思う。
開発中 tail -f をDBログに対して常に可能な状態なら、それは一種のフレームだもん。
0220nobodyさん2009/06/08(月) 00:42:53ID:???
静かだな。
なんかネタない〜?
0221nobodyさん2009/06/09(火) 00:03:04ID:???
アンケートでもするかー

1 今使用してるフレームワーク
2 使用した事のあるフレームワーク
3 それぞれの寸評または10点満天でのスコア
4 欲しい機能

どぞ
0222名無し募集中。。。2009/06/09(火) 00:24:43ID:JTieN+g5
1 今使用してるフレームワーク
個人ではCakePHPとZendFramework
仕事で他人が作ったSymfonyのシステムもいじる
2 使用した事のあるフレームワーク
Ethna
Mojavi
Maple
CakePHP
ZendFramework
Symfony
3 それぞれの寸評または10点満天でのスコア
Ethna 8点 かなり良いけど今使うには古い
Maple,Mojavi 初期構築やってないんであんま記憶ない
CakePHP 9点 初期構築なら一番開発が楽
ZendFramework 7点 自由すぎで楽はできない
Symfony 5点 これしか知らなかったらこれでいいけど、他知ってると荒が見えてしまう
4 欲しい機能
日本のガラパゴス携帯に簡単に対応して欲しい
無理だろうけど
0223nobodyさん2009/06/09(火) 01:57:18ID:???
MOONGIFT: ? Sinatraを真似たPHP用軽量フレームワーク「Fitzgerald」
http://www.moongift.jp/2009/06/fitzgerald/

簡単なURLマッピング、シンプルなレスポンス。どれをとっても簡単だ。
そんなSinatraを真似たPHP用フレームワークがFitzgeraldだ。

0224nobodyさん2009/06/09(火) 09:20:00ID:???
>>222
沢山つかってるねー
Symfonyってそんなんなんだ...
0225nobodyさん2009/06/09(火) 09:36:31ID:g6/5Uspu
codeigniter使ってる人いないの?
0226nobodyさん2009/06/09(火) 09:40:47ID:???
ZendFW導入して3ヶ月。だいぶコード書くのが楽になってきた。
構造がしっかりするのは良いもんだね。
0227nobodyさん2009/06/09(火) 09:46:08ID:???
>>225
おるよ
最初セッション関連に不満はあったけど、そこだけ自作に差し替えれば結構使える
0228nobodyさん2009/06/09(火) 10:10:03ID:???
セッション周りで自作って致命的だな。
0229nobodyさん2009/06/09(火) 10:15:14ID:???
え?
0230nobodyさん2009/06/09(火) 13:05:56ID:???
CodeIgniter(笑)
0231nobodyさん2009/06/09(火) 21:02:52ID:???
こでいgにてぁ?(*‘ω‘ *)?
0232nobodyさん2009/06/09(火) 23:10:49ID:???
そこでkohanaですよ
0233nobodyさん2009/06/10(水) 01:30:26ID:???
んだ。
メジャー所一通り経由したが、kohanaは見通しよくてよい。
0234nobodyさん2009/06/10(水) 16:05:15ID:???
いらね
0235nobodyさん2009/06/10(水) 19:49:52ID:???
フレームワークに一番期待するものを述べよ

おれはDBラッパーが使いやすけりゃいいかな
0236nobodyさん2009/06/10(水) 22:28:38ID:???
フロントコントローラとディスパッチ先の管理
0237nobodyさん2009/06/11(木) 02:06:24ID:???
>>222がいってる、携帯対応は欲しいね。

後はHTMLデザイン関連フレームワークが同梱されてるようなものとか
あるといいなぁって思った。
Webサイトを作成するって段階において、一人で全部作成しようとすると
管理画面含め、画面作成部分が実は凄く面倒くさい。

まぁ、YUIとかそこらへんのCSSフレームワークとかを使えってことなのかもしんないけど。
0238nobodyさん2009/06/11(木) 02:31:40ID:???
携帯対応ってどんな?

絵文字<->絵文字変換
絵文字->画像変換
GET/POST文字コード自動変換
文字コード変換出力

ほかは?
0239nobodyさん2009/06/11(木) 09:30:25ID:???
IP・UserAgentでの判別
クッキー使えないときのセッション管理
■ このスレッドは過去ログ倉庫に格納されています