【総合】PHPフレームワークを語るスレ8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/17(水) 16:01:41ID:72/gWtt1http://pc11.2ch.net/test/read.cgi/php/1181350116/
0253248
2007/10/30(火) 14:11:52ID:???>>251は俺に対する皮肉(?)でしょ?
別に<?php echo 〜 ?>に限った事じゃなく、自作O/Rマッパーとか。
また、 function o(){・・・} やら function d(){・・・} やら、自分で使う分には
全く問題ないと思うよ。俺も自分で使う分にはよく使うよ。すっげー便利。
ただ、自分以外もメンテするものに使うのはどうかな?と思ってる。
そもそもそんな関数名、命名規則違反じゃないの?そのプロジェクトで。
で、そんなものをいっぱい量産するのはどうなの?って事。
と、思ったけど、場面々々で有効、無効あるから、この言い争いは無意味だったね。
すまん。
0254nobodyさん
2007/10/30(火) 14:15:45ID:???何はどうあれ、ちゃんとコードを書いて晒した >>242 に賛辞を送りたい
へこむなよ > 242
0257nobodyさん
2007/10/30(火) 14:44:04ID:???勝手に晒して「それすらできないやつが」などどほざいた挙句、
すぐにつっこまれている奴に賛辞は送れないな
0258nobodyさん
2007/10/30(火) 14:45:12ID:???0260nobodyさん
2007/10/30(火) 15:02:18ID:???0261nobodyさん
2007/10/30(火) 15:06:27ID:???0263nobodyさん
2007/10/30(火) 15:27:52ID:???0264nobodyさん
2007/10/30(火) 15:33:37ID:???0265nobodyさん
2007/10/30(火) 15:51:39ID:???> つっこむのもなんだけど、 #{} の中に } が入るとエラーになるよ。
それは仕様。Perlじゃないから式の中に { } が出てくるのはまれ。実用上問題ない。<?= ?> とか <%=h %> よりはこっちのほうがいいと思うがの。
どうしても使いたいなら
<?php $var = ' } を使った式'; ?>
<span>#{$var}</span>
とすりゃあいい。もしくは改造するか。
でも file_put_contents() で LOCK_EX の指定ってできるんだ。知らなかった。サンクス。
>>248
問題はそこじゃない。この程度の関数で済むものを、わざわざ大げさでかつ大して便利でもないテンプレートエンジン使ってることを問題にしてるんじゃがの。
Smartyと同じ規模のものを自作関数で作ったというなら248のいうことももっともだが、たかが数十行に対してこの見解は的外れ。
0266nobodyさん
2007/10/30(火) 15:55:34ID:???0267nobodyさん
2007/10/30(火) 15:56:55ID:???0268nobodyさん
2007/10/30(火) 15:57:47ID:???0269nobodyさん
2007/10/30(火) 16:05:12ID:???書き換えだけでも十分役に立つ。<?php echo htmlspecialchars() ;?> は頻繁に使う機能だから、それが簡潔になるのは大きい。
そもそも元のPHPが十分な機能をもっているんだから、あまり付け加える機能はない。
といいつつ、自分が使っているのはレイアウトテンプレートをサポートしているがの。
>>251
バグってどのこと?まさか>>245のことをいってるんじゃないよね・・・
もし
> #{} の中に } が入るとエラー
が問題なら、Smartyでも同じ問題おこるから、そっちのほうが大問題だがの。
Smarty派はそれについてはスルーかの。
>>252
数十行のコードすら自分でバグ直せないのか。。。そいつはすまんかった。話の前提が間違ってた。そういうことならSmartyでもなんでも人任せにできるものを使ってくれ。
わしにしたら、バグがあったとしても、小さい自作関数ならその場ですぐに直せるけど、Smarty規模になると自分ではなかなか直せんから、自作関数の方を選ぶがの。メンテナンスのことを考えた上で。
まさかSmartyにはバグがないとかいうやつはおらんと思うけど。
0270nobodyさん
2007/10/30(火) 16:15:27ID:???preg_replace()だけだからわざわざ作る必要も無い気がする。
(初心者には便利だわな。)
しかし、ここはフレームワークのスレなんだと何度言ったら(ry
・・・まぁ、ここにはフレームワークとテンプレートエンジンの区別も付かない奴しか居ないんだからしょうがないか。
0271nobodyさん
2007/10/30(火) 16:26:18ID:???>わしにしたら、バグがあったとしても、小さい自作関数ならその場ですぐに直せるけど
>>248の言っていることを一蹴している割に、ぜんぜん理解してないことがバレバレw
>>270
ふ〜ん、ごりっぱですね
0272nobodyさん
2007/10/30(火) 16:27:11ID:???270は嫌々言いながらも攻められるのが好きなドMなんだ。そうだろ?
0273nobodyさん
2007/10/30(火) 17:08:04ID:???最近のFWは<?php echo htmlspecialchars() ;?>なんてしないよ
アサイン時に一括エスケープするから
symfony,ci,モダンなFWはだいたいそう
smarty派も非smarty派もテンプレートエンジンに拘ってる時点で旧式
もしかして過去から書き込んでるのか?
0275nobodyさん
2007/10/30(火) 19:05:37ID:???馬鹿ばっかりか
0276nobodyさん
2007/10/30(火) 20:06:47ID:???0277nobodyさん
2007/10/30(火) 20:12:33ID:???0278nobodyさん
2007/10/30(火) 20:36:44ID:???0279nobodyさん
2007/10/30(火) 20:49:16ID:???0280nobodyさん
2007/10/30(火) 21:08:44ID:???色々ググって見たのですが、スキルが低いため、説明を読んで見てもいまいちイメージ出来ません。(依存性の注入?とか。。)
シングルトンで各オブジェクトを引っ張って来てるみたいですが、このあたりが肝だったりするのでしょうか。
くだらない質問かと思いますがよろしくお願い致します。
0281nobodyさん
2007/10/30(火) 22:57:38ID:???Javaスレにいったほうがいいんじゃない?
そっちのほうが活発だから。
あとシングルトン自体はあまり肝じゃない。
ぶっちゃけ規約で制限してもできることだから。
0282nobodyさん
2007/10/30(火) 23:00:33ID:???> ツールを作る人間もいるというのに、使えただけで俺はすごいとか妄想できるって幸せだな
すでに存在するツールを作っても車輪の再発明と言われるように、
どんなアプリにも共通する土台(フレームワーク)を再発明したら馬鹿だろ・・・
使えるものは使わないとね。
0283nobodyさん
2007/10/30(火) 23:01:41ID:???それらを自作してるやつって一人で作ってるか、プロジェクトで自分の
作ったフレームワークが採用されたってことか?
なんかここの流れ見てると、プロジェクトの各メンバーが
「今回のプロジェクトでは俺の自作フレームワークを使おうぜ!」
となりそうな気がする。
プロジェクトで使うためのフレームワークを社内開発したというならまだわかるんだけど。
0284nobodyさん
2007/10/30(火) 23:06:45ID:???> なんだQuickFormも使いこなせない奴が多いんだな
QuickFormってたしか、コードでFormの項目にあたる部分を定義したら
それに相当するHTMLとチェックコードを生成してくれるライブラリだっけ?
コードでデザイン作るようなものでMVCになっていない。
これ使ってもデータベースと連携するところまでは楽にならない。
ということでフレームワークを使い始めてからは
こんなライブラリは使えないと思うようになったよ。
0285nobodyさん
2007/10/30(火) 23:28:26ID:N/0PbTQK0286nobodyさん
2007/10/30(火) 23:35:28ID:???フレームワークのビューの部分でしかない。
0287nobodyさん
2007/10/30(火) 23:35:47ID:N/0PbTQK毎日毎日同じようなもの作るんだったら良いかもしれないけど、忘れた頃に作るとなるとマニュアル見て、('A`)メンドクセ
0288nobodyさん
2007/10/30(火) 23:36:30ID:???あの発想自体はいいと思う
0289nobodyさん
2007/10/30(火) 23:43:01ID:???>>273
>アサイン時に一括エスケープするから
エスケープしたいのとしたくないのが混じってるときはどうするの?
0290nobodyさん
2007/10/30(火) 23:48:16ID:???rawコンテナみたいのも提供してるからそこから取り出すように出来てる
FWを使っていてエスケープせずに表示したかったことは
まったくといっていいほどなかった、というのは藤本神のお言葉
0291nobodyさん
2007/10/30(火) 23:49:31ID:???当時の俺にコンポーネント指向ってのが頭にあったらもう少し
うまく使いこなせてたんじゃないかなと思ってる。 > QF
0292nobodyさん
2007/10/30(火) 23:50:32ID:???>なんかここの流れ見てると、プロジェクトの各メンバーが
>「今回のプロジェクトでは俺の自作フレームワークを使おうぜ!」
>となりそうな気がする。
なるわけがないー
全員ひきこもりでコミュニケーション能力がないとその可能性はあるけど、
普通は互いに考えをぶつけ合ってひとつのものを作るわな。
たいがいは一人スキルの高い人がいて、その人が中心になるけどな。
283こそ創造的なプロジェクトの経験がなさそう(あったらごめんね、でも経験があればそんなこと書かないよ)
0293nobodyさん
2007/10/31(水) 00:07:52ID:???>rawコンテナみたいのも提供してるからそこから取り出すように出来てる
これ、blogやwikiみたいなの作るときは無駄過ぎね?
$html = parse_wiki($wiki);
みたいなのがあって、これをビューに渡して表示させたいとき、当然HTMLエスケープはせずに表示するよね。
でもアサイン時に一喝してHTMLエスケープしたら、$html も問答無用でエスケープされるんでしょ?
wikiやblogだと $html の中身は長くなるから、必要のないエスケープが毎回強制的に実行されるのはすごく無駄だ。エスケープ処理はけっこう重いよ?測ってみたらわかると思うけど。
>FWを使っていてエスケープせずに表示したかったことは
>まったくといっていいほどなかった、というのは藤本神のお言葉
それほんとか?
$html = nl2br(htmlspecialchars($text));
みたいなのしょっちゅう出てくるけど。
あとは<pre<で表示するコードを色付けして表示したいとき
<pre<<?php echo htmlspecialchars($code); ?></pre<
ではなくて
<pre<<?php echo parse_proram($code, 'javascript'); ?></pre<
にするし。
レイアウトテンプレートを使ったら当然エスケープしないし。
0294nobodyさん
2007/10/31(水) 00:08:12ID:???そりゃ作るシステムによりすぎだろう
WikiとかCMSみたいのとか作ってると
エスケープしたくない場合なんていくらでもあると思うよ
symfonyのESC_RAW引数とかは使い勝手がよく出来てるなーと思った
遅そうだけどキニシナイ
0295nobodyさん
2007/10/31(水) 00:09:42ID:???</pre<
なんか魚っぽいなw
0296nobodyさん
2007/10/31(水) 00:12:55ID:???いや、だから互いに考えをぶつけあって
社内開発用フレームワークみたいのを
作ってるんならわかるんだって。
もしくは個人でやってるなら別に好きにやればいいと思うし。
実際このスレの住人てどんなプロジェクトでやってるのかふと疑問に思ったんだよ。
0298nobodyさん
2007/10/31(水) 00:28:39ID:???0299nobodyさん
2007/10/31(水) 00:28:43ID:???0300nobodyさん
2007/10/31(水) 00:29:22ID:???システムによりけりってアンタ、掲示板ひとつ作るにしても nl2br(htmlspecialchars($text)) は出てくるだろ。
SNSでのプロフィール表示とか。
>エスケープせずに表示したかったことはまったくといっていいほどなかった
と言い切れるって今までどんなシステム作ってきたんだよ。
>>295
すまんかった
ところでsymfonyもCIも、一括エスケープされるのは強制的なの?
こんな余計な機能はいらないからオフにして、かわりに好きなテンプレートエンジンが使えるようにしてほしい。
もしオフにできないなら、CI使おうとおもってたけどやめようかな。
0301nobodyさん
2007/10/31(水) 00:32:39ID:???そういう意見があったことのほうが非常に意外で興味深い
0302nobodyさん
2007/10/31(水) 00:35:20ID:???オンラインショップのバックエンドとか旅券発行システムとかで
エスケープ必要なかったシステムはいくつも見てきているけど
だからって「全くといっていいほど」とはとても思えない程度にはあったなぁ
CI知らないけどSymfonyではエスケープの方式をいくつかから選択できるよ
何もしない、闇雲に全部やる、
普通の表示は全部やるけど必要なものは別オブジェクトからrawで取り出す、など。
0303nobodyさん
2007/10/31(水) 00:41:28ID:???>>290
やっぱり一括エスケープするのはよくないよ。
単にエスケープし忘れを防ぎたいとか、htmlspecialchars() が面倒というだけなら、ビューがデフォルトでエスケープするようになってればいいだけ。
素のPHPはそうなってないけど、そうなっているようなテンプレートエンジンを選べばいいだけの話。
一括エスケープは、目的のための手段のひとつに過ぎない。手段はほかにもあるし、一括エスケープが最適な方法とは思えない。
なんか最新のフレームワークでそうなっているからとか、えらい人がそう言ったからとか、そんなことで決めてないか?
>>290からはそんな匂いがプンプンする。
もし最新のフレームワークがSmarty使ってたら、または○○神がSmarty使ってたら、Smarty使うことが最高の方法ということになるのか?
でもSymfonyもCIも一括エスケープが基本なのか。CI使おうと思ってたけど萎えた。
こんな機能いらんから、テンプレートエンジンが自由に選べられるようにしてほしい。
オフにできるならCI使ってみる。
0304nobodyさん
2007/10/31(水) 00:43:24ID:???どんなに注意してもかならず誰かやらかすよ
XSSの歴史がそれを証明してる
0305nobodyさん
2007/10/31(水) 00:43:47ID:???>CI知らないけどSymfonyではエスケープの方式をいくつかから選択できるよ
これいいね。Symfonyにしようかな。
0306nobodyさん
2007/10/31(水) 00:48:38ID:???トータルで見たらエラーの量を低減するのは明らかだからね。
0307nobodyさん
2007/10/31(水) 00:51:23ID:???したくないならそりゃしないでもいいだろう
ってか>>303の決めつけにワロタ
思いこみの深さからいうと昨日のアニヲタ君かな?
君の方が権威に弱そうだったから権威っぽい名前を出しただけのことだよw
0308nobodyさん
2007/10/31(水) 00:53:26ID:???ベッキーがなんと言おうとこれだけは譲れない
0309nobodyさん
2007/10/31(水) 00:54:51ID:???何が問題なのかさっぱり分からん。
0310nobodyさん
2007/10/31(水) 01:07:20ID:???詳しい処理見た訳じゃないが、
フレームワーク作者的に言えば
アサイン時にエスケープの有無は選べるように普通するだろ
そんなの考えたらすぐ分かるじゃん
少なくともテンプレートの層でエスケープするより
入り口でエスケープするアプローチの方がスマートだと俺は思うね。
0311nobodyさん
2007/10/31(水) 01:13:25ID:???データの加工をV前に済ます(Vは極力弄らない)という点からみるとそのほうが妥当かも。
0312nobodyさん
2007/10/31(水) 01:17:50ID:???ビューのなかで繰り返しのコード(for等)をなくすアイデアない?
0313nobodyさん
2007/10/31(水) 01:19:31ID:???0314nobodyさん
2007/10/31(水) 01:27:43ID:???変に叩かせてしまった
面識はないけどすみません
要は、藤本氏の言葉は、ホワイトリスト方式の方がいいよという文脈だった
俺もそう思う
0315nobodyさん
2007/10/31(水) 02:25:14ID:???Ethna的にはnl2br()はSmartyのnl2br修飾子を使うんだと思う。
0316nobodyさん
2007/10/31(水) 03:03:20ID:???ttp://blog.enjoitech.jp/detail.php?aid=128
ここで普通にQF2使ってるんだけど、
QF2の状況ってどんな感じなのかしら。
ちょっと前にみたらバージョンがえらく低かったんで、
まだまだ実用外だと思っていたんだが。
QFはアイディアは面白いと思うのよ。
色々と問題はあるけど。
0317nobodyさん
2007/10/31(水) 09:59:12ID:???MVC的にはエスケープはViewがやるのが正しいんでないの?
ViewがHTMLとは限らないんだから、
どんなエスケープ処理が必要か知ってるのはViewだけであるべきでしょ。
0318nobodyさん
2007/10/31(水) 10:41:33ID:WWjGeZUw0319nobodyさん
2007/10/31(水) 10:44:11ID:???$file = $tpl_dir. 'template.tpl';
if (!file_exists($file)) {
$contents = preg_replace(
array(
'/^<\?xml/',
'/#\{(.*?)\}/',
'/%\{(.*?)\}/'
),
array(
'<<?php ?>?xml',
'<?php echo $1; ?>',
'<?php echo htmlspecialchars($1); ?>'
),
file_get_contents($file)
);
file_put_contents($file, $contents);
}
include $file;
こんな感じか。変数がかぶるとかなら関数作って渡せばいいだけやね。
うちだと、symfonyのviewの部分に、こんな感じのを作って入れてる。
(といってもそのままじゃなくて、<input />等のタグを、ヘルパに変換して代入する処理も入れてる訳だけど。
0320nobodyさん
2007/10/31(水) 10:44:52ID:???0321nobodyさん
2007/10/31(水) 10:52:17ID:???エスケープ漏れをなくしたいなら、view側がデフォルトでエスケープする仕様になってればいいだけ。
それで十分だし>>293のような問題も起きない。
それでも一括エスケープの方がいいという根拠は何?
0323nobodyさん
2007/10/31(水) 14:58:56ID:???0324nobodyさん
2007/10/31(水) 15:16:03ID:???別にViewでやったっていいだろ?
テンプレートコーディングがうんこだと言うのは認めるが。
アサイン時のオートエスケープがどうか?という提起なのであって、
それをやるオブジェクトがViewだろうとControllerだろうとWebアプリじゃ違いはないじゃん。
あと文句言ってる奴はちゃんとオートエスケープの実装と意図を見てから言えよ。
かなり的外れになっちゃってるぞ。
0325nobodyさん
2007/10/31(水) 15:18:09ID:???0327nobodyさん
2007/10/31(水) 15:44:34ID:???0328nobodyさん
2007/10/31(水) 15:47:17ID:???0329nobodyさん
2007/10/31(水) 16:06:33ID:???0330nobodyさん
2007/10/31(水) 16:27:25ID:???0332nobodyさん
2007/10/31(水) 16:32:49ID:???0333nobodyさん
2007/10/31(水) 17:18:03ID:???0334nobodyさん
2007/10/31(水) 17:18:17ID:???$_POSTと$_COOKIEのデータを自動的にエスケープする設定はあるみたいだが、まさかこれのことではないよな?
テンプレートを出力するときに勝手に一括エスケープされるのかと思ったけど、そうでもないみたいだし。
$data = array('var'=>'<b>FOO</b>');
$this->load->view('blogview');
とかしてみたんだけど、テンプレートでは $var はエスケープされてなかった。
モダンなフレームワークであるCodeIgniterでは一括してエスケープしてくれるから htmlspecialchars() は使う必要ないと>>273が語ってくれてるんだけど、見つからん。
もちろん>>273は知ってるはずだから、すまんがさくっと教えてくれ>>273
0335nobodyさん
2007/10/31(水) 17:25:15ID:???>あと文句言ってる奴はちゃんとオートエスケープの実装と意図を見てから言えよ。
>かなり的外れになっちゃってるぞ。
なにがどう的外れか書かないと、おまえこそ的外れだといわれるぞ。
オートエスケープ?の問題点が指摘されてるんだが、解決策は示されてない。
問題点が問題点でないというなら、解説希望。
0336nobodyさん
2007/10/31(水) 17:26:23ID:???記憶は定かではないが、今見てないならないのかもな
自分で拡張したciに実装しただけかもしれん
ciって筋はいいけど、ちょっと機能的には弱いだろ
まあいずれにしろテンプレートレベルでエスケープするのは
いい方策ではないと思うがな
0339nobodyさん
2007/10/31(水) 17:36:36ID:???レゴじゃないんだよな
なんかパーツがでかいっていうか
0340nobodyさん
2007/10/31(水) 17:43:01ID:???コンポーネント間で依存性をほとんどなくしたい
ただ設定クラスとかContextを作ると、そこに依存性が生まれてしまう
何にも依存してないコンポーネント群を、
それらに依存するコアコンポーネントが動かす形にしようかとか考えてる
0341nobodyさん
2007/10/31(水) 17:48:56ID:???0342nobodyさん
2007/10/31(水) 17:50:36ID:???どのくらいからDI系コンテナのメリット出てくるんですかね
0343nobodyさん
2007/10/31(水) 18:01:53ID:???ユニットテストも書きやすくなる
依存が多いとモックとか用意するの面倒だ
DIコンテナとかは要らないと思うけど
0344nobodyさん
2007/10/31(水) 18:08:30ID:???フレームワークのフレームワークにすることが出来るから
フルスタックFWの「この機能だけ欲しい」ってなっても
それだけを切り離すことは難しいから
ごっそり捨てるはめになる
0345nobodyさん
2007/10/31(水) 18:17:17ID:???php5でstrictエラー出まくってうぜえええ
0346nobodyさん
2007/10/31(水) 18:25:32ID:???4用の箇所を洗い出すための機能みたいなもんなんだからさー
0347nobodyさん
2007/10/31(水) 18:30:36ID:???ありがd
0348nobodyさん
2007/10/31(水) 19:02:17ID:???0349nobodyさん
2007/10/31(水) 19:17:59ID:???0350nobodyさん
2007/10/31(水) 20:05:57ID:???0351nobodyさん
2007/10/31(水) 20:12:16ID:???エラーメッセージはしょぼいし
パスワード忘れた時のナビゲーションもない
0352nobodyさん
2007/10/31(水) 20:13:09ID:???>まあいずれにしろテンプレートレベルでエスケープするのは
>いい方策ではないと思うがな
だから、それはなんで?理由が述べられてないじゃん。俺、エスパー力が少ないから336の考えが読み取れない。
モダンなフレームワークがそうしてるから?ナントカの神様がそうしてるから?
>>337
実物ってどれのこといってるの?
指摘された問題点に対する回答は?
■ このスレッドは過去ログ倉庫に格納されています