【PHP】フレームワークについて語るスレ13【総合】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/03/24(火) 01:21:08ID:???●国外産●
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/
0075nobodyさん
2009/05/05(火) 15:57:12ID:???例えば、
<? ?> #=> <?php ?>
<?= ?> #=> <?php echo ?>
に加えて、
<?== ?> #=> <?php echo エスケープ処理(); ?> (処理内容はPHP_INI_ALLで設定可能)
みたいなタグを追加する、とか?
こんな感じで実装されれば、ショートタグ全盛時代がくるだろうな。
0076nobodyさん
2009/05/05(火) 17:54:07ID:???0077nobodyさん
2009/05/05(火) 18:15:20ID:???<input type="text" class="hoge page" style="text-align: right;" name="hoge" value="<?php echo htmlspecialchars($hoge, ENT_QUOTES, 'UTF-8');?>"/>
<input type="text" class="hoge page" style="text-align: right;" name="hoge" value="<?== $hoge ?>"/>
うん。下の方が嬉しいな。
「文字数を節約する」のは特にメリットはないけど、
読みやすくする、その場所で大事でないことはあんまり目に入らないようにするっていうのは
とてもメリットがある。
0078nobodyさん
2009/05/05(火) 18:52:25ID:???0079nobodyさん
2009/05/05(火) 18:59:28ID:???どうせphp本体に手を入れるのなら、「出力は全て自動エスケープされる」モードを作った方がよくね。
俺は今、テンプレートに変数を割り当てた時点(FW側)で全てエスケープされるようにして、
変数にHTMLタグを割り当てた場合、テンプレート側でデコードするようにしている。
但し、>>74の言うようにオブジェクトは除いて別扱いせざるを得ない。
<?php echo や <?= なら自動エスケープ。<?== ならそのままってなほうがいい。
0080nobodyさん
2009/05/05(火) 19:13:28ID:???理屈はわかるけど、あくまでも、特殊処理をする方を特殊な書き方にした方がいいと思うな。
magic_quotesの悪い前例もあることだし。
それにそうしないと、例えばファイルに書き出すときにはモードをオフに、とかしなきゃいけなくなる。
まあおれの場合は実装の絡まない妄想だが。
0081nobodyさん
2009/05/05(火) 19:46:40ID:???安全性を考えたらdefaultでescapeのほうがいいと思うけどね。
008279
2009/05/05(火) 20:32:40ID:???ちょっと書き方が悪かった。
あくまでFWのview出力において全て自動エスケープ。
たとえば $view->display()としたときにdisplayメソッド内で自動エスケープをONにして
テンプレートスクリプト(生PHP)を処理していく感じ。
0083nobodyさん
2009/05/06(水) 03:44:19ID:???magic_quotes以上のゆとり思考だろ・・・
<?== ?> タグ程度なら、自前で実装出来そうだし、
用意された機能で実装すりゃいいんじゃねーの?
それをテンプレートエンジンと呼ぶかどうかは別にして
0084nobodyさん
2009/05/06(水) 03:50:45ID:???0086nobodyさん
2009/05/06(水) 11:41:38ID:???前段二行は、まあPHPとはそういう言語(?)だと。
他にもmb_stringの自動変換とかsafe_modeとか、もろもろの余計なお世話で
成り立ってるんだし、他の機能と比べればHTMLエスケープの標準オプション化くらい
なんてことはない。
ただ、エスケープの為だけにタグを"スクリプトでの"実装はあり得ないなw
後半はそういう意図に読めるが、それだけのテンプレートエンジンなんて筋が悪すぎる。
PHP拡張としてパーサレベルで実装してあれば便利かな、ってものだと思う。
0087nobodyさん
2009/05/06(水) 12:10:05ID:???{$var}で解決よ
0088nobodyさん
2009/05/06(水) 12:22:12ID:???>>68,71 (とそのちょっと前から)の流れだってば。
そりゃ現実的にはみんないろいろやってるだろうけど、
仮定の話はそんなに面白くないかな?
0089nobodyさん
2009/05/06(水) 12:54:21ID:???0090nobodyさん
2009/05/06(水) 13:24:40ID:???すごく消極的だが、前提ライブラリは少なければ少ない方がいい、とか。
Smarty以外にもテンプレートエンジンはあるし、どれも標準にはなり得ない。
最近のFWでもテンプレートエンジンを必須の前提にしていないものが大半だが、
その理由と同じってのでどうだろう。
俺は使えればSmarty使う派だから想像だけど。
0091nobodyさん
2009/05/06(水) 17:24:24ID:???実装出来る手段が用意されていて、特別困るものでも無いのに標準機能として盛り込んでしまうと、
裏側の処理を理解していないゆとりPGが泥沼にはまるのが目に見えるわ・・・
そもそもPHPはHTMLを出力するためだけのモノでも無いし、
HTML出力に関しても100%エスケープが必要なものでもない。
0092nobodyさん
2009/05/06(水) 19:26:56ID:???> 大半の環境ではオフにされているんだが・・・
これらがデフォルトになったのはごく最近の話って認識なんだが。
register_globalsだけが少し早かったと。
実際今までだってここら辺に嵌るのがある意味通過儀礼のようなもんだっただろw
んで、逆にそういう知識が常識として定着した現状なら、いろんな機能がついてても
それほど問題にもなるまいという風に考えてしまうな
0093nobodyさん
2009/05/07(木) 13:41:10ID:???0094nobodyさん
2009/05/08(金) 22:46:49ID:???0095nobodyさん
2009/05/08(金) 23:30:04ID:???これからのフレームワークは具体的にどう変化するの?
0096nobodyさん
2009/05/08(金) 23:34:42ID:???それだけではそんなに変わりそうな気もしない
何より、フレームワークはあんまりすぐには新バージョンに追随しないと思う
0097nobodyさん
2009/05/08(金) 23:54:56ID:???継承して拡張するのは楽になりそう。
0098nobodyさん
2009/05/09(土) 00:09:06ID:???これか
ttp://jp2.php.net/lsb
self::、parent:: に static:: が加わるってことでいいのかな。
しかしこれを読んだだけでは、parent::のstatic::バージョンも欲しくなりそう。
無いって事は、普通はいらないってことなのだろうか。
0099nobodyさん
2009/05/12(火) 06:50:24ID:V/2qAUy/・最初のgetInstance時に初期化パラメータを渡す
・staticなsetXXメソッドを実装して初期値を渡す
選択肢としてはこんくらい?
0100nobodyさん
2009/05/12(火) 08:28:25ID:???0101nobodyさん
2009/05/12(火) 08:45:51ID:???コンストラクタでの初期化にこだわってたけど
その方がキレイかも・・ありがとう
0102nobodyさん
2009/05/12(火) 13:04:35ID:WVFMmzYl0103nobodyさん
2009/05/12(火) 21:23:25ID:???0105nobodyさん
2009/05/15(金) 20:00:09ID:wv3qSkZjhttp://www.shuwasystem.co.jp/products/7980html/2277.html
0106nobodyさん
2009/05/15(金) 21:55:29ID:???0107nobodyさん
2009/05/16(土) 02:33:23ID:???フレームワークは、Webアプリケーションの全体構造の仕組みを提供し、
プログラマが書くべきコード量を減らしてくれます。
特に複雑で大規模なアプリケーションになるほど効果は大きくなります。
本書では、注目のPHPフレームワーク4種
(CakePHP/Zend Framework/symfony/Codelgniter)の基本を解説。
MVC(モデル、ビュー、コントローラー)アーキテクチャの基礎のほか、
データベース接続やバリデーションの方法や各フレームワークの特徴がわかりますので、
自分の開発するWebアプリケーションに必要なフレームワークを比較・選択することができます。
各フレームワークを収録したCD-ROM付き。
---
注目…?
0108nobodyさん
2009/05/16(土) 02:47:04ID:???setXXとあんまかわんないけどfactoryメソッド作って、コンストラクタ叩いてstaticなsingleton変数に突っ込めば?
0109nobodyさん
2009/05/16(土) 22:53:53ID:???0110nobodyさん
2009/05/17(日) 00:54:10ID:???PHP5でコンストラクタもプライベートに出来るようになったし、
staticなメンバ変数も保持できるようになったわけだし、
実利がまったくないってことないんじゃない?
ライブラリ作った場合にライブラリ側で
そのオブジェクトは常に一つしか作成されないのかどうかを出来るっていうのも
ポイントだとおもうけど。
0111nobodyさん
2009/05/17(日) 01:56:03ID:???Singletonは必要ないというのも了見が狭いなあ。
>>110みたいにコーディング上の利点は十分にあるのに。
0112nobodyさん
2009/05/17(日) 08:42:30ID:???>PHPではグローバル変数を使え。
の二言で全て台無し。
コンストラクタをプライベートにするもよし、
コンストラクタ内でstaticインスタンスの存在をチェックして、例外を投げるとかで実装上さほど問題無い。
(マジックメソッド系も実装必要ね)
0113nobodyさん
2009/05/17(日) 15:17:13ID:???0114nobodyさん
2009/05/17(日) 16:11:16ID:???グローバル変数ほとんど使った事無い
0115nobodyさん
2009/05/17(日) 17:37:11ID:???グローバル変数使ってアクセスしたほうが速かったような気がするんだが、どうなんだっけ。
0116名無し募集中。。。
2009/05/17(日) 17:50:22ID:wjR/zk6c0117nobodyさん
2009/05/17(日) 18:47:40ID:???プロパティよりローカル変数にアクセスするほうが速いのは確かなんだけど
マイクロベンチマークで「こんなに違うんですよ」と言えるだけで
実際のアプリケーションの動作からすると誤差の範囲でしかない。
0118nobodyさん
2009/05/17(日) 22:42:55ID:???0119nobodyさん
2009/05/18(月) 00:28:50ID:???0120名無し募集中。。。
2009/05/18(月) 01:30:21ID:wP2DRNT9みんなが言ってるグローバル変数ってそのことじゃないと思うぞ
0121nobodyさん
2009/05/18(月) 02:42:31ID:???つか、グローバル変数云々の問題って
複数人がかかわるようなもの作ったり、いろんなものを組み合わせて使ったり
そういうときに名前(変数名)がぶつかって不具合でる可能性がないようにするため
クラスぷろぱてーやらローカル変数やら使おうって話でしょ
すべてを一人で把握するような規模でかつ独立してるもんを想定してるんなら
グローバルだろうが問題ないとはおもうよ。わしはやらんが
だいたいそんなしょっぱい規模のものだったらフレームワークとは無縁w
0122nobodyさん
2009/05/18(月) 02:52:59ID:???0123nobodyさん
2009/05/18(月) 08:56:15ID:???0124nobodyさん
2009/05/18(月) 09:25:31ID:???「ぶつかるわけがない」と思ってる奴が他にもいたらぶつかるだろ
0125nobodyさん
2009/05/18(月) 11:03:40ID:???0126nobodyさん
2009/05/18(月) 11:08:25ID:???でも、むしろこっち使ってもらう方が何かといいかw
0127nobodyさん
2009/05/18(月) 13:45:20ID:???保守する人のことも考えて。
0128nobodyさん
2009/05/18(月) 15:51:21ID:???0129nobodyさん
2009/05/18(月) 21:30:16ID:???0130nobodyさん
2009/05/19(火) 00:43:21ID:???技量不足知識不足と宣言してるも同義
まともなPGなら意図的にそんなことやる意味ないことくらい理解してる
0131nobodyさん
2009/05/19(火) 04:39:13ID:???0132nobodyさん
2009/05/19(火) 04:43:36ID:???0134nobodyさん
2009/05/19(火) 09:05:36ID:???0135nobodyさん
2009/05/19(火) 10:35:21ID:???クラス引数≧配列引数≧普通の引数>>>グローバル変数
で書くべきだな。
グローバル変数を引数として扱うメリットって何なの?
デフォルト値とか型チェックとか面倒な事しか思い浮かばないんだが・・・
0136nobodyさん
2009/05/19(火) 12:26:18ID:???ログとか全体的な設定とか
0137nobodyさん
2009/05/19(火) 12:40:47ID:???それなら却って、クラス変数やシングルトンなんかでごにょごにょするよりは
PHPのうまみがあるかも。
すくなくともglobal 変数名よりは反感も少ないだろうし、使ってるうちに少しは
多用に疑問も感じるはず。
0139nobodyさん
2009/05/19(火) 13:50:36ID:???というか、グローバル禁止ならそいつらもオブジェクトにでも詰め込んでそれを引数にして関数を呼べよと。
0140nobodyさん
2009/05/19(火) 14:33:19ID:???グローバル定数の代替え手段を理解していない素人が喚いているだけ?
0141nobodyさん
2009/05/19(火) 15:09:14ID:???フレームワークの話題でなければスレ違い、って意図だと解釈しておく。
配布されているような汎用フレームワークでは、さすがにグローバル変数は使えないだろう。
ただ、そこら辺で実稼働してるような俺流フレームワークなどの規模や必要性なら、
ガチで原理主義なOOPコーディング(っぽいもの)なんかより、読みやすく
手入れしやすいグローバル変数の使い方もできるだろうし、されてるかもね。
要は使い方だって。
0142nobodyさん
2009/05/19(火) 17:05:54ID:???>手入れしやすいグローバル変数の使い方もできるだろうし、されてるかもね。
全く想像つかんw
複数人で開発した際に変数名の競合を防げなかったり、
引数としての型チェックやデフォルト値が設定出来ないわけだが…
コーディング規約を徹底管理すれば何とかなるが、
後者はテストを含め、実装には無駄な手間がかかるだろう。
ロジックや変数の局所化はOOP以前の話だと思う。
0143nobodyさん
2009/05/19(火) 17:45:17ID:???だから、$_POSTやら$_GETやら$_COOKIEにどこからでも代入出来る時点で、
変数の局所化なんて崩れてるって。
# こいつらを最初にいちいちコピーして空っぽにするのが最近は普通なのかな?
なんで「グローバル変数を使う」 = 「無制限に読み書きする」に直結するんだろう。
読むだけなら何の問題もないって。
規約って言ったって、(決まってる初期処理以外で)$GLOBALSに代入する奴は死刑、
ってだけでいいじゃないか。あくまで、$GLOBALSのみ使うっていう前提だけど。
俺はまあまず使わんけど、便利そうな使い方は想像できなくもないよ。
0144143
2009/05/19(火) 17:59:28ID:???自分がそう思うのは、関数(メソッド)の外でスクリプトを書くって事がないからか。
もう全部、下敷きのディスパッチャがある環境でしかスクリプト書かないし、
トップレベルのスコープで書かれた部分って数枚で、増えない。
もしトップレベルでいろいろ書く必要があるなら、グローバル変数に
代入しないわけにはいかないか。
そうなると、さすがにいきなりグローバル変数の参照は怖くてできんわな。
まあどっちにしろ、局所化できるかどうかの話だけだとは思う。
0145nobodyさん
2009/05/19(火) 18:04:18ID:???>変数の局所化なんて崩れてるって。
言語レベルで周知されている値と、ユーザーグローバル変数を同列には語れないかと。
(素人でも $_POST を上書きしちゃマズイって事くらいは理解しているだろう)
一部の局所化が既に崩れているから、さらに崩して良いという考えかい?
>なんで「グローバル変数を使う」 = 「無制限に読み書きする」に直結するんだろう。
制限事項を規約で作るくらいなら、定数化なりクラス化するのが普通じゃないかね。
言語レベルで制限御出来る機構が提供されているのに、それを使わない理由がわからない。
0146nobodyさん
2009/05/19(火) 20:12:14ID:???全然関係ないけどね。
0147nobodyさん
2009/05/19(火) 21:13:04ID:???しかもフレームワークそんな関係ない
0148nobodyさん
2009/05/19(火) 21:39:39ID:???そういう意味では関係ある、ような無いような
0149nobodyさん
2009/05/19(火) 21:54:40ID:???0150nobodyさん
2009/05/20(水) 00:06:53ID:???0151nobodyさん
2009/05/20(水) 02:14:41ID:???0152名無し募集中。。。
2009/05/20(水) 02:19:49ID:by98XaTN0153nobodyさん
2009/05/20(水) 02:35:48ID:???0155nobodyさん
2009/05/20(水) 13:20:19ID:???サービスロケーターを実現するために、他のクラスに依存しないということにおいてグローバル変数は有用だと思う。
PEARが使ってるのもそういう理由じゃないかな。
スコープがグローバルなのはクラス名も同じ。名前衝突解決法も同じで良いと思うしPEARもそうしてる。
0156nobodyさん
2009/05/20(水) 13:50:50ID:???グローバル変数だと知らぬ内に値が書き換えられる可能性がある。
この差は大きいと思うので、極力クラス化している。
0157nobodyさん
2009/05/20(水) 16:36:09ID:???グローバル変数なんて石ころみたいなもん
0158nobodyさん
2009/05/20(水) 20:18:38ID:???0159nobodyさん
2009/05/20(水) 20:24:27ID:???が、そんなことしてもメリットは薄いし、初心者に優しいPHPの良さを消すことになる。ので、PHPのセッション管理は連想配列のまま。
0160nobodyさん
2009/05/20(水) 23:22:06ID:???0161nobodyさん
2009/05/20(水) 23:37:13ID:???クラスオブジェクト作るときってただ単純にセッションを管理したいってだけで作るわけじゃないだろ。
ある一定の目的が定義されてて、その定義にあわせて管理することを考えたときに
一つの意味の集合であるクラスを作るのであって。
PHPのデベロッパーはセッション管理をすることの意味なんて凄く広義的に考えて設定してるから、
グローバルな連想配列になってんじゃないのか。
0162nobodyさん
2009/05/20(水) 23:39:50ID:???ユーザが勝手に作るグローバル変数をスーパーグローバル変数と同列で語るのがおかしいわけで…
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:???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いや、それ以下か。シングルトンいらんって話が、引数を渡すのにとか名前がぶつかるからって話にダウングレードしてるし
0172nobodyさん
2009/05/21(木) 13:53:57ID:???0173nobodyさん
2009/05/21(木) 14:55:07ID:P779ZgB3あいつら、ZendFrameworkやCodeIgniterの事なんて気にもしてないよ。
■ このスレッドは過去ログ倉庫に格納されています