【PHP】 Smarty 【テンプレートエンジン】 第2章
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/29(月) 14:41:04ID:???具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
0322314
2010/05/30(日) 12:59:55ID:???{{ }}やー。
>>315−319
ありがとうございます。
勉強になりました。。
フレームワークとSMARTY組み合わせてもいいわけなんですよねー。
SMARTYはざっくりですが覚えたんで実用でもせっかくなんで使ってみたいと思います。
とりあえず今度フォーム系でなんか機械があったら使ってみる。
0324nobodyさん
2010/05/30(日) 18:42:49ID:???>密結合と疎結合って言葉知ってる?
>フレームワークに内包されるヘルパーは密結合。
そんな密結合になっているフレームワークのヘルパーを
ワザワザ引き剥がしてまでSmartyを使う必要ってあるんですかねぇ。
>アダプタパターンって知ってる?
>Smarty本体がアダプタとして動いてくれるから、
>フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、
>ビュー側のスクリプトには何ら影響は無い。
アダプタパターンは使わないと思いますけど(笑
0325nobodyさん
2010/05/30(日) 19:54:31ID:???自分だけsmarty使えないからって2ちゃんで同意を求めに来てるんだよなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0327nobodyさん
2010/05/30(日) 22:29:27ID:???>ワザワザ引き剥がしてまでSmartyを使う必要ってあるんですかねぇ。
上に書いてあるだろ、
・フレームワーク別にヘルパーを覚える必要がある
・フレームワーク自体のアップデートがビュー側に影響を与える恐れがある
というデメリットもあるってこった。
趣味プログラマにはいいかもしれんが、
開発人数が増えれば増えるほど、このデメリットは如実になる。
>アダプタパターンは使わないと思いますけど(笑
そりゃ君が無能だからだろ(笑)
Smarty使わないにしろ、ビュー用のインターフェースは別途用意しておいて、
各ビュースクリプトとのアダプタを作るのが、君の好きなモダンフレームワーク実装。
0328nobodyさん
2010/05/30(日) 22:51:31ID:???デザイナにテンプレート触らせるとかまずありえない。
0329nobodyさん
2010/05/30(日) 23:54:10ID:???>上に書いてあるだろ、
>・フレームワーク別にヘルパーを覚える必要がある
>・フレームワーク自体のアップデートがビュー側に影響を与える恐れがある
>というデメリットもあるってこった。
フルスタックのフレームワークに無理やり
外部のテンプレートエンジンをねじ込むんですか?
フレームワークの思想をまるっきり無視って訳ですね。
あと、フレームワークのビューには変更が入るかもしれないけど
Smartyのインターフェイスには変更が入らないという前提で
物を言ってません君?随分と都合のいい話ですね。
>趣味プログラマにはいいかもしれんが、
>開発人数が増えれば増えるほど、このデメリットは如実になる。
趣味でやってるのではないのなら尚更
Smartyなんていう外部ライブラリを使わない方がいいんじゃないですか?
君はSmartyは誰でも知っているみたいな言い方してますけど
誰もが知ってるわけじゃないし、人によっては好みもあるでしょ?
ま、私は全くもって好みじゃないですが。
>そりゃ君が無能だからだろ(笑)
>Smarty使わないにしろ、ビュー用のインターフェースは別途用意しておいて、
>各ビュースクリプトとのアダプタを作るのが、君の好きなモダンフレームワーク実装。
無能ですか?そうですか。
私が例にあげたCakePHPにもsymfonyにも
アダプタパターンは合わないと思いますけど。
そんなに自分が有能なのならコード書いてもらえません?
多分できないと思うけど(笑
0330nobodyさん
2010/05/30(日) 23:56:24ID:???ホントそうですよね。
普通の開発じゃ考えられないようなこと言ってますよねここの人達。
しかもそれを正当化。笑い話にもならないっつーの。
0331nobodyさん
2010/05/31(月) 00:47:08ID:???>誰もが知ってるわけじゃないし、人によっては好みもあるでしょ?
ここが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以外でもHTMLテンプレートエンジンは色々あるわけだし、
それにこだわる必要なんてないと思うけど。
Smartyの利点は枯れたライブラリで多くの使用実績があるのと、
>>332が言っている通りの知名度。
後発ライブラリはそれ以上のメリットもあったりするわけだから、
状況によって使い分けるべきで、フレームワーク云々の話がでるのは筋違い。
0334nobodyさん
2010/05/31(月) 05:05:52ID:???Smarty知らないんじゃ恥ずかしいだろうよ。
現役かどうかは知らんが、Smartyの普及率は相当なものだ。
もちろんSmarty以外を使うのも有りだと思うし、
その場合はSmartyと比較してこんなメリットがあるんですよ。
って言える方が賢いと思うのよ。
今の子達は、頭ごなしにSmartyが駄目駄目言ってるだけで、
具体的に何が駄目で、どう改善すればいいのか、って案も無いみたいだし。
話しすすまんなぁ
0335nobodyさん
2010/05/31(月) 05:08:07ID:???Smatry牙城を崩したいのであれば、
とりあえずSmartyを覚えて、他の技術とのメリットデメリットを提示するべきだと思うよ。
俺個人としては、新しい何かは好きなので触る価値があると思えば乗り換えるよ。
0336nobodyさん
2010/05/31(月) 10:22:49ID:???最初からSmarty牙城なんてなかった
メリットデメリット言う前に、使われてないし、これからも使われることはない
それがアンチの考えだから
0337nobodyさん
2010/05/31(月) 10:32:45ID:???0338nobodyさん
2010/05/31(月) 11:30:05ID:???0339nobodyさん
2010/05/31(月) 16:36:38ID:???いの一番にとりあげられてるという事実があるわけで・・・
リンク先は消えてたんで、それを紹介した日本語のページを
ttp://gigazine.net/index.php?/news/comments/20060803_php_template_engine/
0340nobodyさん
2010/05/31(月) 18:46:06ID:???0341nobodyさん
2010/05/31(月) 19:50:42ID:???それなのに知名度云々言ってるのは、素人としか思えない。
最近はPEARもFWに食われて目にしなくなったけど、
使えば便利なケースは多々あるし、手段として身につけておいても損は無い。
Smartyもそんな感じだと思うよ。
0342nobodyさん
2010/05/31(月) 22:02:08ID:???0343nobodyさん
2010/05/31(月) 22:33:33ID:???面倒なので手短に・・
フルスタックのFWに無理やりビューという大きな外部ライブラリを
ねじ込まないで下さい。
あと、アダプタパターンは無いわ(笑
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:???アダプタパターン最近覚えたのかな?
Gofの基礎中の基礎だからね。
でもアダプタパターンは無いわ(笑
>>345
君はフルスタックの意味とアダプタパターン(笑)の使いどころが
よく理解できてないみたいだからもう書き込まない方がいいよ。
能無しがバレますよ?
大人しくSmartyの勉強でもしてなさいっ!
0347nobodyさん
2010/06/01(火) 00:52:04ID:???いるわけでもないと思うし
皆このスレで「大人しく」していると思うんだけど
なにをしにこのスレに?
0348nobodyさん
2010/06/01(火) 02:20:16ID:???アダプタパターンは基底パターンみたいなもんだが、
君はアダプタが全く適用されないコードを書いてるのかい?
フルスタックという言葉に拘りがあるみたいだけど、君こそ言葉遊びしたいだけじゃないの?(笑
Smartyすら理解できない頭じゃ無理も無いが、
大人しくCakeをBakeしてればいいんじゃないかな?
0349nobodyさん
2010/06/03(木) 00:05:24ID:???アダプタパターンっていうのはアダプティとなるクラス(Smarty)と
ターゲットとなるクラスが比較的近いインターフェイスでないと機能しないんけど、
SmartyのようなテンプレートエンジンとCakePHPやsymfonyのような
生PHP+ヘルパ関数のビューをどのようにアダプタパターンで繋げるんですか?
ま、デザパタ覚えたので言葉を使ってみたかっただけかもしれないけど、
言うほど経験も知識も無いんだから、もうちょっと頑張りなさい。
0350nobodyさん
2010/06/03(木) 00:41:09ID:???>生PHP+ヘルパ関数のビューをどのようにアダプタパターンで繋げるんですか?
ん?それは実装の前提が違くないかい?
フレームワークとSmartyを繋ぐ事が目的じゃなくて、フレームワークとテンプレートを繋ぐことが目的で、
共通のテンプレート構文を使う為のアダプタって事だよ。
CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
ZendFW > ZendSmartyAdapter > template
CakePHP / symfony / Zend等フレームワーク固有のViewやヘルパ関数を使うと、
templateがフレームワークに依存するよね(当然メリットもあるけど)
だから、疎結合なViewクラスを挟むのもいいんじゃね?って話だが。
0351nobodyさん
2010/06/03(木) 00:50:20ID:???テンプレートがフレームワーク依存するのが嫌ならSmarty使えばいい。
使い分けるってこと出来ないの?
0352nobodyさん
2010/06/03(木) 02:11:21ID:???Cake <?php echo h($val); ?>
Symfony <?php echo $sf_data->get('hoge'); ?>
テンプレートも弄る自分的には、エスケープ一つでここまで構文が違うのは辛い。
手放せないほど便利な固有ヘルパーがあるわけでもないから、FW固有の方言やノウハウを学ぶ意欲も続かない。
そんな理由でSmartyを手放せずにいる。
0353nobodyさん
2010/06/04(金) 18:43:09ID:???学習意欲も無いのに高性能なものを無理して使うことは無いな。
Smartyで済む人は騒ぎ立てずにSmartyを使い続ければいいと思う。
>>350
Smartyと生PHPを「構文の差」として解釈してる時点で頓珍漢だと思う。
hogeFW > hogeSmartyAdapter > smarty構文のtemplate
hogeFW > php構文のtemplate
だから、Apapterパターンにはなり得ない、という話だと思うけど。
0354nobodyさん
2010/06/04(金) 20:38:49ID:???>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:???論旨が意味不明だな。
だったらSmarty要らないじゃん。
> Smatyスレで必死にSmartyを批判してる君も十分頓珍漢だと思うよw
Smartyスレで必死に頓珍漢なフレームワーク叩きをして、
スレが荒れる原因を作っているほうがよっぽどスレには不利益だと思うけどな。
0356nobodyさん
2010/06/04(金) 21:05:18ID:???>>「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:???>>354, >>356←こいつは前から一貫して意味不明なことをホザくので
俺も対応に苦慮してる。
デザパタとかFWの理解がまったくもってなってないので
話がまったく通じない。
精神異常者と話すってこういうことなんだと思った。
0359nobodyさん
2010/06/05(土) 19:44:44ID:???認識の違いって怖いですよね。
否定派がSmartyを使うことのデメリットを提示する
↓
Smarty厨が必死に抵抗(しかも意味不明)
↓
否定派が冷静にツッコミを入れる。
↓
Smarty厨ファビョル
0360nobodyさん
2010/06/05(土) 20:36:03ID:???0362nobodyさん
2010/06/06(日) 02:37:31ID:???> 君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?
フレームワークの仕様にあわせて導入するのが良いと思うけど。
> 何らかのライブラリは必要だと思うよ。
> でも、そんなの作るの面倒だからSmartyを使うけどね。
別にそれでもいいと思うけど。
それがどうして>>350みたいなアダプタになるの?
> ここがSmartyスレだって事忘れてない?w
> Smarty自体がアダプタの役割も担うから。
> アダプタパターンって知ってる?
> Smarty本体がアダプタとして動いてくれるから、
> フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。
と言っていた過去の発言とも矛盾してるでしょ。
「Smartyにはアダプタとしての機能があるからフレームワークで提供されたテンプレートより良いんだ」
というのが君の主張だったんだから、しっかり責任を持って発言してくれないと。
0363nobodyさん
2010/06/06(日) 20:23:12ID:???>フレームワークの仕様にあわせて導入するのが良いと思うけど。
質問の答えになって無いよ。
ムキになって反論してるだけじゃないなら、簡潔でいいから具体案を出してくれよ?
例えばcakeとsymfonyで同じtemplateを使用するという要件を満たす場合どうするの?
>それがどうして>>350みたいなアダプタになるの?
>「Smartyにはアダプタとしての機能があるからフレームワークで提供されたテンプレートより良い」
「FWに依存しない共通のテンプレート」という要件を踏まえた上で、
>>350では共通テンプレートとフレームワークを繋ぐ為のアダプタと主張してるわけだが、それは理解出来るかい?
フレームワークで提供されたテンプレートにもメリットは有ると書いてるけど、日本語は理解出来るかい?
0364nobodyさん
2010/06/06(日) 20:36:34ID:???>> ここがSmartyスレだって事忘れてない?w
>> Smarty自体がアダプタの役割も担うから。
>> アダプタパターンって知ってる?
>> Smarty本体がアダプタとして動いてくれるから、
>> フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。
> と言っていた過去の発言とも矛盾してるでしょ。
何がどう矛盾してるの?
Smarty自体がアダプタとして動作するし、フレームワーク自体を変えようがビュー側のスクリプトには何ら影響は無いよ。
そういうメリットを得たいならフレームワークで提供されたテンプレートより良いと思うし、
そういうメリットを見いだせないなら別にSmartyはいらんよって話なんだが。
メリットを受ける為の前提となる要件を無視して、矛盾云々言われてもなぁ。
君の頭が固いだけだよ。それもフレームワーク依存脳かい?
0366nobodyさん
2010/06/06(日) 22:13:20ID:???やっぱり結構表示速度遅くなっちゃうかな?
0367nobodyさん
2010/06/07(月) 00:02:00ID:???また訳の分からないことを言い始めたよこのアホは。
デザパタのアダプタパターンのことを言ってるかと思ったら
Smarty自体がアダプタとか・・・
0368nobodyさん
2010/06/07(月) 00:13:50ID:???相手しなければいいのに
わざわざやって来て書き込むのをやめられないというのは
なんか精神的な病か?
0369nobodyさん
2010/06/07(月) 00:43:00ID:???Smartyと組み合わせるってのは考えた事も無いわ
フレームワーク側が持ってるキャッシュ機構とか使いにくくなるかもしれないし
ヘルパーも用意されてるし
誰かやった事ある?
0370nobodyさん
2010/06/07(月) 01:20:48ID:???フレームワークの基本処理に比べたら超が付くほど軽いよ。
ここ数年のサーバ+PHP5環境でSmartyに置き換えただけで、体感出来るような事はまず無い。
>>367
アダプタパターンでいう所のアダプタって意味だろ。
あとデザパタって略し方はアホっぽいからやめた方がいいよw
>>368
自分より格下だと思い込んだ相手には延々語る知ったかPGっているよね。
一種のメサイアコンプレックスだよ。
0371nobodyさん
2010/06/07(月) 01:41:39ID:???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:???> 簡潔でいいから具体案を出してくれよ?
> 例えばcakeとsymfonyで同じtemplateを使用するという要件を満たす場合どうするの?
Smarty View Class と sfSmartyViewPlugin を使う。
フレームワークにあわせた個別の方法で、
Smarty本体以外のライブラリを導入して、Smartyを利用可能にするわけだ。
・これはアダプタパターンではない
・Smartyだけではフレームワークに組み込んで使う事ができない
という点で、お前の主張は間違っているから、
間違った主張から導き出そうとしている答えも間違っている。
> Smarty自体がアダプタとして動作する
きちんと説明したのだから、きちんとした反論をして貰うよ。
「cakeとsymfonyでSmarty自体をアダプタとして動作させる」方法を説明してくれ。
0373nobodyさん
2010/06/07(月) 03:48:28ID:???なんかベンチという割に説明や数値が曖昧だな。
経験則で言っていいなら、まともなアプリで最も重いのはORMだ。
次がDBとテンプレートで、その次が設定ファイル。
DBにセッションを入れてるとか、RDBで無茶なORMの使い方をしているとか、
アプリのつくりがまともじゃないケースでは、Viewの差は取るに足らないだろうね。
十分に適切なアプリなら、応答時間に占めるテンプレート処理の割合はもっと高いはず。
少なくとも1/3から半分くらいだ。
なので、「速さを求める時にはテンプレートエンジンは避けたほうが良い」というのは、
生PHPとSmartyの比較と同程度に考えておいたほうが安全だと思うけど、
「速さをさほど求めない場合に気になるほどの遅さでもない」と思う。
50ミリ秒が100ミリ秒になっても別に困らないというケースも往々にしてあるわけで。
0374nobodyさん
2010/06/07(月) 04:04:55ID:???>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:???経験則で言っていいのなら、
管理画面はまだしも表向き表示で重さを気にするシステムにORMは極力使わない。
良くてコントローラ&モデル処理が8割、ビューは2割ってとこだろ。
反論あるならお前さんも、ステップ単位で処理時間をベンチとってくれや。
そしたら俺のベンチも詳細上げてやるよ。
ケースバイケースな結果になると思うが、
俺は実際動かしてSmartyとZend_Viewは大差無いという結論を出したのみ。
比較対象が生PHPなら遅いかもしれんが、FWに組み込むという意味では体感はかわらん。
0376nobodyさん
2010/06/07(月) 04:14:46ID:???オープンソースライブラリの具体名を挙げてるんだから、
実際にソースを読んでみればいいのに。
それと、
「Smarty自体をアダプタとして動作させる」と
「Smatyを継承したアダプタクラスを挟む」って、意味がまったく違うだろ。
具体的にアダプタクラスとは何か、きちんと説明してみ。
自分の矛盾に気づくから。
0377nobodyさん
2010/06/07(月) 04:27:34ID:???>・これはアダプタパターンではない
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:???お前さ「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:???0382nobodyさん
2010/06/07(月) 18:59:54ID:???0383nobodyさん
2010/06/07(月) 19:54:08ID:???それは後だしジャンケンだな。
その屁理屈が成り立つなら、
「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:???主題を変えてるのはお前だよ(都合の悪い具体的な質問はスルーだし)
君こそ論破が目的になってないかい?
>「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:???>>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=385
2010/06/07(月) 22:18:39ID:???>>387
> 「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
その根拠は?
疎結合なsfTemplateEngineなら成り立つって解釈ではないのか?
>>387-388
「Smartyマンセー発言にレスした奴はみんな工作員だ!」
みたいな物言いをして、やれレベルがどうだcakeの悪口だと下らん批判に終始して、
自分たちとSmartyは絶対に正義なんだ、みたいな主張をしていること自体が、
カルト宗教ばりの気持ち悪さを醸し出していて、
かえってよくない結果を生んでいる事に気づいたほうがいいと思うよ。
>>329
その説明も事実とは誤っていると思う。お前の自意識と解釈はわかったけど。
0391nobodyさん
2010/06/07(月) 22:22:15ID:???0392nobodyさん
2010/06/07(月) 22:47:33ID:???フレームワークに搭載されているテンプレートエンジンには、
密結合なものだけではなく、疎結合なものもある。
すべて密結合だと断定するのは間違い。
Smartyをフレームワークで使うには、連携のための処理を追加する必要がある。
これらの処理はフレームワークに依存する。
Smarty自体が自動的に連携をおこなうわけではないし、
Smarty公式がフレームワーク毎の連携ライブラリを提供しているわけでもない。
なので、フレームワークのバージョンアップによって、
上記の追加処理に変更が必要になる場合も当然に存在する。
ゆえに、
「テンプレートとしての構文の差を無くす為にSmartyが優れている」
という根拠は存在しない。
昔Smartyを使っていた人が惰性でSmartyを使い続ける事に対しては俺は異論は無い。
特に昔有名になった定番アプリみたいなやつにはSmartyが使い続けられているよね。
これをわざわざ新しいものにリプレースする必要は、個人的には感じていない。
だけど、トンデモ信者がやってきて、フレームワークでSmartyを使えとのたまうのは嫌だ。
フレームワークとSmartyは、親和性がすこぶる悪いからね。
やったことも無い人が「Smarty自体がアダプタになります(キリッ」とか言うのを見たら、
さすがに突っ込みも入れたくなるというものだわ・・・。
0393nobodyさん
2010/06/07(月) 23:57:04ID:???> 「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
>その根拠は?疎結合なsfTemplateEngineなら成り立つって解釈ではないのか?
symfony を sfTemplateEngine に書き換えればえれば成り立つんじゃない?
>> 324からずっとフレームワークと密結合に拘ってるし、
Twig もあるし symfony=sfTemplateEngine という意味での発言とは思えないが。
0394nobodyさん
2010/06/08(火) 00:08:06ID:???(第一部完)
0395nobodyさん
2010/06/08(火) 01:29:56ID:???>フレームワークのバージョンアップによって、
>上記の追加処理に変更が必要になる場合も当然に存在する。
>ゆえに、「テンプレートとしての構文の差を無くす為にSmartyが優れている」
>という根拠は存在しない。
テンプレートエンジンとフレームワークの連携に調整が入る事もあるかもしれないが、
テンプレート構文自体に変更が入るような場面ってどんな時?
テンプレートエンジンが故意にフレームワーク依存を注入しない限り、
テンプレートがフレームワークの影響を受けることはあり得ないと思うが。
>昔Smartyを使っていた人が惰性でSmartyを使い続ける事に対しては俺は異論は無い。
惰性というより、既存リソースを捨て、学習コストをかけてまでリプレースする対象か?
と問われれば絶対にYESでは無いと思うよ。
フレームワークの機能をMVC別に区切った場合、ModelとControllerの機能だけでも十二分に便利だ。
当然Viewも包括して導入すれば、より恩恵は増すと思う。
でも >>352 にも書いた通りフレームワークと一緒に毎回Viewまで覚えるのは手間がかかる。
自分1人ならまだしも、自分以外がテンプレートを担当しているような現場では、
新しいテンプレートを周知させるのはコスト的に厳しい面もあると思う。
0396nobodyさん
2010/06/08(火) 01:59:56ID:???0397nobodyさん
2010/06/08(火) 04:16:11ID:???>自分たちと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:???こんなことしてるやついるのか?
どのレスのこと指してるんだ?ベンチマークとかの部分か?
0399nobodyさん
2010/06/08(火) 11:53:03ID:???俺はSmartyを「使う」からこのスレに情報を求めにきてるんだ
「使うべきか、否か」という話は別のスレでやってくれ。
ここは「使う」としたらどう便利に使うかというスレなんだ。
0400nobodyさん
2010/06/08(火) 11:54:31ID:???そのうえで荒らすために、反論を装うレスを荒らしがつけるだろうが、中身を理解してないからすぐわかるんだし
0401nobodyさん
2010/06/08(火) 12:55:01ID:???0402nobodyさん
2010/06/08(火) 21:59:39ID:???0403nobodyさん
2010/06/08(火) 22:27:46ID:???残念ながらSmarty自体がアダプタになるってのは間違いでは無いよw
0404nobodyさん
2010/06/08(火) 22:38:44ID:???0405nobodyさん
2010/06/09(水) 00:59:47ID:???優劣を付ける目的でもありませんのであしからず。
●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:???0408nobodyさん
2010/06/09(水) 22:31:25ID:???でも識者はこう言うのだ。
「Smartyはそれ自体がアダプタです(キリッ 」
0409nobodyさん
2010/06/09(水) 22:39:26ID:???意見ひとつまともに出来ないなら他へ行け池沼。
0410nobodyさん
2010/06/09(水) 22:57:25ID:???普通に考えてそれは無い・・・どんな図になるんだ?w
0411nobodyさん
2010/06/10(木) 01:50:37ID:???AdapterクラスがAdapteeであるSmartyを継承もしくは
Smartyに処理を委譲すると考えるのが普通。
能無し低級PGは何も考えずにガリガリ君のように実装してればいいんだよ。
0412nobodyさん
2010/06/10(木) 02:21:15ID:???テンプレートをClientとした場合、Smartyが構文差を埋めるAdapterになるよね。
って話なのに、普通はAdapterとして使わないとか言われても・・・
仮にClient=フレームワーク、Adaptee=Smartyとしても>>405のパターンは適用される。
もう少し理解力と応用力を身につけような?
君の基準では普通なのかもしれないが、普通の考え方しか出来ない様では一生低級PGのままだよ。
0413nobodyさん
2010/06/10(木) 03:10:06ID:???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スレだからさ
NG登録できないだろ
0418nobodyさん
2010/06/11(金) 13:38:47ID:???0419nobodyさん
2010/06/12(土) 01:24:52ID:???■ このスレッドは過去ログ倉庫に格納されています