トップページ⇒php
981コメント365KB

【PHP】 Smarty 【テンプレートエンジン】 第2章

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/03/29(月) 14:41:04ID:???
Smarty は PHP のためのテンプレートエンジンです。
具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
03223142010/05/30(日) 12:59:55ID:???
>>321
{{ }}やー。

>>315−319
ありがとうございます。
勉強になりました。。
フレームワークとSMARTY組み合わせてもいいわけなんですよねー。
SMARTYはざっくりですが覚えたんで実用でもせっかくなんで使ってみたいと思います。
とりあえず今度フォーム系でなんか機械があったら使ってみる。
0323nobodyさん2010/05/30(日) 16:24:53ID:???
>>321
<{ }>
0324nobodyさん2010/05/30(日) 18:42:49ID:???
>>320
>密結合と疎結合って言葉知ってる?
>フレームワークに内包されるヘルパーは密結合。

そんな密結合になっているフレームワークのヘルパーを
ワザワザ引き剥がしてまでSmartyを使う必要ってあるんですかねぇ。

>アダプタパターンって知ってる?
>Smarty本体がアダプタとして動いてくれるから、
>フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、
>ビュー側のスクリプトには何ら影響は無い。

アダプタパターンは使わないと思いますけど(笑
0325nobodyさん2010/05/30(日) 19:54:31ID:???
顔真っ赤になってレスしてるんだろ?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
自分だけsmarty使えないからって2ちゃんで同意を求めに来てるんだよなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0326nobodyさん2010/05/30(日) 21:35:58ID:???
>>325
信者ならsmartyじゃなくてSmartyって書けよ。
0327nobodyさん2010/05/30(日) 22:29:27ID:???
>>324
>ワザワザ引き剥がしてまでSmartyを使う必要ってあるんですかねぇ。

上に書いてあるだろ、
・フレームワーク別にヘルパーを覚える必要がある
・フレームワーク自体のアップデートがビュー側に影響を与える恐れがある
というデメリットもあるってこった。

趣味プログラマにはいいかもしれんが、
開発人数が増えれば増えるほど、このデメリットは如実になる。

>アダプタパターンは使わないと思いますけど(笑

そりゃ君が無能だからだろ(笑)
Smarty使わないにしろ、ビュー用のインターフェースは別途用意しておいて、
各ビュースクリプトとのアダプタを作るのが、君の好きなモダンフレームワーク実装。
0328nobodyさん2010/05/30(日) 22:51:31ID:???
そもそも開発人数増えて規模が大きくなる前提なら
デザイナにテンプレート触らせるとかまずありえない。
0329nobodyさん2010/05/30(日) 23:54:10ID:???
>>327
>上に書いてあるだろ、
>・フレームワーク別にヘルパーを覚える必要がある
>・フレームワーク自体のアップデートがビュー側に影響を与える恐れがある
>というデメリットもあるってこった。

フルスタックのフレームワークに無理やり
外部のテンプレートエンジンをねじ込むんですか?
フレームワークの思想をまるっきり無視って訳ですね。

あと、フレームワークのビューには変更が入るかもしれないけど
Smartyのインターフェイスには変更が入らないという前提で
物を言ってません君?随分と都合のいい話ですね。

>趣味プログラマにはいいかもしれんが、
>開発人数が増えれば増えるほど、このデメリットは如実になる。

趣味でやってるのではないのなら尚更
Smartyなんていう外部ライブラリを使わない方がいいんじゃないですか?
君はSmartyは誰でも知っているみたいな言い方してますけど
誰もが知ってるわけじゃないし、人によっては好みもあるでしょ?
ま、私は全くもって好みじゃないですが。

>そりゃ君が無能だからだろ(笑)
>Smarty使わないにしろ、ビュー用のインターフェースは別途用意しておいて、
>各ビュースクリプトとのアダプタを作るのが、君の好きなモダンフレームワーク実装。

無能ですか?そうですか。
私が例にあげたCakePHPにもsymfonyにも
アダプタパターンは合わないと思いますけど。
そんなに自分が有能なのならコード書いてもらえません?
多分できないと思うけど(笑
0330nobodyさん2010/05/30(日) 23:56:24ID:???
>>328
ホントそうですよね。
普通の開発じゃ考えられないようなこと言ってますよねここの人達。
しかもそれを正当化。笑い話にもならないっつーの。
0331nobodyさん2010/05/31(月) 00:47:08ID:???
>君はSmartyは誰でも知っているみたいな言い方してますけど
>誰もが知ってるわけじゃないし、人によっては好みもあるでしょ?

ここがSmartyスレだって事忘れてない?w
好みの問題を持ち出すなら、それこそSmartyスレ見なければいいんじゃないの。

>フレームワークの思想をまるっきり無視って訳ですね。

思想?どこにそんな事書いてあるの?
ZF、symfony、cakeはなんら問題無く外部ビュースクリプトを載せられるようになっているし、
ZFに至っては疎結合をウリにしているけどな。


>あと、フレームワークのビューには変更が入るかもしれないけど
>Smartyのインターフェイスには変更が入らないという前提で

Smartyに機能追加があろうが、フレームワーク自体を変更しようが
テンプレート側がその変更を意識する必要は無い。
Smarty自体がアダプタの役割も担うから。

もちろん他のFWでも独自にビュークラスを作ってやれば吸収出来るんだろうけど、
それは車輪の再発明ってやつだ。
0332nobodyさん2010/05/31(月) 01:11:46ID:???
知名度云々言ってる奴は池沼か?
使う使わないは別にして、PHP触ってるけどSmarty知らないなんて恥ずべきだよ。

http://www.google.co.jp/trends?q=Smarty%2C+CakePHP%2C+Symfony%2C+Zend+Framework%2CTwig

モダン思想のオナニスト達は、Web2.0とかクラウドって言葉にも踊らされてるんだろうなぁ。笑える。
0333nobodyさん2010/05/31(月) 01:52:49ID:???
何でSmarty知らないと恥ずかしいの?
Smarty以外でもHTMLテンプレートエンジンは色々あるわけだし、
それにこだわる必要なんてないと思うけど。

Smartyの利点は枯れたライブラリで多くの使用実績があるのと、
>>332が言っている通りの知名度。
後発ライブラリはそれ以上のメリットもあったりするわけだから、
状況によって使い分けるべきで、フレームワーク云々の話がでるのは筋違い。
0334nobodyさん2010/05/31(月) 05:05:52ID:???
営業会議の場でも普通にSmartyって言葉が使われる程認知されているのに、
Smarty知らないんじゃ恥ずかしいだろうよ。
現役かどうかは知らんが、Smartyの普及率は相当なものだ。

もちろんSmarty以外を使うのも有りだと思うし、
その場合はSmartyと比較してこんなメリットがあるんですよ。
って言える方が賢いと思うのよ。

今の子達は、頭ごなしにSmartyが駄目駄目言ってるだけで、
具体的に何が駄目で、どう改善すればいいのか、って案も無いみたいだし。
話しすすまんなぁ
0335nobodyさん2010/05/31(月) 05:08:07ID:???
抜けちゃったけど、

Smatry牙城を崩したいのであれば、
とりあえずSmartyを覚えて、他の技術とのメリットデメリットを提示するべきだと思うよ。

俺個人としては、新しい何かは好きなので触る価値があると思えば乗り換えるよ。
0336nobodyさん2010/05/31(月) 10:22:49ID:???
>Smatry牙城を崩したいのであれば

最初からSmarty牙城なんてなかった
メリットデメリット言う前に、使われてないし、これからも使われることはない
それがアンチの考えだから
0337nobodyさん2010/05/31(月) 10:32:45ID:???
でもスレには来るという謎さ
0338nobodyさん2010/05/31(月) 11:30:05ID:???
アンチはコテハン付けてくれ
0339nobodyさん2010/05/31(月) 16:36:38ID:???
とりあえず、Top 25 PHP template enginesってタイトルで
いの一番にとりあげられてるという事実があるわけで・・・

リンク先は消えてたんで、それを紹介した日本語のページを
ttp://gigazine.net/index.php?/news/comments/20060803_php_template_engine/
0340nobodyさん2010/05/31(月) 18:46:06ID:???
2006年か・・・
0341nobodyさん2010/05/31(月) 19:50:42ID:???
2006年の時点で既にメジャーだったって事でしょ。
それなのに知名度云々言ってるのは、素人としか思えない。

最近はPEARもFWに食われて目にしなくなったけど、
使えば便利なケースは多々あるし、手段として身につけておいても損は無い。
Smartyもそんな感じだと思うよ。
0342nobodyさん2010/05/31(月) 22:02:08ID:???
アンチうぜえなお前らPHPくだ質のチンピラかOCNだろ
0343nobodyさん2010/05/31(月) 22:33:33ID:???
>>331
面倒なので手短に・・
フルスタックのFWに無理やりビューという大きな外部ライブラリを
ねじ込まないで下さい。
あと、アダプタパターンは無いわ(笑
0344nobodyさん2010/05/31(月) 22:37:25ID:???
>>343
無いのはお前の頭だろw
興味無いならCakeスレでなれ合ってろよw
0345nobodyさん2010/05/31(月) 22:52:15ID:???
フルスタック(笑)

Symfony2からは低レベルの枠組みはフルスタックで提供するが、
外部ライブラリを積極的に採用する方針に変わるけどね。
http://www.symfony-project.org/blog/2010/03/04/symfony-2-0-and-the-php-ecosystem

流行り廃りで言えばフルスタック自体が廃りだよ。
フルスタックFWを学習する事は、Smarty以上にコストがかかる上に、Smarty以上に将来性が無い。

アンチはRoRに毒されたCake厨が多いのかねぇ。
シコシコ独自の設定ファイルでも量産してろよ(笑
0346nobodyさん2010/06/01(火) 00:11:09ID:???
>>344
アダプタパターン最近覚えたのかな?
Gofの基礎中の基礎だからね。
でもアダプタパターンは無いわ(笑

>>345
君はフルスタックの意味とアダプタパターン(笑)の使いどころが
よく理解できてないみたいだからもう書き込まない方がいいよ。
能無しがバレますよ?
大人しくSmartyの勉強でもしてなさいっ!
0347nobodyさん2010/06/01(火) 00:52:04ID:???
別に他スレでしつこくSmartyの話をしている奴が
いるわけでもないと思うし
皆このスレで「大人しく」していると思うんだけど
なにをしにこのスレに?
0348nobodyさん2010/06/01(火) 02:20:16ID:???
>>346
アダプタパターンは基底パターンみたいなもんだが、
君はアダプタが全く適用されないコードを書いてるのかい?
フルスタックという言葉に拘りがあるみたいだけど、君こそ言葉遊びしたいだけじゃないの?(笑

Smartyすら理解できない頭じゃ無理も無いが、
大人しくCakeをBakeしてればいいんじゃないかな?
0349nobodyさん2010/06/03(木) 00:05:24ID:???
>>348
アダプタパターンっていうのはアダプティとなるクラス(Smarty)と
ターゲットとなるクラスが比較的近いインターフェイスでないと機能しないんけど、
SmartyのようなテンプレートエンジンとCakePHPやsymfonyのような
生PHP+ヘルパ関数のビューをどのようにアダプタパターンで繋げるんですか?

ま、デザパタ覚えたので言葉を使ってみたかっただけかもしれないけど、
言うほど経験も知識も無いんだから、もうちょっと頑張りなさい。
0350nobodyさん2010/06/03(木) 00:41:09ID:???
>>349
>生PHP+ヘルパ関数のビューをどのようにアダプタパターンで繋げるんですか?
ん?それは実装の前提が違くないかい?
フレームワークとSmartyを繋ぐ事が目的じゃなくて、フレームワークとテンプレートを繋ぐことが目的で、
共通のテンプレート構文を使う為のアダプタって事だよ。

CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
ZendFW > ZendSmartyAdapter > template

CakePHP / symfony / Zend等フレームワーク固有のViewやヘルパ関数を使うと、
templateがフレームワークに依存するよね(当然メリットもあるけど)
だから、疎結合なViewクラスを挟むのもいいんじゃね?って話だが。
0351nobodyさん2010/06/03(木) 00:50:20ID:???
>>350の言う事で決着じゃん。
テンプレートがフレームワーク依存するのが嫌ならSmarty使えばいい。
使い分けるってこと出来ないの?
0352nobodyさん2010/06/03(木) 02:11:21ID:???
Zend <?php echo $this->escape($val); ?>
Cake <?php echo h($val); ?>
Symfony <?php echo $sf_data->get('hoge'); ?>

テンプレートも弄る自分的には、エスケープ一つでここまで構文が違うのは辛い。
手放せないほど便利な固有ヘルパーがあるわけでもないから、FW固有の方言やノウハウを学ぶ意欲も続かない。
そんな理由でSmartyを手放せずにいる。
0353nobodyさん2010/06/04(金) 18:43:09ID:???
>>352
学習意欲も無いのに高性能なものを無理して使うことは無いな。
Smartyで済む人は騒ぎ立てずにSmartyを使い続ければいいと思う。

>>350
Smartyと生PHPを「構文の差」として解釈してる時点で頓珍漢だと思う。

hogeFW > hogeSmartyAdapter > smarty構文のtemplate
hogeFW > php構文のtemplate

だから、Apapterパターンにはなり得ない、という話だと思うけど。
0354nobodyさん2010/06/04(金) 20:38:49ID:???
>>353
>Smartyと生PHPを「構文の差」として解釈してる時点で頓珍漢だと思う。
論点が変わってるね。Smartyと生PHPの話じゃなくて、
>>352が書いているように「テンプレートとしての構文の差」を無くす為にアダプタをかまそうって話だよ。

生PHPのみで例えるなら、CakeのテンプレートをZendFWで使おうとした場合、
Cake・・・<?php echo h($val); ?>
ZendFW・・・<?php echo $this->escape($val); ?>
という「構文の差」が生まれるよね。
でもZendFW側に h() を $this->escape() に橋渡しするアダプタを作ってやれば、
テンプレート構文の差は埋まり、共通のテンプレートが使えるようになるね。

CakeのテンプレートをZendFWで使おうなんて考えは頓珍漢だと思うよね。
でも別にCakeのテンプレートをZendFWで使う事が目的じゃないからね。
「FWに依存しない共通のテンプレート」が使えればSmartyだろうが生PHPだろうが構わないんだ。

>>350 はtemplateに対するAdapterパターンでFA。
Smatyスレで必死にSmartyを批判してる君も十分頓珍漢だと思うよw
0355nobodyさん2010/06/04(金) 20:46:52ID:???
> 「FWに依存しない共通のテンプレート」が使えればSmartyだろうが生PHPだろうが構わないんだ。

論旨が意味不明だな。
だったらSmarty要らないじゃん。

> Smatyスレで必死にSmartyを批判してる君も十分頓珍漢だと思うよw

Smartyスレで必死に頓珍漢なフレームワーク叩きをして、
スレが荒れる原因を作っているほうがよっぽどスレには不利益だと思うけどな。
0356nobodyさん2010/06/04(金) 21:05:18ID:???
>>355
>>「FWに依存しない共通のテンプレート」が使えればSmartyだろうが生PHPだろうが構わないんだ。
>論旨が意味不明だな。だったらSmarty要らないじゃん。

うん。だからSmartyじゃなくてもいいんだよ。
何が意味不明なんだい?
君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?

俺は生PHPを使ってhtmlspecialchars()とか毎回書くのはだるいし、
変数を一括エスケープしたり、テンプレートディレクトリを精査したり等の機能が欲しいから、
何らかのライブラリは必要だと思うよ。
でも、そんなの作るの面倒だからSmartyを使うけどね。


>Smartyスレで必死に頓珍漢なフレームワーク叩きをして、
誰も叩いてないよw
フレームワーク至上主義者がSmarty批判してブーメラン浴びてるだけの話だろw
0357nobodyさん2010/06/04(金) 21:11:42ID:???
ここまでの流れ

Smarty(テンプレートエンジン)否定派が沸く
↓
Smarty派は使う事のメリットを提示する
↓
否定派はメリットを絶対に認めずデメリットのみを主張
↓
Smarty派は使わない事のデメリットも提示する
↓
否定派ファビョル


PythonとかRubyを使っているモダンオナニストがPHPを否定しているような状況に似ているな。
所詮は道具なのに、なぜ使い分けが出来ない?
0358nobodyさん2010/06/05(土) 19:41:11ID:???
>>355
>>354, >>356←こいつは前から一貫して意味不明なことをホザくので
俺も対応に苦慮してる。
デザパタとかFWの理解がまったくもってなってないので
話がまったく通じない。
精神異常者と話すってこういうことなんだと思った。
0359nobodyさん2010/06/05(土) 19:44:44ID:???
>>355
認識の違いって怖いですよね。

否定派がSmartyを使うことのデメリットを提示する
↓
Smarty厨が必死に抵抗(しかも意味不明)
↓
否定派が冷静にツッコミを入れる。
↓
Smarty厨ファビョル
0360nobodyさん2010/06/05(土) 20:36:03ID:???
そんな複数人に見せかけなくても
0361nobodyさん2010/06/05(土) 20:36:44ID:???
↑>>357の間違いな
0362nobodyさん2010/06/06(日) 02:37:31ID:???
>>356
> 君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?

フレームワークの仕様にあわせて導入するのが良いと思うけど。

> 何らかのライブラリは必要だと思うよ。
> でも、そんなの作るの面倒だからSmartyを使うけどね。

別にそれでもいいと思うけど。

それがどうして>>350みたいなアダプタになるの?

> ここがSmartyスレだって事忘れてない?w
> Smarty自体がアダプタの役割も担うから。
> アダプタパターンって知ってる?
> Smarty本体がアダプタとして動いてくれるから、
> フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。

と言っていた過去の発言とも矛盾してるでしょ。
「Smartyにはアダプタとしての機能があるからフレームワークで提供されたテンプレートより良いんだ」
というのが君の主張だったんだから、しっかり責任を持って発言してくれないと。
0363nobodyさん2010/06/06(日) 20:23:12ID:???
>> 君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?
>フレームワークの仕様にあわせて導入するのが良いと思うけど。

質問の答えになって無いよ。
ムキになって反論してるだけじゃないなら、簡潔でいいから具体案を出してくれよ?
例えばcakeとsymfonyで同じtemplateを使用するという要件を満たす場合どうするの?

>それがどうして>>350みたいなアダプタになるの?
>「Smartyにはアダプタとしての機能があるからフレームワークで提供されたテンプレートより良い」

「FWに依存しない共通のテンプレート」という要件を踏まえた上で、
>>350では共通テンプレートとフレームワークを繋ぐ為のアダプタと主張してるわけだが、それは理解出来るかい?
フレームワークで提供されたテンプレートにもメリットは有ると書いてるけど、日本語は理解出来るかい?
0364nobodyさん2010/06/06(日) 20:36:34ID:???
>> 362
>> ここがSmartyスレだって事忘れてない?w
>> Smarty自体がアダプタの役割も担うから。
>> アダプタパターンって知ってる?
>> Smarty本体がアダプタとして動いてくれるから、
>> フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。
> と言っていた過去の発言とも矛盾してるでしょ。

何がどう矛盾してるの?
Smarty自体がアダプタとして動作するし、フレームワーク自体を変えようがビュー側のスクリプトには何ら影響は無いよ。
そういうメリットを得たいならフレームワークで提供されたテンプレートより良いと思うし、
そういうメリットを見いだせないなら別にSmartyはいらんよって話なんだが。

メリットを受ける為の前提となる要件を無視して、矛盾云々言われてもなぁ。
君の頭が固いだけだよ。それもフレームワーク依存脳かい?
0365nobodyさん2010/06/06(日) 21:55:24ID:???
>>364
餌与えるな馬鹿
0366nobodyさん2010/06/06(日) 22:13:20ID:???
実際のところフレームワークにSmartyをかませると、速さ的にどう?
やっぱり結構表示速度遅くなっちゃうかな?
0367nobodyさん2010/06/07(月) 00:02:00ID:???
>>364
また訳の分からないことを言い始めたよこのアホは。
デザパタのアダプタパターンのことを言ってるかと思ったら
Smarty自体がアダプタとか・・・
0368nobodyさん2010/06/07(月) 00:13:50ID:???
お前からみたらこのスレにはアホしかいないんだろうから
相手しなければいいのに
わざわざやって来て書き込むのをやめられないというのは
なんか精神的な病か?
0369nobodyさん2010/06/07(月) 00:43:00ID:???
フレームワーク使ってる時点で重くなってるから、影響はあまり考えなくて良いんじゃないかなぁ
Smartyと組み合わせるってのは考えた事も無いわ
フレームワーク側が持ってるキャッシュ機構とか使いにくくなるかもしれないし
ヘルパーも用意されてるし

誰かやった事ある?
0370nobodyさん2010/06/07(月) 01:20:48ID:???
>>366
フレームワークの基本処理に比べたら超が付くほど軽いよ。
ここ数年のサーバ+PHP5環境でSmartyに置き換えただけで、体感出来るような事はまず無い。

>>367
アダプタパターンでいう所のアダプタって意味だろ。
あとデザパタって略し方はアホっぽいからやめた方がいいよw

>>368
自分より格下だと思い込んだ相手には延々語る知ったかPGっているよね。
一種のメサイアコンプレックスだよ。
0371nobodyさん2010/06/07(月) 01:41:39ID:???
>>369
ZendFramework 1.9.x + PHP5.2 + xdebugで稼働中のシステムのステップ別ベンチを取ってみたよ

●DB接続(SELECT3回発行)、セッション管理を行った場合
Smartyのコストは全体処理の15%程

●加えて細かいモデル処理等の複雑な処理を行った場合
Smartyのコストは全体処理の8%程

Smartyのコストの内約70%がファイルI/Oに起因するもの(config_load()等のファイルアクセス系)で、
render()やoutput_filterによるCPUコストはSmarty内で見ても10%に至らず、
複雑なテンプレートを処理しても数値上はほぼ横ばい。

●Zend_Viewに置き換えて空のテンプレートを処理した場合、
コストは全体処理の5%程

こちらも同じくrequire_onceが重く、ヘルパを増やせば増やすほど重くなるとおもわれる。

●結論
一切チューニングをしていないVMWare上の環境なので実際の細かい数値は変わるだろうけど、
フレームワークのViewをSmartyに置き換えたところで体感速度は変わらないと思う
0372nobodyさん2010/06/07(月) 03:34:11ID:???
>>363-364
> 簡潔でいいから具体案を出してくれよ?
> 例えばcakeとsymfonyで同じtemplateを使用するという要件を満たす場合どうするの?

Smarty View Class と sfSmartyViewPlugin を使う。
フレームワークにあわせた個別の方法で、
Smarty本体以外のライブラリを導入して、Smartyを利用可能にするわけだ。

・これはアダプタパターンではない
・Smartyだけではフレームワークに組み込んで使う事ができない

という点で、お前の主張は間違っているから、
間違った主張から導き出そうとしている答えも間違っている。

> Smarty自体がアダプタとして動作する

きちんと説明したのだから、きちんとした反論をして貰うよ。
「cakeとsymfonyでSmarty自体をアダプタとして動作させる」方法を説明してくれ。
0373nobodyさん2010/06/07(月) 03:48:28ID:???
>>371
なんかベンチという割に説明や数値が曖昧だな。

経験則で言っていいなら、まともなアプリで最も重いのはORMだ。
次がDBとテンプレートで、その次が設定ファイル。
DBにセッションを入れてるとか、RDBで無茶なORMの使い方をしているとか、
アプリのつくりがまともじゃないケースでは、Viewの差は取るに足らないだろうね。

十分に適切なアプリなら、応答時間に占めるテンプレート処理の割合はもっと高いはず。
少なくとも1/3から半分くらいだ。

なので、「速さを求める時にはテンプレートエンジンは避けたほうが良い」というのは、
生PHPとSmartyの比較と同程度に考えておいたほうが安全だと思うけど、
「速さをさほど求めない場合に気になるほどの遅さでもない」と思う。
50ミリ秒が100ミリ秒になっても別に困らないというケースも往々にしてあるわけで。
0374nobodyさん2010/06/07(月) 04:04:55ID:???
>>372
>Smarty View Class と sfSmartyViewPlugin を使う。
>フレームワークにあわせた個別の方法で、
>Smarty本体以外のライブラリを導入して、Smartyを利用可能にするわけだ。

お前はその「Smarty本体以外のライブラリ」の実装を読んだか?
インスタンス又は継承によるアダプタパターンだろ。
クラス名が異なっているが >>350 で書いてあるのと全く同じアプローチだよ。
継承によるアダプタパターン。

>・これはアダプタパターンではない
>・Smartyだけではフレームワークに組み込んで使う事ができない
という結論が間違ってるので論外です。
君はデザインパターンを応用する事が出来ない様ですね。

>「cakeとsymfonyでSmarty自体をアダプタとして動作させる」方法を説明してくれ。
>>350に書いてあるが?Smatyを継承したアダプタクラスを挟むだけですよ?
CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
0375nobodyさん2010/06/07(月) 04:13:16ID:???
>>373
経験則で言っていいのなら、
管理画面はまだしも表向き表示で重さを気にするシステムにORMは極力使わない。
良くてコントローラ&モデル処理が8割、ビューは2割ってとこだろ。
反論あるならお前さんも、ステップ単位で処理時間をベンチとってくれや。
そしたら俺のベンチも詳細上げてやるよ。

ケースバイケースな結果になると思うが、
俺は実際動かしてSmartyとZend_Viewは大差無いという結論を出したのみ。
比較対象が生PHPなら遅いかもしれんが、FWに組み込むという意味では体感はかわらん。
0376nobodyさん2010/06/07(月) 04:14:46ID:???
>>374
オープンソースライブラリの具体名を挙げてるんだから、
実際にソースを読んでみればいいのに。

それと、
「Smarty自体をアダプタとして動作させる」と
「Smatyを継承したアダプタクラスを挟む」って、意味がまったく違うだろ。

具体的にアダプタクラスとは何か、きちんと説明してみ。
自分の矛盾に気づくから。
0377nobodyさん2010/06/07(月) 04:27:34ID:???
>>372
>・これはアダプタパターンではない
sfSmartyViewPluginは委譲による実装のアダプタパターンだな。
http://d.hatena.ne.jp/shimooka/20080714/1216021170

Smarty View Class も委譲による実装のアダプタパターンだな。
http://cakeforge.org/snippet/detail.php?type=snippet&id=6

以下は全く同じだな、委譲か継承したアダプタパターンだ。
CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
ZendFW > ZendSmartyAdapter > template

やっぱりお前デザインパターンすらわかってないよ。
基礎中の基礎アダプタパターンw から再勉強してくればいいよ。


>・Smartyだけではフレームワークに組み込んで使う事ができない

ちなみにFramework間の差異を吸収しないのであれば、Smartyをそのまま適用できるよ。
CakePHP > Smarty > template
symfony > Smarty > template
ZendFW > Smarty > template

使えないのは君の知識量だな。
cakeとか言ってる時点で駄目なにおいはぷんぷんするが。
0378nobodyさん2010/06/07(月) 04:40:44ID:???
>>376
お前さ「Smartyをアダプタにすればテンプレート共通化出来るよね」って言われて
「Smarty自体をアダプタとして動作させるのと、Smatyを継承したアダプタクラスを挟むって意味が全く違うだろ」
とか見当違いのツッコミするん?w

Smartyをアダプタとして使うって時点で普通、継承なり委譲なりのラッパークラスを想像すると思うが
・・・>>350の例を見ても理解出来ないレベルなんか?・・・あまりに知識が無いのか、発想が貧弱なのか
・・・なんとなく君のレベルが見えて来たよw

誰も救われないから、大人しくcakeスレでシコシコbakeして設定ファイル量産してろよw
0379nobodyさん2010/06/07(月) 06:25:22ID:???
いつまで不毛な争いしてるんだか…
Smartyは内部でrequireしまくってるからけっこう重たかったな。
拡張モジュールで作られてるsimplateってやつはめっちゃ速かった。当然そこまで高機能ではないけどね。
0380nobodyさん2010/06/07(月) 18:29:58ID:???
確かに不毛だな。
実行環境(CPU/ネットワーク)自体の高速化と、フレームワークの肥大化によって、Smarty自体は相対的に軽いものになってしまった。
メリットデメリットはケースバイケースなのでひとくくりには出来ないし、
現場の知識や、制作者の好みで導入すればいいよ。

FWとSmartyどっちが良いか?両方メリットはあるよ。
FWとSmartyどっちが悪いか?両方デメリットはあるよ。

終結
0381nobodyさん2010/06/07(月) 18:50:46ID:???
メリットデメリットとかじゃなくて、Smartyを根絶やしにしたいだけだから
0382nobodyさん2010/06/07(月) 18:59:54ID:???
だからどういう目に遭ったらそんな深い憎しみを抱くんだよw
0383nobodyさん2010/06/07(月) 19:54:08ID:???
>>378
それは後だしジャンケンだな。

その屁理屈が成り立つなら、
「symfonyのテンプレートエンジンはアダプタである」とも言えるわけで、
「symfonyのテンプレートエンジンをcakeで使う」事も、
「symfonyのテンプレートエンジン自身がアダプタとして動作する」から、
まったく問題ないことになるじゃん。

Smartyとフレームワーク内蔵のテンプレートエンジンを比較して、
Smartyが有利であると主張していたはずなのに、
その根拠が、自分の屁理屈によって無くなってしまっているんだよ。
だから、間違った主張から導き出された答えが間違ってるよ、と指摘したんだけどな。

議論に勝ちたいからか知らんけど、自分の主張をころころ変えるから、
まわりから見てまったく意味不明になるんだと思うよ。

あと、cakeじゃなくてCakePHPだろ、といいたいのかも知れないけど、
最初にcakeという表現をしたのは>>363だろ・・・。
俺は別に意味が伝わってるからどっちでもいいけど、墓穴掘るのはだいぶ恥ずかしいぞ。
0384nobodyさん2010/06/07(月) 20:03:12ID:???
何言ってんだこいつ
0385nobodyさん2010/06/07(月) 20:21:44ID:???
このスレを見ていて思うことだが、
「Smarty否定論者がSmartyを叩く書き込みをする」のと、
「Smarty信者が特に優位性の無い部分でSmartyを絶賛する」のは、
同じくらいスレにとって害悪だよ。

極端に言えば、Smartyに利点がひとつも無くたっていいじゃん。
間違った理屈で絶賛しても否定されるだけなのは当然だよね。
それなのに、なんでわざわざ、絶賛して否定される流れを作り出してるの?

それが単に絶賛してる人の知識不足に過ぎなくて、
「それは間違っているよ」と指摘されたら受け止めるというならわかるけど、
意固地になっておかしな主張を続けるもんだからまったく意義が無い。

劣っていようがなんだろうが、Smartyは現存していて、
実際に使っているユーザがいるんだから、その情報交換をすればいいのに。

現に、少なくとも客観的な表現で、
「Smartyと別のもののどっちがいいだろう?」
と質問している場合は、スレは荒れてないじゃん。心がけの問題だと思う。
0386nobodyさん2010/06/07(月) 20:22:40ID:???
あまりにもアホすぎてかける言葉も見つからんわ。
ガキのケンカは他所でやれ。
0387nobodyさん2010/06/07(月) 20:57:11ID:???
>>383
主題を変えてるのはお前だよ(都合の悪い具体的な質問はスルーだし)
君こそ論破が目的になってないかい?

>「symfonyのテンプレートエンジンはアダプタである」とも言えるわけで、
>「symfonyのテンプレートエンジンをcakeで使う」事も、
>「symfonyのテンプレートエンジン自身がアダプタとして動作する」から、

「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
symfonyとテンプレート構文を繋ぐ為のアダプタである、という意味であれば間違いではないが、
異なるフレームワークとテンプレート構文を介するアダプタである、という意味では無理がある。

議論の発端は、
フレームワークに密結合されたテンプレートエンジンを、
他のフレームワークで使うのは困難だから疎結合のSmartyをって話だろ。
何で密結合のもので例えてるの?
symfonyじゃなくてTwigとかsimplateに置き換えれば問題無いよ。

>Smartyとフレームワーク内蔵のテンプレートエンジンを比較して、
>Smartyが有利であると主張していたはずなのに

何度も書いてるが「共通のテンプレート」という要件の下に、
Smartyのメリットを主張してるだけで、全てにおいてSmartyが勝ってる等誰も言ってないよ。

>あと、cakeじゃなくてCakePHPだろ、といいたいのかも知れないけど、
違うよw 必死にSmartyを過去のモノにしたり、無駄知識と認定したいらしいが、
cakeも所詮はPHP4実装のレガシーフレームワークな上に、
Smarty以上に無駄知識が必要な設定ファイルが必要だよね。必死にbakeってれば?って事

いいからマズイケーキでも焼いてろよ。
0388nobodyさん2010/06/07(月) 21:25:03ID:???
>>380 で結論出てるじゃん。プロならケースバイケースで使い分ける。
>>383 有益な情報を得たいならまだしも、Smartyに興味も無く批判したいだけなら、他のスレに行けばいい。ここはSmartyスレ。
0389nobodyさん2010/06/07(月) 21:53:18ID:???
ふと読み返してみた。

>>314 Smartyを使うメリットってありますか?
>>315 フレームワークが生PHPなので、生PHPが主流だよ
>>317 フレームワークに依存しないSmartyが有利な面もあるよ
>>318 >>317を否定
>>320 疎結合のメリットもあるよ
>>324 疎結合より、フレームワークなら密結合の方が良いよ
>>327 密結合にもデメリットはあるよ
>>329 フレームワークの方が優れているよ。Smartyなんて誰もが知ってるわけでは無いし、使わない方がいいよ。

以下ループ(不毛なので読み返してない)

>>329 がフレームワーク至上主義かつSmarty批判が目的だったのが発端だな。
Smartyを使うメリットは?って話だったのに、1人だけ議論がフレームワークの優位性の話になっている。
03904=353=3852010/06/07(月) 22:18:39ID:???
俺はSmartyの組み込まれたソフトも使って儲けてます。

>>387
> 「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。

その根拠は?
疎結合なsfTemplateEngineなら成り立つって解釈ではないのか?

>>387-388
「Smartyマンセー発言にレスした奴はみんな工作員だ!」
みたいな物言いをして、やれレベルがどうだcakeの悪口だと下らん批判に終始して、
自分たちとSmartyは絶対に正義なんだ、みたいな主張をしていること自体が、
カルト宗教ばりの気持ち悪さを醸し出していて、
かえってよくない結果を生んでいる事に気づいたほうがいいと思うよ。

>>329
その説明も事実とは誤っていると思う。お前の自意識と解釈はわかったけど。
0391nobodyさん2010/06/07(月) 22:22:15ID:???
頼むから喧嘩するな
0392nobodyさん2010/06/07(月) 22:47:33ID:???
>>314-329に対しての意見も述べておこう。

フレームワークに搭載されているテンプレートエンジンには、
密結合なものだけではなく、疎結合なものもある。
すべて密結合だと断定するのは間違い。

Smartyをフレームワークで使うには、連携のための処理を追加する必要がある。
これらの処理はフレームワークに依存する。
Smarty自体が自動的に連携をおこなうわけではないし、
Smarty公式がフレームワーク毎の連携ライブラリを提供しているわけでもない。

なので、フレームワークのバージョンアップによって、
上記の追加処理に変更が必要になる場合も当然に存在する。

ゆえに、
「テンプレートとしての構文の差を無くす為にSmartyが優れている」
という根拠は存在しない。

昔Smartyを使っていた人が惰性でSmartyを使い続ける事に対しては俺は異論は無い。
特に昔有名になった定番アプリみたいなやつにはSmartyが使い続けられているよね。
これをわざわざ新しいものにリプレースする必要は、個人的には感じていない。

だけど、トンデモ信者がやってきて、フレームワークでSmartyを使えとのたまうのは嫌だ。
フレームワークとSmartyは、親和性がすこぶる悪いからね。
やったことも無い人が「Smarty自体がアダプタになります(キリッ」とか言うのを見たら、
さすがに突っ込みも入れたくなるというものだわ・・・。
0393nobodyさん2010/06/07(月) 23:57:04ID:???
>>390
> 「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
>その根拠は?疎結合なsfTemplateEngineなら成り立つって解釈ではないのか?

symfony を sfTemplateEngine に書き換えればえれば成り立つんじゃない?
>> 324からずっとフレームワークと密結合に拘ってるし、
Twig もあるし symfony=sfTemplateEngine という意味での発言とは思えないが。
0394nobodyさん2010/06/08(火) 00:08:06ID:???
ここに今、Smarty信者の敗北が決定したのでした。
(第一部完)
0395nobodyさん2010/06/08(火) 01:29:56ID:???
>>392
>フレームワークのバージョンアップによって、
>上記の追加処理に変更が必要になる場合も当然に存在する。
>ゆえに、「テンプレートとしての構文の差を無くす為にSmartyが優れている」
>という根拠は存在しない。

テンプレートエンジンとフレームワークの連携に調整が入る事もあるかもしれないが、
テンプレート構文自体に変更が入るような場面ってどんな時?
テンプレートエンジンが故意にフレームワーク依存を注入しない限り、
テンプレートがフレームワークの影響を受けることはあり得ないと思うが。

>昔Smartyを使っていた人が惰性でSmartyを使い続ける事に対しては俺は異論は無い。
惰性というより、既存リソースを捨て、学習コストをかけてまでリプレースする対象か?
と問われれば絶対にYESでは無いと思うよ。

フレームワークの機能をMVC別に区切った場合、ModelとControllerの機能だけでも十二分に便利だ。
当然Viewも包括して導入すれば、より恩恵は増すと思う。

でも >>352 にも書いた通りフレームワークと一緒に毎回Viewまで覚えるのは手間がかかる。
自分1人ならまだしも、自分以外がテンプレートを担当しているような現場では、
新しいテンプレートを周知させるのはコスト的に厳しい面もあると思う。
0396nobodyさん2010/06/08(火) 01:59:56ID:???
Smartyはアダプタです(キリッ
0397nobodyさん2010/06/08(火) 04:16:11ID:???
>>390
>自分たちとSmartyは絶対に正義なんだ、みたいな主張をしている
・・・被害妄想怖いなぁw
自分たちとフレームワークは絶対に正義なんだ、みたいな主張をしだした >>329がブーメラン浴びた結果じゃないの?
あぁ、自演か。

>>392
>ゆえに、「テンプレートとしての構文の差を無くす為にSmartyが優れている」
>という根拠は存在しない。

わー、凄いね。
君にとって以下3パターンを各フレームワーク上で動かす事と、
Smartyなり外部テンプレートエンジンで書かれた構文を各フレームワーク上で動かす事の手間は同じなんだね。

Zend <?php echo $this->escape($val); ?>
Cake <?php echo h($val); ?>
Symfony <?php echo $sf_data->get('hoge'); ?>


あとさ、Smartyに限らず、
「フレームワーク+外部テンプレートエンジン」ってソリューションは多々あるけど、
外部テンプレートエンジンを使いつつ、フレームワークに依存しちゃう構文ってどんなの?
遭遇した事ないんだけど、どんなロジック混ぜちゃってるの?

それともSmartyって言葉が嫌だったかな・・・?
「テンプレート構文を吸収する為にTwigやsfTemplateEngineが優れている」とか言えば満足かな?
0398nobodyさん2010/06/08(火) 10:00:40ID:???
>「Smarty信者が特に優位性の無い部分でSmartyを絶賛する」

こんなことしてるやついるのか?
どのレスのこと指してるんだ?ベンチマークとかの部分か?
0399nobodyさん2010/06/08(火) 11:53:03ID:???
どうでもいい。

俺はSmartyを「使う」からこのスレに情報を求めにきてるんだ
「使うべきか、否か」という話は別のスレでやってくれ。

ここは「使う」としたらどう便利に使うかというスレなんだ。
0400nobodyさん2010/06/08(火) 11:54:31ID:???
Smartyを理解している、使っている人はいちいち反論とかせずスルーしてくれ。
そのうえで荒らすために、反論を装うレスを荒らしがつけるだろうが、中身を理解してないからすぐわかるんだし
0401nobodyさん2010/06/08(火) 12:55:01ID:???
フレームワークがどうのこうの、密結合とか疎結合とか、御託はいい。Smarty死滅しろ
0402nobodyさん2010/06/08(火) 21:59:39ID:???
Smartyはそれ自体がアダプタです(キリッ
0403nobodyさん2010/06/08(火) 22:27:46ID:???
水を得た魚のように得意げになってるけど、
残念ながらSmarty自体がアダプタになるってのは間違いでは無いよw
0404nobodyさん2010/06/08(火) 22:38:44ID:???
確かにアダプタ的な要素もあるわな。
0405nobodyさん2010/06/09(水) 00:59:47ID:???
※以下、Smartyに限った話では無い。他のテンプレートエンジンに置き換えてもOK。
 優劣を付ける目的でもありませんのであしからず。

●Smartyをアダプタとして考える

Client(テンプレート)はInterface(Smarty構文)に合わせておけば、
Adapter(Smarty)が適切に処理してくれる。

 (Client) {$hoge|escape}(テンプレート)
 (Target) SmartyInterface(Smarty構文)
 (Adapter) Smarty
 (Adaptee) htmlspecialchars()

上の場合、escapeの実装が変更になったり、htmlspecialcharsが廃止されたとしても、
Adapterの委譲先を変えれば良く、Clientは何も意識する必要は無い。

Adapteeがフレームワークだろうが、PHP以外の言語だろうが、Clientからすれば関係無く
Interfaceに従っておけばAdapterが対応してくれる。


フレームワーク独自のテンプレートエンジンも、上記パターンにあてはめる事が出来るが、
InterfaceがAdapteeを前提とした設計である事が多く、
Interfaceを維持したままAdapteeを変える事は現実的では無い。

当然、その設計による恩恵も多々ある。

しかし、デザインとロジックがきっちり分別されている場合、、
Interfaceに「変数処理、条件分岐、ループ、インクルード、フォーム系ヘルパ」程度があれば、
大抵のClientは実装出来てしまう場面も多々あると思う。

そんな場合はフレームワークから独立したテンプレートエンジンを採用する事で、
学習コストを減らし共通の構文が使える等のメリットを受けられる場合もある。
0406nobodyさん2010/06/09(水) 01:00:19ID:???
Smartyはそれ自体がアダプタです(キリッ
0407nobodyさん2010/06/09(水) 01:07:07ID:???
>>405 は Interface=Target と思ってください。
0408nobodyさん2010/06/09(水) 22:31:25ID:???
普通に考えてSmartyがAdaptee
でも識者はこう言うのだ。
「Smartyはそれ自体がアダプタです(キリッ 」
0409nobodyさん2010/06/09(水) 22:39:26ID:???
論点はそこじゃない。
意見ひとつまともに出来ないなら他へ行け池沼。
0410nobodyさん2010/06/09(水) 22:57:25ID:???
>普通に考えてSmartyがAdaptee
普通に考えてそれは無い・・・どんな図になるんだ?w
0411nobodyさん2010/06/10(木) 01:50:37ID:???
>>409-410
AdapterクラスがAdapteeであるSmartyを継承もしくは
Smartyに処理を委譲すると考えるのが普通。
能無し低級PGは何も考えずにガリガリ君のように実装してればいいんだよ。
0412nobodyさん2010/06/10(木) 02:21:15ID:???
>>411
テンプレートをClientとした場合、Smartyが構文差を埋めるAdapterになるよね。
って話なのに、普通はAdapterとして使わないとか言われても・・・

仮にClient=フレームワーク、Adaptee=Smartyとしても>>405のパターンは適用される。
もう少し理解力と応用力を身につけような?
君の基準では普通なのかもしれないが、普通の考え方しか出来ない様では一生低級PGのままだよ。
0413nobodyさん2010/06/10(木) 03:10:06ID:???
A君「Client=1、Adapter=2とした場合、Client + Adapter = 3 だよ」
B君「Client=3、Adapter=4とした場合、Client + Adapter = 7 だな」
>>411君「普通Adapterは0だよね?能無し低級PG共めw」
A君・B君( ・・・なにこいつ(´Д`; )
0414nobodyさん2010/06/10(木) 09:42:42ID:???
一人で何やってんの・・?
自演するにしても文章の癖くらい消せよ・・
0415nobodyさん2010/06/10(木) 09:59:28ID:???
いい加減いつまでやってるんだ?
フレームワークやデザパタの話なんて興味ないんだよ。
0416nobodyさん2010/06/10(木) 10:54:07ID:???
隔離スレだった頃も、わざわざSmartyスレに来てSmarty批判ばっかり繰り返してたヤツもいたしな
自分の意見を通さないと気が済まないんだろうけど、そういうのは他でやってくれよな

ここはSmartyスレだからさ
0417EM111-188-76-222.pool.e-mobile.ne.jp2010/06/11(金) 10:38:46ID:???
池沼はコテハン付けてID表示して書き込めっての
NG登録できないだろ
0418nobodyさん2010/06/11(金) 13:38:47ID:???
池沼相手にそんなこと言ってもな
0419nobodyさん2010/06/12(土) 01:24:52ID:???
で、Smartyの優位性って結局なんなの?
0420nobodyさん2010/06/12(土) 02:30:25ID:???
>>419
用途次第で優位にも不利にもなる
解らないなら無理に使う必要は無い。
0421nobodyさん2010/06/12(土) 09:11:15ID:???
そんなことよりSmartyをアダプタとか言ってる時点でアレだよな。
>>405とかすげートンチンカンで笑える。
■ このスレッドは過去ログ倉庫に格納されています