【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/
0053nobodyさん
2009/04/21(火) 15:54:29ID:???0054nobodyさん
2009/04/21(火) 18:01:27ID:???0055nobodyさん
2009/04/21(火) 22:20:27ID:8G0hNlN6http://www.cbook24.com/shop/ProductDetail.aspx?sku=9784798022574&CD=F1000049&WKCD=F1000037
0056nobodyさん
2009/04/22(水) 23:08:42ID:???0057nobodyさん
2009/04/22(水) 23:50:12ID:6FnKU0By0058nobodyさん
2009/04/23(木) 12:00:54ID:???0059nobodyさん
2009/04/23(木) 22:39:36ID:???0060nobodyさん
2009/04/26(日) 21:10:58ID:???0061nobodyさん
2009/04/27(月) 10:17:04ID:???0062nobodyさん
2009/04/27(月) 12:51:24ID:???同意。
・PHPは簡単だから、デザイナーやHTMLコーダーでもすぐに理解できる(分業が目的でもテンプレートシステムは不要)
・生PHPの方が、テンプレートの独自記法よりも多機能で便利
条件分岐や繰り返しは、生PHPで書いても可読性は確保できます
http://codeigniter.jp/user_guide_ja/general/alternative_php.html
だから、MVCのVも、Smarty等のテンプレートシステムはなくてもOK
0063nobodyさん
2009/04/27(月) 14:03:59ID:???0064nobodyさん
2009/04/27(月) 14:36:44ID:???0065nobodyさん
2009/04/27(月) 15:02:38ID:???テンプレートエンジンの思想は、PHP構文を置き換える目的では無いよ。
・デザイナに与える権限を最小限にする(PHPを直に触らせない)
・結果的にコード記述方法が統一される
・PHP以外の言語からも再利用出来る
・キャッシングや独自タグなどの拡張が楽
・可読性が生PHPと比べて高い
等メリットはあるし、ケースバイケースだね。
0066nobodyさん
2009/04/28(火) 18:10:44ID:???FWに付いているページキャッシュ機能が使えればOKでしょうか
>>64
計画はご利用的に
>>65
>・PHP以外の言語からも再利用出来る
その発想はなかった…1本!
0067nobodyさん
2009/04/28(火) 20:27:38ID:???ただHTMLもレイアウトを記述するためのものでは無いので、PHPやHTMLに毛が生えたような構文である必要はなく、
独自のテンプレート記述言語もいいかもしれない。
生産性の観点から言うとひとつのテンプレートからPC用HTML、携帯用HTML、Ajax用データetc.を吐けたりすると嬉しい。
0068nobodyさん
2009/04/29(水) 15:17:25ID:???VのところでSmarty等のテンプレートエンジンを使うか、使わないか?
HTMLの中にPHPのコードを埋め込めるから、生PHPそれ自体が一つのテンプレートエンジンとして使える。
生PHPよりも高機能なPHP製テンプレートエンジンってないから、生PHPは便利ですよ。
以前はSmarty使っていたけど、今は生PHPに戻りました^^
テンプレートエンジンを使う人には、それなりに理由があるだろうから、別に否定はしないけど。
0069nobodyさん
2009/04/29(水) 16:03:31ID:???lol
0070nobodyさん
2009/04/29(水) 17:32:01ID:???0071nobodyさん
2009/04/29(水) 18:06:52ID:???0074nobodyさん
2009/05/04(月) 19:33:15ID:???テンプレートの記述でちょろっと書いたらescape(または非escape)ってのが今のところベターな気がする。
生のPHPで E() とかグローバル関数を作って使ってもいいんだろうが、一気にきちゃなくなりそうだ。
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:???■ このスレッドは過去ログ倉庫に格納されています