トップページ⇒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/
0611nobodyさん2009/09/07(月) 19:14:09ID:???
スコープが関数単位なのって、PHPとJavaScriptぐらいなものなんだ。もっともJavaScriptですら新しいバージョンじゃブロックスコープになるが。
0612nobodyさん2009/09/07(月) 21:03:02ID:???
>>611
> スコープが関数単位
今まで知らなかったよ。
今までのいろんな謎が一気に解けた。ありがとう。
0613nobodyさん2009/09/07(月) 21:10:03ID:???
array array array array がめんどくさい
0614nobodyさん2009/09/07(月) 21:40:15ID:???
>>612
えっ?なんだと思ってたの?
0615nobodyさん2009/09/07(月) 23:23:59ID:???
>607がアホだという事は分かった。

俺も関数を短くするタイプだから、ブロックスコープはあまり必要性を感じないな。
ブロックの中が10行超えたら大抵メソッド化しちまうから特に困らん。
勿論ブロックスコープが悪いとは思わんが、初心者の学習コストを上げるほどのメリットを感じない。
0616nobodyさん2009/09/07(月) 23:26:06ID:???
ブロックスコープってそんなにいいの?何か効果が分かる例出して
0617nobodyさん2009/09/07(月) 23:40:34ID:???
行の長さに応じてメソッド化するとか意味不明すぎる
0618nobodyさん2009/09/07(月) 23:44:47ID:???
だいたい1メソッド20行超えるようだったら能毎分割できるだろう、
とかみたいな目安の話じゃろ。わりとよく聞く話だとおもうけど
0619nobodyさん2009/09/07(月) 23:57:18ID:???
むしろ、途中で変数宣言するとかの方がおかしいと思うのだが
全部関数の初めでやればいいじゃん。
0620nobodyさん2009/09/08(火) 00:02:55ID:???
それもなんだかなぁ
0621nobodyさん2009/09/08(火) 00:06:12ID:???
関数の最初に全部ってのは廃れたやり方だな
0622nobodyさん2009/09/08(火) 00:08:19ID:???
最初に宣言しないと用途わからなくなるくらい冗長ってことだしなぁ
0623nobodyさん2009/09/08(火) 00:11:52ID:???
>>621
そうなの?
じゃあ流行のやり方はどうなってんの?
0624nobodyさん2009/09/08(火) 00:23:20ID:???
>>623
自分は処理毎の先頭で纏めて初期化している。

意識して関数の先頭で全て宣言する事もあるけど、
あまりメリットを感じない。
0625nobodyさん2009/09/08(火) 00:31:02ID:???
途中で宣言するのは for文とか、カウント系だけかな
あとは全部頭で初期化してる
0626nobodyさん2009/09/08(火) 00:33:15ID:???
クラスプロパティとかは頭におくけど、
メソッド内のローカル変数なんて必要になったら宣言すりゃいいんじゃね
よほど長ったらしい関数とかを書くとかじゃない限り分けて宣言するメリットなくね
0627nobodyさん2009/09/08(火) 00:33:52ID:???
条件によって途中で関数を抜けるような場合は、頭で初期化してしまうと無駄な気分に・・・
宣言と初期化分ければそんなに気にならないけど、あまり意味は無い気もするし。


// $hoge を使わない場合がある。
function hoge()
{
$hoge = new Hoge();
if (xxxx) return;
$hoge->hogehoge();
}
0628nobodyさん2009/09/08(火) 00:41:51ID:???
普通はifとかwhileとかのブロックの中でしか使わない変数は、そのブロックの中で宣言するんだよ。
が、PHPの場合、関数の最初の方で宣言しとくのが分かりやすいと言えば分かりやすい。
が、そうすると変数名の衝突が起きやすいので、長い変数名を使わざるを得ない。よって、記述が冗長になる。
0629nobodyさん2009/09/08(火) 00:41:55ID:???
ブロックスコープ無いってことは、関数呼び出すときに変数を全部初期化してるんじゃないの?
何かそんな資料を昔見たようなうる覚え
0630nobodyさん2009/09/08(火) 00:42:18ID:???
お前らそろそろスレ違いに気付け
0631nobodyさん2009/09/08(火) 00:53:55ID:???
はぁい
0632nobodyさん2009/09/08(火) 00:57:15ID:???
全部グローバル変数にするのが一番かっこいい書き方
0633nobodyさん2009/09/08(火) 01:19:29ID:???
C言語って関数スコープだっけ? ブロックスコープだっけ?
0634nobodyさん2009/09/08(火) 01:27:39ID:???
Cはブロックスコープ
0635nobodyさん2009/09/08(火) 01:28:50ID:???
ググレカス。
0636nobodyさん2009/09/08(火) 08:10:48ID:???
全部関数の先頭で宣言するとか、VBじゃあるまいしw
0637nobodyさん2009/09/08(火) 08:46:05ID:???
このスレって、伸びてるなと思って覗いたら、フレームワークとは
全く関係ない話題で埋め尽くされてることが多いよな。
相応しいスレはいくらでもあるんだから、そっちでやれや。
0638nobodyさん2009/09/08(火) 08:57:46ID:???
そういやVBもブロックスコープじゃなくって、関数単位だったな。VB.NETはブロックスコープになったんだっけ。
0639nobodyさん2009/09/08(火) 11:39:27ID:???
>>611
>スコープが関数単位なのって、PHPとJavaScriptぐらいなものなんだ。?x2028;ダウト。
変数宣言のない言語はたいてい関数スコープ。PythonもRubyもそう。
06405782009/09/08(火) 12:25:14ID:???
お返事が遅くなって申し訳ない。
・・・まぁ、この流れはある程度想定の範囲内。
フツー、「んなもんスクラッチで書けよ」って思うよなw

>>587
相手についての考察は大体そのとおり。だからpear使いたくなかったんよ。
レンタルチャットでは多分無理。少なくともかなりのカスタマイズしないといけないんで、結局手間はあんまり変わらないと思われ。

>>588
これは知らなかった。ORマッパ無しというのもいいかも。
少し調べてみるっす。感謝>fitzgerald

エスケープ/サニタイズは、まぁPHPは結構便利な関数があるからそんなに面倒ではないんだけどね。
ま、>>578のとおり、そんなにがっちり組む必要もないんだし、
>大体バリデーションつっても、入力文字の<>&あたり置換すりゃ早々問題なんて起きんだろうし
>ログだってファイルにはいていいんじゃね、小一時間もありゃ書けるでしょ
でいいっちゃいいと思うんだがね。

>>590
あることぁあるが、PHP4の時代のヤツなんでねぇw>俺俺ライブラリ
ま、正規表現は確かに苦手だ。eregとpregでビミョーに違うのもややこしいしw
0641nobodyさん2009/09/08(火) 12:31:29ID:???
>>639
Rubyはブロックスコープだが。
0642nobodyさん2009/09/08(火) 18:43:17ID:???
どのフレームワークのコーディングがきれい?
0643nobodyさん2009/09/08(火) 19:28:03ID:???
>>642
好みが大きいと思うけど、標準的なPHPという点ではZFかな?
0644nobodyさん2009/09/08(火) 19:41:42ID:???
ZFはコーディング規約の為のFWと言っても過言では無いからなw
0645nobodyさん2009/09/08(火) 19:42:43ID:???
あぁ、クエリを弄れる人がいないのか
06466452009/09/08(火) 19:44:11ID:???
誤爆スマソ。
0647nobodyさん2009/09/09(水) 02:15:12ID:???
>>627
その例は設計が悪い
0648nobodyさん2009/09/09(水) 03:38:43ID:???
>>647
具体的に何が?割とよくあるコードだと思うけど?
return に限らず throw とかも含めてね。
0649nobodyさん2009/09/09(水) 04:07:50ID:???
使わないのなら関数で処理分けろよ
バグの温床じゃん
0650nobodyさん2009/09/09(水) 04:39:08ID:???
バリデーションとか含めるとどうしても >>627 みたいなコードは発生するよ。

A処理、B処理、C処理を連続して順番に処理する事を保証する場合、
内部的にメソッドを分けたとしても、PGに提供するメソッドは一つにするのが普通だろ。
その場合、途中の処理でこけた場合、どの処理でこけたかを判断する為に、return もしくは throw 等を使う。

それをしない方がバグの温床になると思うんだが・・・
0651nobodyさん2009/09/09(水) 04:49:10ID:???
変数の宣言とクラスの宣言を混同してる件について
0652nobodyさん2009/09/09(水) 04:55:14ID:???
ん?どこが?
0653nobodyさん2009/09/09(水) 05:02:31ID:???
あぁ >>651 は宣言と初期化の区別がつかないのかw

クラスの宣言ってのは、通常 class Hoge {} な構文を指す言葉だから誤用しないようにね。
0654nobodyさん2009/09/09(水) 05:02:56ID:???
宣言っつーか初期化だろ、Warningでるやつ

1ヶ月でログが20GB超えてたときは流石に吹いたわ
0655nobodyさん2009/09/09(水) 05:06:12ID:???
>>654
あるあるw と言いたいが、途中で気がつけよw
0656nobodyさん2009/09/09(水) 05:18:47ID:???
ローテーションして圧縮してたから、まったく気づかなかった
書庫の中身見てはじめて気づいたんだわ

写真とかアップロードするから、容量に関しては無頓着だったし
0657nobodyさん2009/09/09(水) 05:23:06ID:???
mooseのlazyみたいなのがあればいいんだけどな。
0658nobodyさん2009/09/09(水) 05:30:56ID:???
Mooseのlazyって、内部的にはどんな実装になってるの?
0659nobodyさん2009/09/09(水) 07:00:39ID:???
>>656
稼働前にdisplay_errorsオンにするなり、error_reportingなりでデバッグしないの?
活用しないログほど意味の無いものは無い。
0660nobodyさん2009/09/09(水) 08:27:51ID:???
お前らいい加減スレ違いに気付け
0661nobodyさん2009/09/09(水) 08:41:34ID:???
フレームワークに限らないPHP全般について、うだうだやるのに適切なスレはどこでしょうか。
0662nobodyさん2009/09/09(水) 09:08:54ID:???
くだ質か雑談あたりじゃね
0663nobodyさん2009/09/09(水) 17:32:08ID:???
フレームワークの設定ファイルってどんな感じがいいの?

・xmlとかでphpソースと別ファイルにする
・phpソースに定数とか連想配列で保存

0664nobodyさん2009/09/09(水) 17:34:01ID:???
どっちでも便利なほうでいいんじゃ?
0665nobodyさん2009/09/09(水) 18:14:09ID:???
>>663
YAMLいいよ、YAML
0666nobodyさん2009/09/09(水) 18:23:52ID:???
xmlよりは扱いやすいよね。
0667nobodyさん2009/09/09(水) 18:46:02ID:???
俺もYamlで別ファイル
06686632009/09/09(水) 18:55:08ID:???
YAMLですか。
勉強してきます。
0669nobodyさん2009/09/09(水) 21:36:02ID:???
そこでJSONですよ
0670nobodyさん2009/09/09(水) 23:12:42ID:???
JSON の IE 対策の最後の , が保守性低い
0671nobodyさん2009/09/09(水) 23:45:11ID:???
JSONはYAMLに比べたら人間が書きにくい。読みにくい。わかっていて言っているんだと思うけど。
以下のヤツは俺が使っている設定ファイル・・・を参考に書き直したもの。
ただのコメントが入った設定ファイルように見えるが、これがYAMLの文法なんだぜ。

# 各種プログラムのパス
bin:
 sendmail: '/usr/sbin/sendmail'
 nkf: '/usr/bin/nkf'

# テンポラリディレクトリ
tmp: '/tmp'

cache:
 # キャッシュディレクトリ
 dir: "/var/www/html/myapp/cache"

 # キャッシュの保持時間(秒)
 expires: 604800 # 1 week
0672nobodyさん2009/09/09(水) 23:47:08ID:???
YAMLの公式サイト
http://www.yaml.org/



↑YAMLで書かれていますw
0673nobodyさん2009/09/09(水) 23:52:12ID:???
そうか?YAMLだと空白とか訳分からんミスでエラーに
なったりする時があるから、JSONの方が好きなんだが。

プログラマならJSONの方が構造が直感的に分かると思うんだが。

一般人の理解しやすさは
YAML > JSON >>>>>>>>>>>>>> XML

プログラムからのいじりやすさは
JSON > YAML >>>>>>>>>>>>>> XML

という感じだと思うんだが。

あと記述する内容によって適したデータ形式があるから
プロジェクトごとに選択するしかないと思う。
0674nobodyさん2009/09/10(木) 00:02:10ID:???
俺としては一番理解しやすいのは ini なんだけど。
PHPの関数も用意されてるし
0675nobodyさん2009/09/10(木) 00:21:48ID:???
俺の場合JSも頻繁に触るから、確実に覚えているJSONの方が都合がいい
YAMLの可読性は素晴らしいとは思うけど、適度に記号入ってた方が好み
0676nobodyさん2009/09/10(木) 00:28:49ID:???
>>673
JSONにコメントないじゃん。

プログラムが受け渡すデータならJSONでいいけど、
人間が読み書きするならYAMLの方が良いよ。

あと必要ならデータ形式は変換すれば良いだけ。
0677nobodyさん2009/09/10(木) 00:31:57ID:???
あとキーが文字列なので、""で括って、"key":123としないといけないのもちょっといただけない。
0678nobodyさん2009/09/10(木) 00:43:06ID:???
単純な設定ならiniファイルかな・・・
複雑な設定ってWEBプログラムではそうそう無いと思うけど。

バリデーションルールを無理矢理YAML化してるの見ると、なんだかなぁと思う。
06796692009/09/10(木) 00:44:44ID:???
やべ俺シャレで書いたつもりだったのにマジでJSONをconfigに使う人いたんだw

YAMLは3年ほど前spycを使ってとり回そうとして挙動不審だったのでいい思い出がない。
みんなYAMLのパーサ何使ってるの?syck? spyc? preg使って自前?
その辺でおすすめあればもう一度トライしてみます。
0680nobodyさん2009/09/10(木) 01:00:39ID:???
spyc使っているけど、なんか問題ある?
なんか問題あったとして、今は修正されたんじゃない?

と思って今見てみたら、0.4.2がでてる。
パフォーマンス向上とな。入れ替えようw
0681nobodyさん2009/09/10(木) 01:21:40ID:???
データとして扱うもんならJSON使ってるなってか
フレームワークどころかPHPですらなくなってるぞ
0682nobodyさん2009/09/10(木) 08:30:09ID:???
PHPのフレームワークに詳しいみんなは、ハンバーグ作る時って
牛肉と豚肉の割合どのくらいにしてる?
0683nobodyさん2009/09/10(木) 09:09:16ID:???
俺もわけわからんエラー出たことあってphpでyaml使うのは好きじゃない
0684nobodyさん2009/09/10(木) 10:01:32ID:???
>>683
今安定してるよ
PEARのやつもあるし
0685nobodyさん2009/09/10(木) 10:16:04ID:???
syck と spyc で YAML の互換性がないのはもう直ったの?
あと、YAML ファイルがでかいと解析時間も遅いのが問題。
0686nobodyさん2009/09/10(木) 11:23:12ID:???
キャシュしないの?
0687nobodyさん2009/09/10(木) 12:08:36ID:???
iniかXMLで十分じゃね?

XMLなら内容の不備も事前に見つけられるし・・・
0688nobodyさん2009/09/10(木) 12:21:27ID:???
中身が一本のarrayでいいならserializeもいいかも。
0689nobodyさん2009/09/10(木) 13:05:12ID:???
>>686
初回の立ち上がりの遅さが気になって
0690nobodyさん2009/09/10(木) 20:08:02ID:???
YAMLの遅さが気になる場合は、
serialize/unserializeしてキャッシュするだろ?

設定ファイルなんて頻繁に変更するわけじゃあるまいし。
0691nobodyさん2009/09/10(木) 20:20:36ID:???
たかが設定ファイルのためにキャッシュ機構を組み込むほど
yamlの利便性>>>arrayなのか?という問題は難しいところ
0692nobodyさん2009/09/10(木) 20:21:35ID:???
ここで普通にPHPファイルでイイじゃんとか言ったら叩かれますかw
0693nobodyさん2009/09/10(木) 20:30:02ID:???
>>692
いいんじゃないかw

俺はINIファイル派だけどなw
0694nobodyさん2009/09/10(木) 20:59:40ID:???
スタティクファイル読み込みクラスのアダプターとしてYAML読み込みを実装
0695nobodyさん2009/09/10(木) 21:04:31ID:???
yamlっつっても、symfonyの設定ファイルみたいに、
そこにphpコードも書けないと不便だよね
そういうことを考えていくと余計に面倒になってくる
フレームワークに元々実装してあるなら使うけど
0696nobodyさん2009/09/10(木) 21:25:53ID:???
PHPネイティブでiniやXMLがあるのに、YAMLを選択する理由がわからんなぁ・・・。

iniはシンプルかつ、一般的。
XMLは複雑だが、Flash等と親和性がある(扱えるデザイナが多い/開発環境も多い)
JSONはJSとの親和性がある

YAMLは学習及び実装コストに見合うメリットはあるのだろうか?
ミーハーな感じがするわ。
0697nobodyさん2009/09/10(木) 21:35:20ID:???
JSONより楽ちんなところくらいかな
0698nobodyさん2009/09/10(木) 21:42:33ID:???
学習コスト、実装コストってwwww

そんなもん一時間かそこらだろうが。試すだけ試してみりゃいいじゃん。
0699nobodyさん2009/09/10(木) 22:21:24ID:???
PHPで完結してるならYAMLなんて使わず素のPHPでいいと思う。順番付のハッシュがある(しかない)PHPの変数構造体は十分分かりやすいと思う。
0700nobodyさん2009/09/10(木) 22:34:09ID:???
YAMLは半角スペースで階層を表現してる時点でなぁ・・・
意図しない半角スペースが入っていても値としては正常なモノとして扱われるのが厄介すぎる。

>>698
パーサからの実装を1時間そこらで出来るわけないだろw
0701nobodyさん2009/09/10(木) 22:38:25ID:???
すでに実装があるから必要ないだろ。
0702nobodyさん2009/09/10(木) 22:38:41ID:???
>>696
iniはセクションがどうとか、データの階層構造で
複雑なものが作れないんだわ。

YAMLだと自分が思ったままの理想のデータ構造そのまま定義できる。
楽なんだよ。

>>699
array( array( array( 地獄から抜け出せるぜw
0703nobodyさん2009/09/10(木) 22:46:53ID:???
arrayの表記がダサいのが一番問題なんだよな
[]とかで表記できたらいいのに
5.3もおもしろ機能ばっかり付けないでそういうの付けろ
0704nobodyさん2009/09/10(木) 22:49:13ID:???
>>701
どこの誰が作ったかもわからん実装を検証もせず使えるかw
0705nobodyさん2009/09/10(木) 22:51:08ID:???
>>704
OSから作ってんのか? それともCPUも?
0706nobodyさん2009/09/10(木) 23:08:51ID:???
>704
じゃあ検証すりゃいいじゃん
少なくとも自分で書くよりは速いぜ
0707nobodyさん2009/09/10(木) 23:21:30ID:???
>>704
PHPも自作なのか
0708nobodyさん2009/09/10(木) 23:28:45ID:???
天才の704さんがぱねぇっす。
もちろん他人の作った飯なんて、米なんてのも食べられないんですよね?
0709nobodyさん2009/09/10(木) 23:38:01ID:???
>>703
はげどうだわw
0710nobodyさん2009/09/10(木) 23:45:09ID:???
配列と連想配列の組み合わせとかarrayarrayarrayarrayで書いてて頭がおかしくなる
■ このスレッドは過去ログ倉庫に格納されています