トップページ⇒php
1001コメント302KB

[PHP]フレームワークについて語るスレ2[総合]

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/12/29(木) 18:03:44ID:PQZNoJbD
::フレームワーク一覧::
■Phrame
http://phrame.sourceforge.net/
■Mojavi Project
http://www.mojavi.org/
■Agavi
http://agavi.org/
■[ 日本発 ] Maple Project
http://kunit.jp/maple/
■[ 日本発 ] Ethna -PHPウェブアプリケーションフレームワーク-
http://ethna.jp/ethna-tutorial-startup-practice1.html
■[ 日本発 ] guesswork
http://www.guesswork.jp/
■Biscuit
http://bennolan.com/biscuit/
■PHP on TRAX
http://phpontrax.com/
■Web Application Component Toolkit (WACT)
http://www.phpwact.org/
■symfony
http://www.symfony-project.com/
■XOAD
http://wiki.xoad.org/index.php?title=Wiki_Home
■[ 日本発 ] pokox
http://www.glamenv-septzen.net/pukiwiki/index.php?pokox
■[ 日本発 ] 速構Web Framework
http://www.pm9.com/newpm9/itbiz/php/framework/
■CakePHP
http://cakephp.org/
0797nobodyさん2006/04/16(日) 20:12:41ID:???
デザイナに対して、アプリケーションロジックを壊させない、サーバーリソースに無闇にアクセスさせない、などの環境が楽に作れることが利点になるなら積極的に使ったらいいんじゃないか?
サイトの規模とかプロジェクトメンバーの人数とレベルなど色々検討して利点にならないと判断できるなら使わなければいいだけだし。

あとsmartyのラッパクラスをそのままViewにすることもできるし、デコレータやレンダラに組み込むのも容易にできるような仕組みになってる。
ヘルパーを拡張する機能(register_functionやregister_modifier)もちゃんとある。
だいたい<?php echoが頻出するソースよりテンプレートのほうがずっと見やすいしレイアウトの編集しやすいよ。

実際にはコンパイル結果はPHPのコードをキャッシュしててincludeするだけだから、生PHPと比べて極端に速度が落ちることは考えられない。
むしろ体感速度として遅くはない。
0798nobodyさん2006/04/16(日) 20:23:39ID:???
railsは、<% %> だっけ?
phpもasp形式のショートタグをデフォルト推奨にしてくれたらいいのに。どうだろう?
0799nobodyさん2006/04/16(日) 20:28:06ID:???
Smartyそのものの是非は割とどうでもよく、
今現在WEBデザインの効率を考える上で
どのような手法がホットなのか、
Smartyからどこへシフトしているのかが知りたい
0800nobodyさん2006/04/16(日) 20:28:48ID:???
phpなら生で
0801nobodyさん2006/04/16(日) 20:43:27ID:???
まあsmarty不必要論自体に関してはこれ以上議論の余地はなさそうだしな。
phpタグはxml宣言とかぶって仕方なく「<?php」にした歴史があるから、どうも記述形式が宙ぶらりんなんだよな。
「<?=」が使えたらかなりすっきりするとは思う。
でもこれもまた「<? echo」のショートカットであると定義されてしまっていて、short_open_tagの一種なのでどうにもならない。
0802nobodyさん2006/04/16(日) 20:46:37ID:???
<% %>
もうにしちゃえばいいのに
0803nobodyさん2006/04/16(日) 20:52:55ID:???
>>802
zendが移植性を意識しすぎてる間は無理でしょ。
しかもphp6では<% %>は廃止という噂も。
0804nobodyさん2006/04/16(日) 21:11:25ID:???
サイト見てたらsymfonyもAction=メソッドじゃん?
Zendもそうだし。こういうの流行ってるのかな?
guessworkもそうだね。
0805nobodyさん2006/04/16(日) 21:22:32ID:???
>>797
アプリケーションロジックを壊させないっていっても、どうせデザイナが
信用できない以上、コードチェックとテストはしなきゃいけないから手間は一緒じゃないかな?
オープンタグだけが問題ならそれこそrails風に h() という関数とか書けば?

あった方が好ましいとか、簡単に組み込めるからくらいの理由で余計なレイヤーを
追加するのはいやだな。
そういうのはどうしても無きゃダメっていうときだけ積極的になるべきじゃないか。
0806nobodyさん2006/04/16(日) 23:15:04ID:???
>>805
なんか言いがかりっぽいけど・・・

> アプリケーションロジックを壊させないっていっても、どうせデザイナが
> 信用できない以上、コードチェックとテストはしなきゃいけないから手間は一緒じゃないかな?

ぜんぜん一緒じゃないよ。smartyでヘンなことしようとしてたらくっきりわかるよ。
少なくとも不意に介入してしまう危険性の方は減るでしょ。

> オープンタグだけが問題ならそれこそrails風に h() という関数とか書けば?

<?php h($var) ?>って<?php echo $var ?>とほとんど変わんないじゃん。
{$var}と比べてごらんなさい。このすっきり具合。

> あった方が好ましいとか、簡単に組み込めるからくらいの理由で余計なレイヤーを
> 追加するのはいやだな。
> そういうのはどうしても無きゃダメっていうときだけ積極的になるべきじゃないか。

なんじゃそりゃ。フレームワークって楽するために余計なレイヤーをはさむものでしょ。
まあ好き好きなんだろうけど。
0807nobodyさん2006/04/16(日) 23:57:44ID:???
>>806
> <?php h($var) ?>って<?php echo $var ?>とほとんど変わんないじゃん。
> {$var}と比べてごらんなさい。このすっきり具合。
普通の知能があるなら、どれも全部変わらないよ。
ウェブデザイナをバカにしすぎ。
それに<?=$var?>でもいいじゃん。
XML宣言したいんだったら、その部分だけoutput buffering処理で付け足せばいい。
0808nobodyさん2006/04/17(月) 00:18:40ID:???
> なんじゃそりゃ。フレームワークって楽するために余計なレイヤーをはさむものでしょ。

他の部分はともかくここにはとても同意
余計なレイヤを挟みたくないなら素の PHP で書けばいいしね
0809nobodyさん2006/04/17(月) 00:26:13ID:???
>>807
> 普通の知能があるなら、どれも全部変わらないよ。

 修正子が入ると、見易さの差が大きくなって来る気がする。
0810nobodyさん2006/04/17(月) 00:54:42ID:???
{$var|escape}の代わりの<?=esc($var)?>ってラッパーを書けばいいってこと。
{$var|escape:"url"}と<?=urlesc($var)?>、どちらが簡潔か?
プログラマーにとっても、カスタム修正子作るより関数作る方が簡単だし、柔軟なものが作れる。
当然関数の方が処理速度も速い。
0811nobodyさん2006/04/17(月) 01:01:43ID:???
<% %>がデフォルトで使えるようになってくれたらいいのになぁ。
0812nobodyさん2006/04/17(月) 01:12:27ID:???
>>810
カスタム修正子より関数の方が簡単って、register_modifierのたった一文を書くか書かないかの違いだけだし。
あと処理速度は変わらんて。同じphpコードに変換されるんだから。コンパイル済みのコード見てみ。
0813nobodyさん2006/04/17(月) 03:02:12ID:???
そろそろ「単に言い張ってるだけ」になってまいりました
この話題たぶんずっとループだからやめにしない?
0814nobodyさん2006/04/17(月) 03:39:59ID:???
Railsの作者は「<% %>じゃテンプレートのプレビューができないじゃマイカ」という
声に対して、「Railsは動作確認のためにセットアップするのが簡単だから、デザイナー
にもRailsの動く環境を用意してあげて、そこでプレビューさせればいいじゃない」という
スタンスなんだけど(別途Webサーバを用意する必要がない)、SymfonyとかCakeは
そのあたりどうパクるつもりだろう。

0815nobodyさん2006/04/17(月) 08:38:25ID:???
>>810

{$var|escape|nl2br} は?

 修正子にパラメータが付いたときの表記は、確かに冗長だけど、
変数の後ろに処理を記述する方法は、直感的に理解し易い表記
方法だと思う。

>>813

 確かに、宗教論争っぽくなって来ている。
0816nobodyさん2006/04/17(月) 09:33:18ID:???
>>807
>普通の知能があるなら、どれも全部変わらないよ。
>ウェブデザイナをバカにしすぎ。
この人はできるウェブデザイナとしか仕事したこと無いんだろうね。
(この「できる」は「普通にできる」の範囲で)
もうどうしようもないの居るから。本当に。しかもかなりの確率で。
<?って入った時点で思考停止させるやつとか。

でも仕事は終わらせないとダメだからさ。
俺らにとって変わらないと思うくらいのことでもすり寄ってあげないとダメなんさ。
0817nobodyさん2006/04/17(月) 09:43:28ID:???
 ここでのsmarty不要論ってのは、smartyが異常に遅いという前提があると思うんだけど、
私の経験と、この前提は一致しない。(ベンチとった訳ではないけど)
 レイヤー増えるんだから、早くなることはありえないけど、通常は十分な速度が出ていると
思うんだけど、どうだろう?

 FW入れるという前提があって、そこで使うテンプレートが生PHPで記述するタイプと、
smartyを使って、初回起動時にsmartyが生成したphpを使うのと、速度的に、どの程度
の差があるのか比較した場合、実質的に差が無いのではないかと言う気がする。
0818nobodyさん2006/04/17(月) 09:51:08ID:???
>>814
 デザイナーは、スペックの高いマシン使っていることが多いから、
XAMPPとsandbox入れてあげればOKとか?
0819nobodyさん2006/04/17(月) 12:43:08ID:???
>>817
速度の差がないなら、なぜSmartyを推すの?

どうもsmarty擁護論の前提はデザイナとの連携みたいだけど、
デザイナとの連携が必要ない場合のメリットていうと
(例えば、見本ページが全ページ用意されていて、そこにデータを
流し込むだけとか、デザインはどうでも良いという客とか)
見やすい以外になにかあるのかな?

#◯◯は必要ありませんからその分安くしてください
#っていう客の是非はこの際おいといて...
0820nobodyさん2006/04/17(月) 13:01:23ID:???
patTemplateてのはどうなん?
0821nobodyさん2006/04/17(月) 13:03:54ID:???
オイラ的にSmartyは不要だと思うけど、
必要だと思う人は使えばよいのでは?

symfonyでSmartyしたいのならsmartyViewを使え良いと思ふ。
http://www.symfony-project.com/forum/index.php/m/1488/#msg_1488
0822nobodyさん2006/04/17(月) 15:06:47ID:???
>>819
817じゃないけど、速度に触れてるのは「smartyは遅い」とかいい加減な書き込みをしてたアホがわいてたからでしょ。
俺はsmarty擁護派というか、普通に便利だったり楽だったり見易かったりする側面もあると思うので、反対派に対しては積極的に反対するけど>>821の意見とは衝突しない。
結局ケースバイケース、十人十色、適材適所で何の不満もない。
必要のない人にまで押し付ける気はさらさらないね。
俺だってsmartyが常に最善の選択になるとまでは考えてない。
それでもソースが簡潔に書けるので俺は使う。
0823nobodyさん2006/04/17(月) 15:08:13ID:???
#
# s.php
#

<?php
require_once('Smarty/Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = './templates';
$smarty->compile_dir = './templates_c';
$smarty->cache_dir = './cache';
$smarty->config_dir = './configs';
$smarty->caching = 1;

$smarty->assign('num', mt_rand());
$smarty->display('index.tpl');
?>
<html>
<body>
{$num|escape}
</body>
</html>
0824nobodyさん2006/04/17(月) 15:08:44ID:???
#
# not_s.php
#

<?php
function e($str){
return htmlspecialchars($str);
}
$num = mt_rand();
?>
<html>
<body>
<?php print e($num) ?>
<body>
</html>
0825nobodyさん2006/04/17(月) 15:10:34ID:???
ab.exe -n 500 -c 10

s.php
Requests per second: 57.54 [#/sec] (mean)
not_s.php
Requests per second: 631.59 [#/sec] (mean)
0826nobodyさん2006/04/17(月) 15:11:53ID:???
ちなみにSmartyのescapeはださいと思う。
もっと短くして欲しいし、もっといえば
デフォルトでエスケープされるようにして欲しい。
0827nobodyさん2006/04/17(月) 15:20:24ID:???
おまけ

s.php(キャッシュなし)
Requests per second: 52.26 [#/sec] (mean)
0828nobodyさん2006/04/17(月) 16:08:07ID:???
>>826
デフォルトでescapeの設定はできたんじゃなかったっけ?
0829nobodyさん2006/04/17(月) 16:24:26ID:???
 フレームワークスレで、not_s.phpみたいなコード見るとは思わなかった。
 こんな竹槍戦法じゃ仕事にならないから、速度を犠牲にしてでもFW使う訳で・・・。

 中のコードが、もう少し現実的な分量になっただけでも、差はかなり縮まる。
0830nobodyさん2006/04/17(月) 16:47:44ID:???
速度差10倍超
0831nobodyさん2006/04/17(月) 17:08:14ID:???
とうとうこんなくそコードまで出してベンチ取り出す始末
単なる意地の張り合い(というか否定派だけか意地張ってるのは)になってるから
もうやめろってのに
0832nobodyさん2006/04/17(月) 17:15:06ID:r0ZxVhnD
まあグラフィックボードが速くても、CPUが遅ければシステム全体の処理は速くならない。
しかし、高い金を払って遅いビデオボードを買うのは不思議な行為だな。
0833nobodyさん2006/04/17(月) 18:52:31ID:???
俺はsmartyに最初にケチつけた書き込みを見た瞬間に頭の弱い子のレスなのだと悟ったよ。
まさかここまで再確認させてくれるとは思わなかった(唖然)
0834nobodyさん2006/04/17(月) 18:56:33ID:???
>>832
マトモな会話をしたいならたとえ話は話が発散するだけだからやめた方がいいぞ
ぜったい「例えが違う、それを言うなら……」って奴が出てきて話がそれるから

マトモな会話をしたくないならチラシの裏とかへどぞー
0835nobodyさん2006/04/17(月) 18:59:39ID:???
>>823-825
そんな小規模なサイトしか作れないなら確かにSmartyは不要だねw
いちおう同意してやったが、うれしいか?
08367762006/04/17(月) 19:10:11ID:???
>>776 なんだけど...
ちょっとフォローしとくとmySQL前提なら生産性は結構あがるし、
上部の構造の見通しは今のところよいので、cakeも言うほど悪くないと思う。
まだベータだしね。最終的な評価はもうすぐ出るはずのリリース版を見てからでもよいはず。

しかし、テンプレートエンジン云々って凄い荒れる話題なんだね(w
すげぇレスが伸びててビビった。


では、続きをどうぞ。
0837nobodyさん2006/04/17(月) 19:31:38ID:???
結局の所「ほとんどどっちでもいい」から
宗教論争になっちゃうんだと思ふ
0838nobodyさん2006/04/17(月) 19:36:07ID:r0ZxVhnD
10分の1以下のスピードでよければ、確かにどっちでもいいかも。
0839nobodyさん2006/04/17(月) 20:20:21ID:???
>>838

 数字の読み方分かって無いね。
 それぞれの逆数を取って、一回あたりの所要時間を出して引き算する。
 大雑把だけど、その値がsmarty導入によって増加した時間。

 実際のアプリは、このサンプルと比べて、2,3桁は処理量が増えるので、
その中でsmartyの所要時間がどの程度の比率になるかがポイント。

 せめてsymfonyで hello world を、生php、smartyテンプレートの両方で
作ってみて、比較するぐらいの事をしないとね。

 たぶん、「symfonyの遅さは異常」という結論が出てくる事でしょう。:-P

 ちなみに、使用するFrameworkはなんでも良い。symfonyは、生php,
smartyの両方が使えるという事なので挙げただけ。どんなFrameworkを
使っても同じ結論が出る筈。
0840nobodyさん2006/04/17(月) 21:00:57ID:???
smartyは生のPHPに比べて劇的に遅いというのは事実だから。
CPUやディスクが遅ければグラフィックボードが速くても全体のパフォーマンスが上がらないというのは事実だが、
そのグラフィックボードが遅いという事実を否定するものでもない。
0841nobodyさん2006/04/17(月) 21:05:08ID:???
例えば、Perlの場合、低機能だけど軽いH::Tと高機能だけど重いTT、どちらを使うかはケースバイケース。
はてなやmixiは組み合わせて使ってる。

しかし、smartyの場合どうか?
smartyのメリットを挙げれば、
・<?=h($var)?>より{$var|escape}の方が見やすい(と感じる)
・smartyの文法は知ってるけど、PHPの文法は知らないウェブデザイナが担当の場合
これくらいか。
デメリットは、
・10倍の遅さ
・smartyの学習コスト
・smartyの文法から来る柔軟性の制限
これでどちらがいいか選べばいい。
はっきり言って自明と思うけど。
0842nobodyさん2006/04/17(月) 21:31:54ID:???
>>841
>はっきり言って自明と思うけど。
じゃあ何でそんなたいしたメリットが無くデメリットが多いにも関わらず
楽天はsmartyを使っているの?
0843nobodyさん2006/04/17(月) 21:36:11ID:???
まあ、正直言うと、もう1個smartyのメリットってあって、
・テンプレートエンジンを使ってるオレってカッコいい。雑誌に使えって載ってたし。
というのもあるよ。
0844nobodyさん2006/04/17(月) 21:37:05ID:???
>>841と同じ疑問なんですけど、Smartyのようなテンプレートエンジンを使う理由として、読みやすいことを挙げている人に質問。
確かに <?php echo htmlspecialchars($var); ?> よりはSmartyのほうが見やすいと思うけど、
foreach文やif文なら、とりたてて生PHPよりSmartyとかのほうが見やすいとは思わないんですけど、そのへんはどうでしょうか。
つまり、「見やすい」のはechoまわりぐらいだけで、あとは生PHPでも>>841のようにh()とか定義してしまえばそんなにかわんないんじゃないかというのが印象です。

例えばJavaのMayaaだとテンプレートのHTMLデザインがまったく崩れないという特徴があるんですが、これだと生PHPと比較して明確な利点があるんで、テンプレートエンジンを使う理由はわかります。
しかしSmarty程度の機能だと、生PHPとの差別化ができてないんじゃないかと思うんです。Smartyでできることは、同じようにPHPでもできる。
これが、PHPだとごちゃごちゃすることがSmartyだとその名の通りスマートにできるというんならいいんですけど、今までの議論見る限り、echo周りぐらいしか利点があがってないようにみえます。

あと、テンプレートはデザイナーに任せると思いますけど、DreamweaverはPHPには対応しているんですが、Smartyには対応してないです(というか、いちいち個別の文法に対応するわけがない)。
それを考えても、なんでSmartyを選ぶのかがわからないので、Smarty(だけじゃないくて他のテンプレートエンジン)を選んでいる人に、Smartyを採用した積極的な理由というのを教えていただきたいです。お願い。
0845nobodyさん2006/04/17(月) 21:41:05ID:???
同じ人かな?
別に俺はそこまでSmartyをこき下ろすつもりはなかったんだが…
0846nobodyさん2006/04/17(月) 21:46:45ID:???
>>843
>・テンプレートエンジンを使ってるオレってカッコいい。
オレって?君は一人で開発してるの?
0847nobodyさん2006/04/17(月) 21:51:32ID:???
遅さが嫌なら
Smartyとほぼ同様の機能で速度は数倍のSimplateがあるよ。
だから結局どっちでもいい、と思う。
0848nobodyさん2006/04/17(月) 21:58:08ID:???
前にテンプレートエンジンのスレにも Smarty のみならず PHP でテンプレートエンジンを
使うこと自体を断固として否定する人いたよね。
0849nobodyさん2006/04/17(月) 21:59:09ID:???
>>844
>例えばJavaのMayaaだとテンプレートのHTMLデザインがまったく崩れないという特徴があるんですが、
ならphptalとか使えば
0850nobodyさん2006/04/17(月) 22:02:28ID:???
>>848
 同一人物の匂いがする。
0851nobodyさん2006/04/17(月) 22:16:49ID:???
なんか数年前のMLのログでも見かけたんだけど
同じ人だったらある意味すげぇ
0852nobodyさん2006/04/17(月) 22:18:17ID:???
>>844
>それを考えても、なんでSmartyを選ぶのかがわからないので、Smarty(だけじゃないくて他のテンプレートエンジン)を選んでいる人に、Smartyを採用した積極的な理由というのを教えていただきたいです。お願い。

俺ただの傍観者だけど、誰も844の問いには真正面から答えないの?
0853nobodyさん2006/04/17(月) 22:26:12ID:???
>>851
 そこのMLの人も、インチキくさいベンチ結果で遅いとか言ってたの?
0854nobodyさん2006/04/17(月) 23:35:13ID:???
じゃあSmartyを使う理由は
「特に意味は無いけどカッコイイから」
ってことでOK?
0855nobodyさん2006/04/17(月) 23:36:43ID:???
>>854
そう判断したのなら、それが正解。
0856nobodyさん2006/04/17(月) 23:58:54ID:???
>>849
Smartyを使う理由を聞いているんだから、phptalだしても意味ない

で、Smartyの利点って何?
0857nobodyさん2006/04/17(月) 23:59:53ID:???
>>844
echo まわりだけとはいえテンプレートの機能使用のほとんどはそこなんだから
それだけでも大きく違うと思うけど……

生PHPではちょっといじるだけですぐにPHPエラーとか吐くようになってしまうから,
それをいじる非プログラマから見て心理的抵抗感が大きい……とかー
Smarty はテンプレートの変更で致命的エラーを起こせるので個人的にはちょっとイマイチ.

生PHPでは出力する変数をグローバルに置いたりするので名前空間汚染が嫌,とかー

Smarty の場合でいうと,デフォルト変数修飾子で出力値の自由な加工をする枠組みを用意してある,とかー

> Smartyでできることは、同じようにPHPでもできる。
Smarty は PHP で書かれてるんだから,そりゃできなきゃ困るw
フレームワークってそういうものでしょ.
0858nobodyさん2006/04/18(火) 02:52:00ID:0WmA3v/B
symfony触ってるんだけど、
PhingってPEARからちゃんと入る?
install okって言われたのに、
>symfony propel-build-model
とやったら、Phing.phpがないと言われる。
仕方ないから
sandboxを解凍して、
プロジェクトディレクトリのlibに、Phingディレクトリをコピーしたけど…。
なんか納得(´・ω・)イカナス
0859nobodyさん2006/04/18(火) 03:34:34ID:???
>>857
>echo まわりだけとはいえテンプレートの機能使用のほとんどはそこなんだから
えー、それは違うだろ。foreachやifやincludeだって多用しないか?

>生PHPではちょっといじるだけですぐにPHPエラーとか吐くようになってしまうから,
>それをいじる非プログラマから見て心理的抵抗感が大きい……とかー
よくわかんね。Smartyのエラー表示は優れているのか?

>Smarty はテンプレートの変更で致命的エラーを起こせるので個人的にはちょっとイマイチ.
じゃあなにがいいのだ?ついでにその致命的エラーを詳しく。

>生PHPでは出力する変数をグローバルに置いたりするので名前空間汚染が嫌,とかー
生PHPでも、include()とextract()を使えば問題なくね?
function include_template($_context_, $_filename_) {
extract($_context_);
include($_filename_);
}

$context = array('str'=>'foo', 'int'=>123);
include_template($context, 'template.php');

>Smarty の場合でいうと,デフォルト変数修飾子で出力値の自由な加工をする枠組みを用意してある,とかー
有益な使い道を詳しく。何に使うのか思いつかん。

>> Smartyでできることは、同じようにPHPでもできる。
>Smarty は PHP で書かれてるんだから,そりゃできなきゃ困るw
SmartyでできることはPHPでもできる。だからわざわざSmartyを使う理由は何?ってことだろ。
SmartyはPHPで書かれているうんぬんは回答になってない。
つか、SmartyでできることはPHPでもできるけど、PHPでできることがすべてSmartyでできるわけでもないのか。

>フレームワークってそういうものでしょ.
今はテンプレートエンジンの話。
0860nobodyさん2006/04/18(火) 03:49:59ID:???
メリットがわからないなら、使わなきゃ良いだけだろ。
何をうだうだ言ってるんだか…
0861nobodyさん2006/04/18(火) 03:52:41ID:???
どっちでもいい派だから各々好きにすりゃいいと思うんだが、
肯定派の頭ごなしの「これだから嫌Smarty派は…」的なレスは正直どうかと思うが…
否定派の方が"まだ"論理的だわな。
0862nobodyさん2006/04/18(火) 04:58:52ID:???
話自体は面白いんだけど、フレームワークとはあまり関係ないよね。
テンプレートのスレで続けたら?
0863nobodyさん2006/04/18(火) 08:17:48ID:???
>>861
好きにすればいいものを否定派がムキになって否定して回ってるように見えるが

ところでフレームワークって言葉はこのスレではWeb構築フレームワーク以外には使わない方針なの?
テンプレートエンジンやらDAOやらも広義のフレームワークだと思うが
0864nobodyさん2006/04/18(火) 08:40:04ID:???
>>862に言われるまでSmartyスレ読んでるのかと思ってた・・・。
俺もどっちでもいい派だけど、ただSmartyって言うほど覚える事ある?
余計な機能使いすぎじゃないの?柔軟性なんてそんなに無くていいんだけど。
Viewでいろんな事させ過ぎちゃいかんよ。あくまで分離が目的なのだから。
だからPHPで出来ることがSmartyで出来ない事があるのは当たり前だと思ってるけど。
{php}ってあるけど、あれは使ったらいけない、裏技的なものだと思ってるし。
また、「h()のように定義してしまえば」って言うが、なにかWebアプリ作成するたびに、
何か表示させるたびに定義するの?使い回せばよい?じゃあそれを他人に勧められる?
それはメンテしたり引き継いだりする人がかわいそうかなって思うな。
保守性があがると(速度面での)パフォーマンスが落ちるってのはしょうがない。
Symfonyなどのように「最初から色々用意されている」なら、慣れた方で良いと思うよ。
08658642006/04/18(火) 08:45:25ID:???
>>863
あ、すまん、せっかく話題変えようとしてくれたのに・・・。

俺はAgaviでDB_DataObject使ってるな。
0866nobodyさん2006/04/18(火) 08:54:48ID:???
>>863
だな
テンプレートを使う必要があって、性能的に仕様を満たしていれば
採用実績が多く情報も豊富なsmartyが選択肢に入ってもおかしくない

遅くて仕様を満たせなければ使わなければいいだけの話でしょ

フレームワークにしてもテンプレートエンジンにしても
採用実績が多い事自体が採用基準になるのは良くある事
潜在的なバグ出しがされていて情報も多いと判断できるから

なんでむきになって否定派が否定するのかがわからん
0867nobodyさん2006/04/18(火) 09:26:41ID:???
Smartyは結局最終的にはPHPに変換されるんだから
最初っからPHPでかけばいいじゃない。
馬鹿かお前ら?一度ならずニ度三度死ね。
0868nobodyさん2006/04/18(火) 09:29:19ID:???
>>866
う〜ん、脳みそあるのかなこの人は…
0869nobodyさん2006/04/18(火) 09:29:37ID:???
どうもsmartyを否定してるやつら(一人?)はsmartyの難点を踏み台にして「PHPテンプレートでいいじゃん」という結論を共有したかったのではないかとエスパー。
俺も一人でささっと作るときはPHPテンプレート使うし、PHPをそのまま使えることは利点だと考えてる。
一つのファイルで済ませるくらいのときもテンプレート部分は下部にまとめてロジックに一切依存させないようにしたりとか。

でもSmarty普通に良いよ。
Smartyオブジェクトの構築とキャッシュチェックくらいしか実質上オーバーヘッドないんだし。
>>864の
> Viewでいろんな事させ過ぎちゃいかんよ。あくまで分離が目的なのだから。
に禿同。触れようと思ってたけど先に書かれてしまった。
>>866の
> 採用実績が多く情報も豊富なsmartyが選択肢に入ってもおかしくない
これも禿同。
それに記述の簡潔さ、View周りの機能(フィルタやカスタム修正子/プラグイン)もそろってるなら、Smarty使う理由としては特に文句のつけどころないと思うけど。

あと、エスケープの話が出てたけど、Smartyのラッパクラス作ってassignメソッドをオーバーライドすれば、テンプレートに渡される全ての変数に自動的にhtmlspecialcharsを通すようにもできるよ。
0870nobodyさん2006/04/18(火) 10:17:05ID:???
>>867
PHPは結局最終的には機械語に変換されるんだから
最初っから機械語でかけばいいじゃない。
馬鹿かお前ら?一度ならずニ度三度死ね。
0871nobodyさん2006/04/18(火) 10:36:36ID:???
肯定してる馬鹿どもは思考停止してるだけだろ。
なんとなく賛成派の方が多そうだから賛成しとくみたいな。
このまま「各々が・・・」と逃げられたら、否定派の理論も書くだけ無駄。
論理的に反証してくれないとどうにもならん。
0872nobodyさん2006/04/18(火) 10:40:31ID:???
そろそろフレームワークの話に戻そうよ。
この話題は結局結論が出ないし、面白くない。
0873nobodyさん2006/04/18(火) 10:44:14ID:NsVFQKmo
FlickrではSmarty使ってるようですね。
http://phpspot.org/blog/archives/2005/09/flickr.html
0874nobodyさん2006/04/18(火) 10:54:59ID:???
>>872
たしかに。
871のような非論理的な書き込みがあると話の発展性に欠けてきてダルくなるな。
煽り方のパターンが微妙なんだよね。
0875nobodyさん2006/04/18(火) 12:37:48ID:???
smartyはPHPのコアに入れるか、バイナリのモジュールにしない限り、
PHPの組み込み関数に比べて大幅に速度低下するのは避けられない。
比べる方がアンフェアといってもいいくらい。
0876nobodyさん2006/04/18(火) 12:50:49ID:???
ZFのサイトが変わった。
くるのか?
0877nobodyさん2006/04/18(火) 12:55:18ID:???
>>876
本当だ。変わった。
でも見た目だけだw
0878nobodyさん2006/04/18(火) 12:57:42ID:???
かっちょいいロゴマークになってるね。
0879nobodyさん2006/04/18(火) 12:59:11ID:???
smartyはtemplateとキャッシュが簡単に利用できるのが利点だと思ってたよ
静的キャッシュと動的キャッシュができるフレームワークってあるの?
0880nobodyさん2006/04/18(火) 13:07:35ID:???
そうそう。キャッシュが使えるのは大きなメリット。
smarty擁護派はなんでこのメリットを主張しないのか不思議。
もっとも自前でキャッシングの実装しても大して手間じゃないけど。
0881nobodyさん2006/04/18(火) 13:17:47ID:???
そうだね。
0882nobodyさん2006/04/18(火) 13:27:44ID:???
Pear DBとかsmartyは、どういうものか把握せずに使ってる人が多そうだな。
DBエンジンが変わっても、DBクラスをそのまま使えるのがメリット、みたいな説明あるけど、
DBエンジン変えたら、SQLやアルゴリズムの全面見直しは必須だつーの。
0883nobodyさん2006/04/18(火) 14:16:23ID:???
だっちゅーの♥
0884nobodyさん2006/04/18(火) 14:34:30ID:???
>>864
>また、「h()のように定義してしまえば」って言うが、なにかWebアプリ作成するたびに、
>何か表示させるたびに定義するの?使い回せばよい?じゃあそれを他人に勧められる?
>それはメンテしたり引き継いだりする人がかわいそうかなって思うな。

PHPには標準ですでにnl2br()とか便利な関数があるのに、わざわざプラグイン覚えなきゃいけないほうがかわいそう。
Smarty使っているけど、PHPとSmartyの両方をマスタした要員を確保しなきゃメンテできないので失敗したと思ってる。


>保守性があがると(速度面での)パフォーマンスが落ちるってのはしょうがない。

生PHPなら保守性もパフォーマンスも落とさずに済む。保守性をあげるために必ずしもパフォーマンスを落とす必要はない。両立させることは可能。

でもSmartyってそんなにパフォーマンスわるいのか?内部でPHPファイルにコンパイルしてキャッシュするからそんなに遅くないと思うんだが。
体感的には、Smartyによる速度低下は感じない。それよりDBまわりのほうが体感速度に直に効いてくる。
0885nobodyさん2006/04/18(火) 14:45:52ID:???
>>866
>テンプレートを使う必要があって、性能的に仕様を満たしていれば
>採用実績が多く情報も豊富なsmartyが選択肢に入ってもおかしくない

今はその「テンプレートエンジンを使う必要があるのか」という話だろ。「どのテンプレートエンジンを使うか」という話じゃない。
採用実績でいうなら、Smartyより生PHPのほうが実績も情報も上。


>遅くて仕様を満たせなければ使わなければいいだけの話でしょ

だから、Smarty使ってる人になぜ使ってるのか聞いてるんでしょ
「使わなくていい」と開き直るまえに明確な利点をちゃんと説明してやれ


>なんでむきになって否定派が否定するのかがわからん

べつに肯定派も否定派もむきになってないだろ。イタイやつはいるけど。
正当な理由が示せないからってそんな話にもっていくなよ。
0886nobodyさん2006/04/18(火) 14:53:26ID:???
>>884
Smartyの覚えることってめちゃくちゃ少ないじゃん。
テンプレート側でかわいそうなほど覚えることがあったってことは、PHPからテンプレートに渡すデータが複雑すぎたんじゃないか?
極端な話がSmarty側は変数の出力、if、foreach(or section)と、修正子を2、3個覚える(覚えさせる)だけで十分効力を発揮するよ。
テンプレートにはほとんどHTMLしか書いてないのが理想だし、それなりに実現可能だと思う。
SmartyにPHPと同等のロジックを無理やりやらせたようなテンプレートだったら、そりゃメンテもキレるわな。

>>885
「Smartyを使う理由」自体はいくつも挙げられてきたじゃん。
それで魅力を感じなければ使わなければいいって話。
みんながみんなおまいと同じ立場、視点、論点から話してるわけでもないしな。
まあとりあえずもちつけや。
0887nobodyさん2006/04/18(火) 14:55:30ID:???
もう秋田
テンプレートエンジンについて議論するなら相応しいスレがあるよ
http://pc8.2ch.net/test/read.cgi/php/1118799352/
0888nobodyさん2006/04/18(火) 14:57:26ID:???
>>887
Smartyだってフレームワークだろ。
そんなに別の話題がよけりゃ自分でネタ出せ。
おもしろいネタなら皆自然にそっちに流れるだろ。
0889nobodyさん2006/04/18(火) 15:02:33ID:???
>>869
>Smartyオブジェクトの構築とキャッシュチェックくらいしか実質上オーバーヘッドないんだし。

そうだよな。Smartyが遅いと問題になったことは、自分のところでは今までない。

>>>864の
>> Viewでいろんな事させ過ぎちゃいかんよ。あくまで分離が目的なのだから。
>に禿同。触れようと思ってたけど先に書かれてしまった。

生PHPよりSmartyのほうがうまく分離できることを示せばいいんじゃないか。
3秒考えたけど思いつかんかった。

>それに記述の簡潔さ、

それはechoまわりだけじゃないかという指摘があったんだが。それ以外でも簡潔だと思うか?
echoまわりだけでも見やすくなるのはたしかにうれしいんだが(おれも最初はそれが理由で使ってみた)、
そのわりには労力が多いし欠点も見えてきたから、労力に見合うほどじゃなかったと反省している。

>View周りの機能(フィルタやカスタム修正子/プラグイン)もそろってる

これはPHPの関数で済むな。
Smartyのmodifierが、PHPの関数より便利だということを示せば、Smartyを使う理由になるんじゃないか。
2秒考えたけど思いつかんかった。

>あと、エスケープの話が出てたけど、Smartyのラッパクラス作ってassignメソッドをオーバーライドすれば、テンプレートに渡される全ての変数に自動的にhtmlspecialcharsを通すようにもできるよ。

デフォルトでhtmlspecialcharsを通して、ある箇所だけ通さない(エスケープしない)ということはできる?高木ひろみつ氏のブログで書かれてたような、セキュリティ重視の仕様。
そういう仕様なら、Smartyを使(r
1秒考え(r
0890nobodyさん2006/04/18(火) 15:16:12ID:???
>>889
> 生PHPよりSmartyのほうがうまく分離できることを示せばいいんじゃないか。
デフォルトでテンプレートファイルはテンプレートにしか使えないようになってるじゃん。
生PHPでもポリシーを策定すれば分離できるね。

> それはechoまわりだけじゃないかという指摘があったんだが。それ以外でも簡潔だと思うか?
いや、基本的にechoまわりだけだよ。

> これはPHPの関数で済むな。
そうだね。

> Smartyのmodifierが、PHPの関数より便利だということを示せば、Smartyを使う理由になるんじゃないか。
記述が短い。あとは好みの問題

> デフォルトでhtmlspecialcharsを通して、ある箇所だけ通さない(エスケープしない)ということはできる?高木ひろみつ氏のブログで書かれてたような、セキュリティ重視の仕様。

よくわからんけど、
class FooSmarty extends Smarty {
 function assign($name, $value) {
  /* ここに好きなように書いてくれ */
  parent::assign($name, $value);
 }
}

以上のような理由から俺はSmarty使ってる。
もちろん主観的、個人的な趣向もなくはないけど。
俺だってSmartyが全Webアプリで使うべきであるほど完璧な出来だとは考えてないから、嫌いな人がいるのも普通にうなずけるよ。
このスレ読んでてもよくわかるな。
反対派の人は「使いたい人がいてもおかしくはない」とすら考えられないほど熱烈に反対してるの?
0891nobodyさん2006/04/18(火) 15:17:25ID:???
>>879

キャッシュ機能が目的でSmartyを使っているやつってどのくらいの割合でいるの?
おれんところでは、Smartyが遅くて問題になったことはないから、出力キャッシュを使ったことはない。
そういうやつのほうが多いんじゃない?もしそうなら、出力キャッシュ機能以外が目的でSmartyを使ってるんだから、その理由を知りたい。

>>880

共有サーバじゃなくて、自前でサーバを用意しているなら、アプリケーションサーバレベルでのキャッシュがいちばん楽だよ。
あるURLにマッチしたら、サーバがキャッシュを返す。PHPすら呼び出さないから高速だし、バックエンドの言語に依存しない(Javaでも使える)。
ただし、ポートレットのようにひとつのページに複数のキャッシュを持たせる必要がある場合は使えないけどね。
0892nobodyさん2006/04/18(火) 16:02:38ID:???
>>886
Smartyの覚えることが多い少ないじゃなくて、そもそもSmartyのようなテンプレートエンジンが必要なのかどうかってこと。
生PHPと比べてSmartyの強い利点がなければSmartyを使う必要がない。じゃあSmartyを使う利点とは何か、あるいは利点といわれているものが本当に利点なのかを議論してるんじゃないか。

どうしても覚える量にこだわるなら、生PHPなら覚えることすら必要ない。

>テンプレート側でかわいそうなほど覚えることがあったってことは、PHPからテンプレートに渡すデータが複雑すぎたんじゃないか?
>極端な話がSmarty側は変数の出力、if、foreach(or section)と、修正子を2、3個覚える(覚えさせる)だけで十分効力を発揮するよ。
>テンプレートにはほとんどHTMLしか書いてないのが理想だし、それなりに実現可能だと思う。

それは生PHPでも同じこと。if, foreach と関数を2、3個覚えるだけで十分効力を発揮する。わざわざSmartyを使う理由にはならん。

>SmartyにPHPと同等のロジックを無理やりやらせたようなテンプレートだったら、そりゃメンテもキレるわな。

だれがキレたのかしらんが、うちのメンテがキレるとしたら、生PHPでもおんなじことがおんなじようにできるのに、
わざわざテンプレートエンジンを導入してしまったおれに対してだなorz
正直すまんかった

>「Smartyを使う理由」自体はいくつも挙げられてきたじゃん。

それがほんとうに意味のある理由かどうかを議論しているんだが。

>それで魅力を感じなければ使わなければいいって話。

なんか勘違いされてるっぽいんだが、おれはSmartyを使ってるやつを非難してないよ。
今までSmartyタイプのテンプレートエンジンを使う利点とされてきたのが、ほんとうに意味のある理由なのかどうか、
生PHPと比べてほんとうに魅力があるのかを議論して検証したいだけ。

今まで挙げられた理由のなかで、いちおう理由として成り立ちそうなのが
・echoまわりが簡潔になる
・キャッシュ機能がある
ぐらいか。あとの理由はあんまり理由にならんな。これがtapestryやmayaaだと明確な理由があるんだが。
0893nobodyさん2006/04/18(火) 16:16:36ID:???
892の言ってることは的確だな。
「本当に」魅力があるのかと問われてる以上、肯定派の言うことはどれも弱い。

それでいいんじゃないか?
最初からたぶん誰も熱くはなっていないし双方落ち着いてるとは思うが、
話すんのめんどくさくなっちゃった人はかなりいるだろうから。
0894nobodyさん2006/04/18(火) 16:23:05ID:???
Smarty使うと不便なことの方が多いと感じたよ。
そのままではShift_JISで使えなかったり、
ちょっと特殊なことをしようとすると、いろいろ調べる必要があったり、
調べた結果できないとわかったり、できそうでできないことがあったり。
結局、生PHPに戻りました。
0895nobodyさん2006/04/18(火) 16:32:19ID:???
>>890
>デフォルトでテンプレートファイルはテンプレートにしか使えないようになってるじゃん。
>生PHPでもポリシーを策定すれば分離できるね。
ポリシーは簡単に破られるから、その点でいうと生PHPよりSmartyのほうが分離を強制できるということか。

>いや、基本的にechoまわりだけだよ。
残念

>> これはPHPの関数で済むな。
>そうだね。
残念

>記述が短い。あとは好みの問題
残

>よくわからんけど、
>class FooSmarty extends Smarty {
> function assign($name, $value) {
>  /* ここに好きなように書いてくれ */
>  parent::assign($name, $value);
> }
>}
この方法では、「ある箇所だけエスケープしない」というのが実現できないな。
テンプレートに書かれた情報をもってこれないから。なんかいいアイデアあるといいけど。

>反対派の人は「使いたい人がいてもおかしくはない」とすら考えられないほど熱烈に反対してるの?
別にそんなやつはいないんじゃない?ちょっと否定意見がでただけで「使いたくなければ使うな」とほざいて議論を逃げようとするやつはいるけど。
おれはSmarty使って失敗したと思ってるから、他に使ってるやつがどんな理由で使っているか知りたいだけ。
今のままだと次の仕事では生PHPを使おうと思ってるけど、おれの知らない利点がSmartyにあればあれば考えを改めて次もSmartyを使う。

つか、生PHPで済むならアダプタ作んなくてすむから俺フレームワークが簡潔になってウマーと思ってるのは内緒
0896nobodyさん2006/04/18(火) 16:38:57ID:PuLKXxqh
確かにそろそろsmarty外してもいい気がしてきはするが、
逆にADODBみたいにダイナミックリンクやスタティックリンク可能な標準的テンプレートモジュールが出てもいいかなとも思う。
■ このスレッドは過去ログ倉庫に格納されています