[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:???phpもasp形式のショートタグをデフォルト推奨にしてくれたらいいのに。どうだろう?
0799nobodyさん
2006/04/16(日) 20:28:06ID:???今現在WEBデザインの効率を考える上で
どのような手法がホットなのか、
Smartyからどこへシフトしているのかが知りたい
0800nobodyさん
2006/04/16(日) 20:28:48ID:???0801nobodyさん
2006/04/16(日) 20:43:27ID:???phpタグはxml宣言とかぶって仕方なく「<?php」にした歴史があるから、どうも記述形式が宙ぶらりんなんだよな。
「<?=」が使えたらかなりすっきりするとは思う。
でもこれもまた「<? echo」のショートカットであると定義されてしまっていて、short_open_tagの一種なのでどうにもならない。
0802nobodyさん
2006/04/16(日) 20:46:37ID:???もうにしちゃえばいいのに
0804nobodyさん
2006/04/16(日) 21:11:25ID:???Zendもそうだし。こういうの流行ってるのかな?
guessworkもそうだね。
0805nobodyさん
2006/04/16(日) 21:22:32ID:???アプリケーションロジックを壊させないっていっても、どうせデザイナが
信用できない以上、コードチェックとテストはしなきゃいけないから手間は一緒じゃないかな?
オープンタグだけが問題ならそれこそrails風に h() という関数とか書けば?
あった方が好ましいとか、簡単に組み込めるからくらいの理由で余計なレイヤーを
追加するのはいやだな。
そういうのはどうしても無きゃダメっていうときだけ積極的になるべきじゃないか。
0806nobodyさん
2006/04/16(日) 23:15:04ID:???なんか言いがかりっぽいけど・・・
> アプリケーションロジックを壊させないっていっても、どうせデザイナが
> 信用できない以上、コードチェックとテストはしなきゃいけないから手間は一緒じゃないかな?
ぜんぜん一緒じゃないよ。smartyでヘンなことしようとしてたらくっきりわかるよ。
少なくとも不意に介入してしまう危険性の方は減るでしょ。
> オープンタグだけが問題ならそれこそrails風に h() という関数とか書けば?
<?php h($var) ?>って<?php echo $var ?>とほとんど変わんないじゃん。
{$var}と比べてごらんなさい。このすっきり具合。
> あった方が好ましいとか、簡単に組み込めるからくらいの理由で余計なレイヤーを
> 追加するのはいやだな。
> そういうのはどうしても無きゃダメっていうときだけ積極的になるべきじゃないか。
なんじゃそりゃ。フレームワークって楽するために余計なレイヤーをはさむものでしょ。
まあ好き好きなんだろうけど。
0807nobodyさん
2006/04/16(日) 23:57:44ID:???> <?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:???> 普通の知能があるなら、どれも全部変わらないよ。
修正子が入ると、見易さの差が大きくなって来る気がする。
0810nobodyさん
2006/04/17(月) 00:54:42ID:???{$var|escape:"url"}と<?=urlesc($var)?>、どちらが簡潔か?
プログラマーにとっても、カスタム修正子作るより関数作る方が簡単だし、柔軟なものが作れる。
当然関数の方が処理速度も速い。
0811nobodyさん
2006/04/17(月) 01:01:43ID:???0812nobodyさん
2006/04/17(月) 01:12:27ID:???カスタム修正子より関数の方が簡単って、register_modifierのたった一文を書くか書かないかの違いだけだし。
あと処理速度は変わらんて。同じphpコードに変換されるんだから。コンパイル済みのコード見てみ。
0813nobodyさん
2006/04/17(月) 03:02:12ID:???この話題たぶんずっとループだからやめにしない?
0814nobodyさん
2006/04/17(月) 03:39:59ID:???声に対して、「Railsは動作確認のためにセットアップするのが簡単だから、デザイナー
にもRailsの動く環境を用意してあげて、そこでプレビューさせればいいじゃない」という
スタンスなんだけど(別途Webサーバを用意する必要がない)、SymfonyとかCakeは
そのあたりどうパクるつもりだろう。
0815nobodyさん
2006/04/17(月) 08:38:25ID:???{$var|escape|nl2br} は?
修正子にパラメータが付いたときの表記は、確かに冗長だけど、
変数の後ろに処理を記述する方法は、直感的に理解し易い表記
方法だと思う。
>>813
確かに、宗教論争っぽくなって来ている。
0816nobodyさん
2006/04/17(月) 09:33:18ID:???>普通の知能があるなら、どれも全部変わらないよ。
>ウェブデザイナをバカにしすぎ。
この人はできるウェブデザイナとしか仕事したこと無いんだろうね。
(この「できる」は「普通にできる」の範囲で)
もうどうしようもないの居るから。本当に。しかもかなりの確率で。
<?って入った時点で思考停止させるやつとか。
でも仕事は終わらせないとダメだからさ。
俺らにとって変わらないと思うくらいのことでもすり寄ってあげないとダメなんさ。
0817nobodyさん
2006/04/17(月) 09:43:28ID:???私の経験と、この前提は一致しない。(ベンチとった訳ではないけど)
レイヤー増えるんだから、早くなることはありえないけど、通常は十分な速度が出ていると
思うんだけど、どうだろう?
FW入れるという前提があって、そこで使うテンプレートが生PHPで記述するタイプと、
smartyを使って、初回起動時にsmartyが生成したphpを使うのと、速度的に、どの程度
の差があるのか比較した場合、実質的に差が無いのではないかと言う気がする。
0818nobodyさん
2006/04/17(月) 09:51:08ID:???デザイナーは、スペックの高いマシン使っていることが多いから、
XAMPPとsandbox入れてあげればOKとか?
0819nobodyさん
2006/04/17(月) 12:43:08ID:???速度の差がないなら、なぜSmartyを推すの?
どうもsmarty擁護論の前提はデザイナとの連携みたいだけど、
デザイナとの連携が必要ない場合のメリットていうと
(例えば、見本ページが全ページ用意されていて、そこにデータを
流し込むだけとか、デザインはどうでも良いという客とか)
見やすい以外になにかあるのかな?
#◯◯は必要ありませんからその分安くしてください
#っていう客の是非はこの際おいといて...
0820nobodyさん
2006/04/17(月) 13:01:23ID:???0821nobodyさん
2006/04/17(月) 13:03:54ID:???必要だと思う人は使えばよいのでは?
symfonyでSmartyしたいのならsmartyViewを使え良いと思ふ。
http://www.symfony-project.com/forum/index.php/m/1488/#msg_1488
0822nobodyさん
2006/04/17(月) 15:06:47ID:???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:???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:???もっと短くして欲しいし、もっといえば
デフォルトでエスケープされるようにして欲しい。
0827nobodyさん
2006/04/17(月) 15:20:24ID:???s.php(キャッシュなし)
Requests per second: 52.26 [#/sec] (mean)
0829nobodyさん
2006/04/17(月) 16:24:26ID:???こんな竹槍戦法じゃ仕事にならないから、速度を犠牲にしてでもFW使う訳で・・・。
中のコードが、もう少し現実的な分量になっただけでも、差はかなり縮まる。
0830nobodyさん
2006/04/17(月) 16:47:44ID:???0831nobodyさん
2006/04/17(月) 17:08:14ID:???単なる意地の張り合い(というか否定派だけか意地張ってるのは)になってるから
もうやめろってのに
0832nobodyさん
2006/04/17(月) 17:15:06ID:r0ZxVhnDしかし、高い金を払って遅いビデオボードを買うのは不思議な行為だな。
0833nobodyさん
2006/04/17(月) 18:52:31ID:???まさかここまで再確認させてくれるとは思わなかった(唖然)
0834nobodyさん
2006/04/17(月) 18:56:33ID:???マトモな会話をしたいならたとえ話は話が発散するだけだからやめた方がいいぞ
ぜったい「例えが違う、それを言うなら……」って奴が出てきて話がそれるから
マトモな会話をしたくないならチラシの裏とかへどぞー
0835nobodyさん
2006/04/17(月) 18:59:39ID:???そんな小規模なサイトしか作れないなら確かにSmartyは不要だねw
いちおう同意してやったが、うれしいか?
0836776
2006/04/17(月) 19:10:11ID:???ちょっとフォローしとくとmySQL前提なら生産性は結構あがるし、
上部の構造の見通しは今のところよいので、cakeも言うほど悪くないと思う。
まだベータだしね。最終的な評価はもうすぐ出るはずのリリース版を見てからでもよいはず。
しかし、テンプレートエンジン云々って凄い荒れる話題なんだね(w
すげぇレスが伸びててビビった。
では、続きをどうぞ。
0837nobodyさん
2006/04/17(月) 19:31:38ID:???宗教論争になっちゃうんだと思ふ
0838nobodyさん
2006/04/17(月) 19:36:07ID:r0ZxVhnD0839nobodyさん
2006/04/17(月) 20:20:21ID:???数字の読み方分かって無いね。
それぞれの逆数を取って、一回あたりの所要時間を出して引き算する。
大雑把だけど、その値がsmarty導入によって増加した時間。
実際のアプリは、このサンプルと比べて、2,3桁は処理量が増えるので、
その中でsmartyの所要時間がどの程度の比率になるかがポイント。
せめてsymfonyで hello world を、生php、smartyテンプレートの両方で
作ってみて、比較するぐらいの事をしないとね。
たぶん、「symfonyの遅さは異常」という結論が出てくる事でしょう。:-P
ちなみに、使用するFrameworkはなんでも良い。symfonyは、生php,
smartyの両方が使えるという事なので挙げただけ。どんなFrameworkを
使っても同じ結論が出る筈。
0840nobodyさん
2006/04/17(月) 21:00:57ID:???CPUやディスクが遅ければグラフィックボードが速くても全体のパフォーマンスが上がらないというのは事実だが、
そのグラフィックボードが遅いという事実を否定するものでもない。
0841nobodyさん
2006/04/17(月) 21:05:08ID:???はてなやmixiは組み合わせて使ってる。
しかし、smartyの場合どうか?
smartyのメリットを挙げれば、
・<?=h($var)?>より{$var|escape}の方が見やすい(と感じる)
・smartyの文法は知ってるけど、PHPの文法は知らないウェブデザイナが担当の場合
これくらいか。
デメリットは、
・10倍の遅さ
・smartyの学習コスト
・smartyの文法から来る柔軟性の制限
これでどちらがいいか選べばいい。
はっきり言って自明と思うけど。
0842nobodyさん
2006/04/17(月) 21:31:54ID:???>はっきり言って自明と思うけど。
じゃあ何でそんなたいしたメリットが無くデメリットが多いにも関わらず
楽天はsmartyを使っているの?
0843nobodyさん
2006/04/17(月) 21:36:11ID:???・テンプレートエンジンを使ってるオレってカッコいい。雑誌に使えって載ってたし。
というのもあるよ。
0844nobodyさん
2006/04/17(月) 21:37:05ID:???確かに <?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をこき下ろすつもりはなかったんだが…
0847nobodyさん
2006/04/17(月) 21:51:32ID:???Smartyとほぼ同様の機能で速度は数倍のSimplateがあるよ。
だから結局どっちでもいい、と思う。
0848nobodyさん
2006/04/17(月) 21:58:08ID:???使うこと自体を断固として否定する人いたよね。
0849nobodyさん
2006/04/17(月) 21:59:09ID:???>例えばJavaのMayaaだとテンプレートのHTMLデザインがまったく崩れないという特徴があるんですが、
ならphptalとか使えば
0851nobodyさん
2006/04/17(月) 22:16:49ID:???同じ人だったらある意味すげぇ
0852nobodyさん
2006/04/17(月) 22:18:17ID:???>それを考えても、なんでSmartyを選ぶのかがわからないので、Smarty(だけじゃないくて他のテンプレートエンジン)を選んでいる人に、Smartyを採用した積極的な理由というのを教えていただきたいです。お願い。
俺ただの傍観者だけど、誰も844の問いには真正面から答えないの?
0854nobodyさん
2006/04/17(月) 23:35:13ID:???「特に意味は無いけどカッコイイから」
ってことでOK?
0857nobodyさん
2006/04/17(月) 23:59:53ID:???echo まわりだけとはいえテンプレートの機能使用のほとんどはそこなんだから
それだけでも大きく違うと思うけど……
生PHPではちょっといじるだけですぐにPHPエラーとか吐くようになってしまうから,
それをいじる非プログラマから見て心理的抵抗感が大きい……とかー
Smarty はテンプレートの変更で致命的エラーを起こせるので個人的にはちょっとイマイチ.
生PHPでは出力する変数をグローバルに置いたりするので名前空間汚染が嫌,とかー
Smarty の場合でいうと,デフォルト変数修飾子で出力値の自由な加工をする枠組みを用意してある,とかー
> Smartyでできることは、同じようにPHPでもできる。
Smarty は PHP で書かれてるんだから,そりゃできなきゃ困るw
フレームワークってそういうものでしょ.
0858nobodyさん
2006/04/18(火) 02:52:00ID:0WmA3v/BPhingってPEARからちゃんと入る?
install okって言われたのに、
>symfony propel-build-model
とやったら、Phing.phpがないと言われる。
仕方ないから
sandboxを解凍して、
プロジェクトディレクトリのlibに、Phingディレクトリをコピーしたけど…。
なんか納得(´・ω・)イカナス
0859nobodyさん
2006/04/18(火) 03:34:34ID:???>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:???好きにすればいいものを否定派がムキになって否定して回ってるように見えるが
ところでフレームワークって言葉はこのスレではWeb構築フレームワーク以外には使わない方針なの?
テンプレートエンジンやらDAOやらも広義のフレームワークだと思うが
0864nobodyさん
2006/04/18(火) 08:40:04ID:???俺もどっちでもいい派だけど、ただSmartyって言うほど覚える事ある?
余計な機能使いすぎじゃないの?柔軟性なんてそんなに無くていいんだけど。
Viewでいろんな事させ過ぎちゃいかんよ。あくまで分離が目的なのだから。
だからPHPで出来ることがSmartyで出来ない事があるのは当たり前だと思ってるけど。
{php}ってあるけど、あれは使ったらいけない、裏技的なものだと思ってるし。
また、「h()のように定義してしまえば」って言うが、なにかWebアプリ作成するたびに、
何か表示させるたびに定義するの?使い回せばよい?じゃあそれを他人に勧められる?
それはメンテしたり引き継いだりする人がかわいそうかなって思うな。
保守性があがると(速度面での)パフォーマンスが落ちるってのはしょうがない。
Symfonyなどのように「最初から色々用意されている」なら、慣れた方で良いと思うよ。
0866nobodyさん
2006/04/18(火) 08:54:48ID:???だな
テンプレートを使う必要があって、性能的に仕様を満たしていれば
採用実績が多く情報も豊富なsmartyが選択肢に入ってもおかしくない
遅くて仕様を満たせなければ使わなければいいだけの話でしょ
フレームワークにしてもテンプレートエンジンにしても
採用実績が多い事自体が採用基準になるのは良くある事
潜在的なバグ出しがされていて情報も多いと判断できるから
なんでむきになって否定派が否定するのかがわからん
0867nobodyさん
2006/04/18(火) 09:26:41ID:???最初っからPHPでかけばいいじゃない。
馬鹿かお前ら?一度ならずニ度三度死ね。
0869nobodyさん
2006/04/18(火) 09:29:37ID:???俺も一人でささっと作るときはPHPテンプレート使うし、PHPをそのまま使えることは利点だと考えてる。
一つのファイルで済ませるくらいのときもテンプレート部分は下部にまとめてロジックに一切依存させないようにしたりとか。
でもSmarty普通に良いよ。
Smartyオブジェクトの構築とキャッシュチェックくらいしか実質上オーバーヘッドないんだし。
>>864の
> Viewでいろんな事させ過ぎちゃいかんよ。あくまで分離が目的なのだから。
に禿同。触れようと思ってたけど先に書かれてしまった。
>>866の
> 採用実績が多く情報も豊富なsmartyが選択肢に入ってもおかしくない
これも禿同。
それに記述の簡潔さ、View周りの機能(フィルタやカスタム修正子/プラグイン)もそろってるなら、Smarty使う理由としては特に文句のつけどころないと思うけど。
あと、エスケープの話が出てたけど、Smartyのラッパクラス作ってassignメソッドをオーバーライドすれば、テンプレートに渡される全ての変数に自動的にhtmlspecialcharsを通すようにもできるよ。
0870nobodyさん
2006/04/18(火) 10:17:05ID:???PHPは結局最終的には機械語に変換されるんだから
最初っから機械語でかけばいいじゃない。
馬鹿かお前ら?一度ならずニ度三度死ね。
0871nobodyさん
2006/04/18(火) 10:36:36ID:???なんとなく賛成派の方が多そうだから賛成しとくみたいな。
このまま「各々が・・・」と逃げられたら、否定派の理論も書くだけ無駄。
論理的に反証してくれないとどうにもならん。
0872nobodyさん
2006/04/18(火) 10:40:31ID:???この話題は結局結論が出ないし、面白くない。
0873nobodyさん
2006/04/18(火) 10:44:14ID:NsVFQKmohttp://phpspot.org/blog/archives/2005/09/flickr.html
0874nobodyさん
2006/04/18(火) 10:54:59ID:???たしかに。
871のような非論理的な書き込みがあると話の発展性に欠けてきてダルくなるな。
煽り方のパターンが微妙なんだよね。
0875nobodyさん
2006/04/18(火) 12:37:48ID:???PHPの組み込み関数に比べて大幅に速度低下するのは避けられない。
比べる方がアンフェアといってもいいくらい。
0876nobodyさん
2006/04/18(火) 12:50:49ID:???くるのか?
0878nobodyさん
2006/04/18(火) 12:57:42ID:???0879nobodyさん
2006/04/18(火) 12:59:11ID:???静的キャッシュと動的キャッシュができるフレームワークってあるの?
0880nobodyさん
2006/04/18(火) 13:07:35ID:???smarty擁護派はなんでこのメリットを主張しないのか不思議。
もっとも自前でキャッシングの実装しても大して手間じゃないけど。
0881nobodyさん
2006/04/18(火) 13:17:47ID:???0882nobodyさん
2006/04/18(火) 13:27:44ID:???DBエンジンが変わっても、DBクラスをそのまま使えるのがメリット、みたいな説明あるけど、
DBエンジン変えたら、SQLやアルゴリズムの全面見直しは必須だつーの。
0883nobodyさん
2006/04/18(火) 14:16:23ID:???0884nobodyさん
2006/04/18(火) 14:34:30ID:???>また、「h()のように定義してしまえば」って言うが、なにかWebアプリ作成するたびに、
>何か表示させるたびに定義するの?使い回せばよい?じゃあそれを他人に勧められる?
>それはメンテしたり引き継いだりする人がかわいそうかなって思うな。
PHPには標準ですでにnl2br()とか便利な関数があるのに、わざわざプラグイン覚えなきゃいけないほうがかわいそう。
Smarty使っているけど、PHPとSmartyの両方をマスタした要員を確保しなきゃメンテできないので失敗したと思ってる。
>保守性があがると(速度面での)パフォーマンスが落ちるってのはしょうがない。
生PHPなら保守性もパフォーマンスも落とさずに済む。保守性をあげるために必ずしもパフォーマンスを落とす必要はない。両立させることは可能。
でもSmartyってそんなにパフォーマンスわるいのか?内部でPHPファイルにコンパイルしてキャッシュするからそんなに遅くないと思うんだが。
体感的には、Smartyによる速度低下は感じない。それよりDBまわりのほうが体感速度に直に効いてくる。
0885nobodyさん
2006/04/18(火) 14:45:52ID:???>テンプレートを使う必要があって、性能的に仕様を満たしていれば
>採用実績が多く情報も豊富なsmartyが選択肢に入ってもおかしくない
今はその「テンプレートエンジンを使う必要があるのか」という話だろ。「どのテンプレートエンジンを使うか」という話じゃない。
採用実績でいうなら、Smartyより生PHPのほうが実績も情報も上。
>遅くて仕様を満たせなければ使わなければいいだけの話でしょ
だから、Smarty使ってる人になぜ使ってるのか聞いてるんでしょ
「使わなくていい」と開き直るまえに明確な利点をちゃんと説明してやれ
>なんでむきになって否定派が否定するのかがわからん
べつに肯定派も否定派もむきになってないだろ。イタイやつはいるけど。
正当な理由が示せないからってそんな話にもっていくなよ。
0886nobodyさん
2006/04/18(火) 14:53:26ID:???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:???Smartyだってフレームワークだろ。
そんなに別の話題がよけりゃ自分でネタ出せ。
おもしろいネタなら皆自然にそっちに流れるだろ。
0889nobodyさん
2006/04/18(火) 15:02:33ID:???>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:???> 生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:???キャッシュ機能が目的でSmartyを使っているやつってどのくらいの割合でいるの?
おれんところでは、Smartyが遅くて問題になったことはないから、出力キャッシュを使ったことはない。
そういうやつのほうが多いんじゃない?もしそうなら、出力キャッシュ機能以外が目的でSmartyを使ってるんだから、その理由を知りたい。
>>880
共有サーバじゃなくて、自前でサーバを用意しているなら、アプリケーションサーバレベルでのキャッシュがいちばん楽だよ。
あるURLにマッチしたら、サーバがキャッシュを返す。PHPすら呼び出さないから高速だし、バックエンドの言語に依存しない(Javaでも使える)。
ただし、ポートレットのようにひとつのページに複数のキャッシュを持たせる必要がある場合は使えないけどね。
0892nobodyさん
2006/04/18(火) 16:02:38ID:???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:???「本当に」魅力があるのかと問われてる以上、肯定派の言うことはどれも弱い。
それでいいんじゃないか?
最初からたぶん誰も熱くはなっていないし双方落ち着いてるとは思うが、
話すんのめんどくさくなっちゃった人はかなりいるだろうから。
0894nobodyさん
2006/04/18(火) 16:23:05ID:???そのままではShift_JISで使えなかったり、
ちょっと特殊なことをしようとすると、いろいろ調べる必要があったり、
調べた結果できないとわかったり、できそうでできないことがあったり。
結局、生PHPに戻りました。
0895nobodyさん
2006/04/18(火) 16:32:19ID:???>デフォルトでテンプレートファイルはテンプレートにしか使えないようになってるじゃん。
>生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逆にADODBみたいにダイナミックリンクやスタティックリンク可能な標準的テンプレートモジュールが出てもいいかなとも思う。
■ このスレッドは過去ログ倉庫に格納されています