トップページ⇒php
984コメント324KB

【PHP】Smarty【Template】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん03/03/10 00:57ID:NhgrjNBT
このスレ、あってもいいんじゃないかと。

本家(英語)
http://smarty.php.net/

日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0804nobodyさん2005/05/14(土) 05:06:39ID:???
HTML_Template_Flexyだと タグの属性に flexy:if="foo" とか
flexy:foreach="foo,key,value" とか書けるけどこれはどう?
おいらは気に入ってます。

ただPEAR一家のみなさんはinclude_pathにあること前提で書かれてるから
Mojavi3と組み合わせると(回避する方法がないわけではないけど)autoload絡みでちと面倒。
0805nobodyさん2005/05/14(土) 06:11:56ID:???
>>803
ほんとに、デザイナーとして同意なのか?

俺は素人のお遊びサイト作るのに、Mojavi+Flexyで作ってるけど、以前と比べて、ずいぶん楽ちんになったぞ。
これ、プロ(金がらみ)の立場で見ると、制作にかかるコストが減るって事だろ。
そっちを優先しないで、デザイナーとかプログラマの職域がとか、言ってたんじゃ儲からんだろ。
0806nobodyさん2005/05/14(土) 09:45:30ID:???
>>797
Smartyと比べても余り変わらなくないか?
Smartyのループは{section ループの条件式}と{/section}で囲むだけ。
コメントにはならないが、普通にHTMLでは文字として表示されるだけ。
オーサリングツールだろうが問題無く開けるし、ブラウザでも問題無い。

それに、なんか話がおかしくなってないか?
ロジック云々言っていたのに、HTML_Template_Sigmaでロジックの話になってる。
結局、ロジック書くんじゃん。

最初はロジック書くのがどうたら言ってたのに・・・
0807nobodyさん2005/05/14(土) 11:59:01ID:???
>>806
797ではないし、Template_Sigmaは使った事ないんだけど、PHPLibの
テンプレートクラスと同じようなものだとしたら、テンプレートファイルには
基本的にブロックの開始/終了と変数のプレースホルダーしか書けない。

で、php側でブロックを繰り返したり、またはブロックの中身を読み込んで
適当に加工したり、あるいは完全に置き換えたりするわけ。
0808nobodyさん2005/05/14(土) 12:16:28ID:???
Smartyでも、こんな感じでHTMLのコメントで囲めば動くでしょ。

<!-- {section ループの条件式} -->
ループする内容
<!-- {/section} -->
0809nobodyさん2005/05/14(土) 12:48:10ID:???
>>808
「ループの条件式」ってところがロジックになってんだろ?
0810nobodyさん2005/05/14(土) 13:15:46ID:???
何このスレ
必死すぎてキモイ
0811nobodyさん2005/05/14(土) 13:32:06ID:???
良く分からんがSmartyより便利なものがあったら
じゃんじゃん教えてくれ
0812nobodyさん2005/05/14(土) 14:12:12ID:???
つHTML_TEMPLETE
0813 ◆AngelH/kMI 2005/05/14(土) 14:16:56ID:???
|x・)っ HTML_Template_Flexy
まあ、でもなんだかんだ言っても一番広まってるってのは強みやね。

Flexyみたいに、デフォルトをHTMLエスケープありにしてほしいところだけど・・・。
0814nobodyさん2005/05/14(土) 17:25:25ID:???
Smartyとかいう得たいの知れないモジュール使いたくないっしょ。
やっぱりPEARが一番安心。
0815nobodyさん2005/05/14(土) 20:04:33ID:???
>>808
Smartyはそれで動くんだ。Flexyではそれは動かなかった。
0816nobodyさん2005/05/14(土) 21:08:32ID:???
Flexy的には
<div flexy:foreach="array,key,value">
ループする内容
</div>
というのもありですな。
0817nobodyさん2005/05/14(土) 21:20:19ID:???
>>816
Flexyで、if 〜 else と続く場合に、うまく隠す方法はあります?
0818nobodyさん2005/05/14(土) 21:42:44ID:???
>>817
elseが入ると無理っぽい。
だから事前に
if ($foo) {
$flexy->setData('foo', true);
$flexy->setData('_foo', false);
} else {
$flexy->setData('foo', false);
$flexy->setData('_foo', true);
}
として、テンプレートでは
<div flexy:if="foo">〜</div>
<div flexy:if="_foo">〜</div>
とやってる。
elseifとか複雑な分岐があるときも似たような感じで。
0819nobodyさん2005/05/15(日) 04:10:00ID:???
ところで、ここってPHPのテンプレートエンジンを比較するスレなんですか?
0820 ◆AngelH/kMI 2005/05/15(日) 05:00:20ID:???
優劣は決められるものじゃないと思うよ。
どれも一長一短はあるんだし。
0821nobodyさん2005/05/15(日) 13:05:08ID:???
俺がSmartyを使わない理由

・独自タグによりロジックとデザインの分離ができていない。
・標準ライブラリではない。
0822nobodyさん2005/05/15(日) 18:50:44ID:???
標準ライブラリしか使わないなんて将来見えてますね
0823nobodyさん2005/05/15(日) 18:58:47ID:4RUI5R7m
テンプレートエンジンなんて
自作のシンプルのが一番使いやすいでしょ。
0824nobodyさん2005/05/15(日) 19:16:57ID:???
>>822
Smartyなんか使ってるあんたの将来は終わってますよ?
0825nobodyさん2005/05/15(日) 20:18:52ID:???
まぁ一応本家phpと同様 php.net 配布なわけだけどね。でもなぜPearに入らないんだろう?

独自タグっていうのもJSPと同じ位置づけと考えれば納得できると思う。
上で書かれているようにMVCのViewな訳だし。あれはあれで需要があるのは理解出来る。
0826nobodyさん2005/05/15(日) 21:39:42ID:???
>823
Smatyをシンプルに使えばいいんじゃないの?

でも、オレも
・拡張が容易
・キャッシュ処理
あたりが同等で使い勝手がいいのがあればそっちに移りたい。
0827nobodyさん2005/05/15(日) 22:35:38ID:???
新しいサイボウズってPHP+Smartyだっけ
0828nobodyさん2005/05/16(月) 00:05:33ID:???
yes
0829nobodyさん2005/05/17(火) 07:47:44ID:???
DBもMySQLの組み込みかなんかになるんだっけか
0830nobodyさん2005/05/21(土) 17:12:14ID:???
Smarty使う奴は例外なく雑魚
0831nobodyさん2005/05/21(土) 20:23:48ID:???
雑魚に雑魚とか言われてもなぁ(藁
0832nobodyさん2005/05/21(土) 21:57:23ID:???
Smarty遅くね?
速度が何か気になるんだよなァ
0833nobodyさん2005/05/21(土) 22:11:55ID:???
ウチはそういう時はキャッシュをメモリディスクに入れてる。
まぁ、ホントに smarty が悪いのか調べるのが先だろうけど。
0834nobodyさん2005/05/22(日) 01:29:43ID:???
>>831
その程度の反論しかできないんだからよほどの雑魚なんだな。
やっぱりSmarty使う奴は例外なく雑魚
0835nobodyさん2005/05/22(日) 01:45:00ID:???
>>834
なぜSmartyを使う奴が例外なく雑魚なのかを理論的に説明するのが先。

これが説明できない限り、>>834が自分自身で言っている『その程度の反論』になる。
つまり、>>834が雑魚となることを自分自身で宣言した。

という訳で、説明くださいw
0836nobodyさん2005/05/22(日) 03:15:55ID:???
>>835
デザインとロジックの分離ということについて
もう少ししっかりと考えてみたら?
そうすればSmartyが屑中の屑であることが
よく理解できると思うよ?
もし理解できないのであればお前のプログラミングセンスが
無いんだろうね。OK?
0837nobodyさん2005/05/22(日) 03:24:17ID:???
↑何か思いこみハゲス
0838nobodyさん2005/05/22(日) 03:26:30ID:???
>>836
相手に答えを求めるような方法は理論的とは言えない。

デザインとロジックの分離ということについて
もう少ししっかりと考えてみたら?
そうすればSmartyを使わない奴が屑中の屑であることが
よく理解できると思うよ?
もし理解できないのであればお前のプログラミングセンスが
無いんだろうね。OK?

と返されたらどうするの?

なぜ、Smartyを使うとデザインとロジックの分離が出来ないかを具体的に説明できないのなら、
お前さんの理論に現実味が無い事になる。

それとも、Smartyの知識が無い事を知られるのが怖いのか?
大抵の奴はSmartyについてちゃんと調べたりしてないで語ってる奴が多い。

例えば、>>788のような意見。
ロジックは記述できるが、記述しなければいいだけ。
つまり使う人間次第でロジックとデザインは分離できる。

>テンプレートってのは純粋なHTMLであるべきで、テンプレートをブラウザで
>見たらどのような物か分かるべきで、オーサリングツールで何の問題もなく
>開くことができるべき。

この意見だって、Smartyを知らないからこそ出てくるもの。
純粋にHTMLにしたければ、HTMLのコメント形式に出来る事がマニュアルに明記されている。
マニュアルから引用すれば、
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
というようにしっかりと記述されている。
0839nobodyさん2005/05/22(日) 03:47:33ID:???
Smarty重いから、Smartyより軽くて、Smartyより柔軟で、Smarty高機能なテンプレートエンジンがあったら
別に未練もないし、すぐ乗り換えるんだけど。

教えてくれよ>>834
0840nobodyさん2005/05/22(日) 03:51:12ID:???
多分、>>836はSmartyのHTML用構文が覚えられなくて干されたデザイナー。
0841nobodyさん2005/05/22(日) 06:41:17ID:???
ってゆーか、せっかくSmarty導入したのに・・・
 php側でテンプレート変数にhtml流し込むのヤメレ!そこのプログラマーさん!
 tplの中のforeach文壊すのヤメレ!ちっとはマニュアル読め!そこのデザイナーさん!
ってことにはなりやすい
もっとシステムをガチガチにすりゃいいという考え方がないわけでもないけど
やっぱりこれは別にSmartyのせいじゃなくて使ってる側の使い方の問題
0842nobodyさん2005/05/22(日) 18:31:08ID:???
MVC実践しようとなると速度が犠牲になるのは仕方がないよ
0843nobodyさん2005/05/22(日) 21:51:49ID:???
>>842
なんでSmartyが遅いというのをMVCモデルのせいにしてるわけ?
0844nobodyさん2005/05/23(月) 00:38:50ID:???
Smartyにオーバヘッドがあるのは確かだから必要ない案件
では使わなければいいだけ。

みんな必要だから使ってるんだが、それがわからない人がいる。
0845nobodyさん2005/05/23(月) 03:35:36ID:???
>>838
>例えば、>>788のような意見。
>ロジックは記述できるが、記述しなければいいだけ。
>つまり使う人間次第でロジックとデザインは分離できる。

はぁ・・・。想定の範囲内のウンコみたいなレスご苦労様です。
Smartyでそのような記述ができることは知ってるんだが。
でもSmarty使ってる奴でそんな使い方してる奴いるか?(いないね)
そもそもそのような(テンプレートにロジックを記述しない)使い方
をするならSmartyなんか使うわけが無い。
だからSmartyを使う奴はロジックとデザインの分離というものが
分かってない屑であるとはっきり言えるのよ。OK?
0846nobodyさん2005/05/23(月) 04:23:22ID:???
>>845
PHPはhtmlとPHPコードを混在した使い方ができるし、事実そのように使われている。
よってPHPを使うやつはロジックとデザインが分離できない。

みたいな論法かな。
0847nobodyさん2005/05/23(月) 09:22:25ID:???
ぶっちゃけ、Smartyつかうとロジックとデザインの分離が出来ないといってるけど、
じゃあ、何を使うと分離できるのかが知りたいよな。

それに、
>Smartyでそのような記述ができることは知ってるんだが。
>でもSmarty使ってる奴でそんな使い方してる奴いるか?(いないね)
自分でも言ってるけど、使う側の人間の問題じゃないのかな?
つまり、そういった記述すれば分離できる。

だけどさ、テンプレートにロジックを記述しない場合、
多少なりとも、ロジックの中にデザインが入るんだよな。
テンプレートだけに注目してるみたいだけど、この変どう考えてるんだろう・・・
0848nobodyさん2005/05/23(月) 10:04:32ID:???
オイラにはビジネス・ロジック(M)とプレゼンテーション・ロジック(V)を区別できていない、
或いは意図的に区別していないように見える。
0849nobodyさん2005/05/23(月) 10:20:42ID:???
>>848
あ、俺も思った。
0850nobodyさん2005/05/23(月) 11:11:06ID:???
そもそも845の言ってることにはプレゼンテーションロジックという概念がない
ロジックとデザインって言ってるだけで、何がなんだかわかってないのではないか?
0851nobodyさん2005/05/23(月) 16:37:02ID:???
俺も
ビジネスロジックの中にデザインを混入するより
テンプレートの中にプレゼンテーションロジックを書いた方が
ずっとキレイだと思う。
0852nobodyさん2005/05/23(月) 20:09:04ID:???
ビジネス・ロジックとプレゼンテーション・ロジックについて
説明してくれないか?
0853nobodyさん2005/05/23(月) 21:41:52ID:???
http://www.ipa.go.jp/jinzai/esp/15mito/gaiyo/14-17.html
これができたら845がほしいものになるんだろうな。
0854nobodyさん2005/05/24(火) 00:52:00ID:???
デザイナの裁量の範囲内に置きたいということもあるんだけどなぁ
0855nobodyさん2005/05/24(火) 04:03:50ID:???
>>853
できたらって、15年度じゃん。
開発成果にあるリンクは404だし、成果報告も中身が全然無いし、金の取り逃げか・・・
0856nobodyさん2005/05/26(木) 00:22:45ID:???
Smarty使いは劣等種
0857nobodyさん2005/05/26(木) 00:51:43ID:???
ナチ公は何を使ってるんだ?
0858nobodyさん2005/05/26(木) 12:41:56ID:???
ナチスも日本軍も仲良し。今も仲良く行こうぜ。
0859nobodyさん2005/05/28(土) 16:36:41ID:sWsyG2zN
テンプレートに書き込む変数は小文字と大文字どちらが推奨でしょうか?
0860nobodyさん2005/05/28(土) 17:40:26ID:???
>>853,855
ttp://www.kuwata-lab.com/kwartz/

コレのことだよね? ボクは使わせてもらってるけど……
0861nobodyさん2005/05/28(土) 21:50:44ID:???
>>860
Smartyで十分だなぁ・・・
0862nobodyさん2005/05/28(土) 22:19:34ID:???
まだRubyしかないのか
既に放置?
0863nobodyさん2005/05/28(土) 22:29:04ID:???
よく読んだらPHPもあるみたいだね
なかなか便利そうだが
コマンドラインから実行しなきゃいけないのが
流れ的にどうかな…
0864nobodyさん2005/05/28(土) 22:42:05ID:???
Kwartzよいかも?
もっさり感がイヤでSmartyはちょっとなぁと思ってたところなので
検討してみますか
0865nobodyさん2005/05/29(日) 00:14:17ID:???
おもしろそうだなぁ。
自分的には Makefile でユニットテストや DB クラスの自動生成とかデプロイとか
管理してるから相性もよさそう。
0866nobodyさん2005/05/29(日) 01:37:35ID:???
>>860
サンクス
なんかそれならXSTLつかえばーって気がする。
0867nobodyさん2005/06/01(水) 17:28:49ID:???
Smartyよりincludeのほうが使いやすいわ〜。面倒くさいもん。Smarty。
0868nobodyさん2005/06/01(水) 19:15:23ID:???
>>867
Smartyも理解できないの?
とても知的生命体とは思えないんですが?
0869nobodyさん2005/06/01(水) 19:17:03ID:???
>>868
は?理解してますが何か。
反論するならもっと論理的にいこうよw
0870nobodyさん2005/06/01(水) 19:23:56ID:???
また>>834かよ
0871nobodyさん2005/06/01(水) 19:24:05ID:???
>>869
理論的に反論しろというなら、Smartyとincludeを対比させて、
理論的に、どういった部分が面倒とかincludeが優れているかを説明しないと
説得力に欠けるよなw
0872nobodyさん2005/06/01(水) 19:35:14ID:???
◆include
≪メリット≫
モデル内でいちいちappendとかassignとかしなくても変数がそのまま使える。
直接<?php ?>や<?=?>が埋め込める。
≪デメリット≫
ない。最強。

・Smarty
≪メリット≫
キャッシュ。
修正子が使える。
≪デメリット≫
無駄に面倒。assignとかappendとか。
<?php ?>が埋め込めない。最悪すぎる。
0873nobodyさん2005/06/01(水) 19:55:43ID:???
>>872
><?php ?>が埋め込めない。最悪すぎる。
{php}{/php}ってしってるか
0874nobodyさん2005/06/01(水) 22:54:25ID:???
フーン
確かにincludeで済むような気がしてきたw
0875nobodyさん2005/06/01(水) 23:14:59ID:???
Smartyの明確なメリットって
「わりとデザイナーに分かりやすい」ってことくらいじゃね?
でも実際は、デザイナから受け取ってから
こっちで埋め込むことになるから(俺の場合)
includeでこと足りる気がするなぁ
どうなんだろ
0876nobodyさん2005/06/01(水) 23:37:41ID:???
includeで事足りる人は、それでいいんじゃないの?
0877nobodyさん2005/06/01(水) 23:59:35ID:???
ちなみにどういうメリットがある?
0878nobodyさん2005/06/02(木) 01:32:18ID:???
>>877
いいから寝ろ
0879nobodyさん2005/06/02(木) 01:40:30ID:???
>>875
Smartyは機能が豊富すぎてデザイナには分かりづらいだろうよ。
0880nobodyさん2005/06/02(木) 02:07:01ID:???
くだらんこといってんじゃねぇよ
0881nobodyさん2005/06/02(木) 02:22:22ID:???
キャッシュが増えすぎると遅くなるのってどうにかならないの?
遅くなったらキャッシュの意味がないんだけど。
0882nobodyさん2005/06/02(木) 07:41:30ID:???
include >>>>> 激遅Smarty
でファイナルちんぽ?
0883nobodyさん2005/06/02(木) 09:25:59ID:???
>>875
俺もその形態で動いてる。
デザイナーにSmartyマニュアル渡して「覚えてくれよ」って言っても
「はぁ?」とか言われそうだし、デザイナーが外注の場合も多いわけで。

多分、Smartyはデザイナーが仕様を覚えて、プロジェクトで使う変数などの仕様を予め共有化させ
完璧にMVCとして稼動した時に性能が発揮されるんだろうなぁって思う。
まぁ、当然と言えば当然なのか。
0884nobodyさん2005/06/02(木) 10:24:58ID:???
HTML埋め込みマクロのPHPをさらにテンプレート経由で使うなんてバカだろ
0885nobodyさん2005/06/02(木) 10:25:51ID:???
Smarty使っても結局Smartyの中では埋め込んでるだろ
0886nobodyさん2005/06/02(木) 10:26:37ID:???
売れ残った書籍の押し売り必死だな
0887nobodyさん2005/06/02(木) 11:42:44ID:???
Smartyの文法おぼえるのなんて、CSS、HTMLの知識があって、クロスブラウザ
かつValidなコーディングができる人なら訳ないよ。

ま、そんなデザイナーめったにいないわけだが。
0888nobodyさん2005/06/02(木) 12:20:07ID:???
結局ダメじゃんw
0889nobodyさん2005/06/02(木) 14:30:03ID:???
いっそのことincludeするHTMLファイルをどう書くのがベストなのか考えるスレ
0890nobodyさん2005/06/02(木) 15:33:35ID:???
ていうか、Smartyの構文覚える暇があるならPHPの構文覚えてもらった方が助かるわけで
0891nobodyさん2005/06/02(木) 15:35:03ID:???
>>889
mojavi見ろ
0892nobodyさん2005/06/02(木) 16:05:51ID:???
明確なメリット出てこないじゃねーか
なんてこった
今まで何となく新しそうだから使って来たが単なる変数埋め込みと大差ないなんて…
0893nobodyさん2005/06/02(木) 16:15:48ID:???
別途組み込み用作業料もらってプログラマが組み込めばOK。
0894nobodyさん2005/06/02(木) 16:17:07ID:???
メリット
>モデル内でいちいちappendとかassignとかしなくても変数がそのまま使える。
↑こういうのをやめさせることができる
0895nobodyさん2005/06/02(木) 16:23:24ID:???
フレームワーク的な考え方をすれば、
制限を設けさせることができるのがメリットといえばメリット。
単なるデザイナーとの連携という点ではメリットはないよ。
デザイナーとの連携なんかフルCSSデザインにして、テンプレート自体
いじる必要なくすのが一番手っ取り早いし
0896nobodyさん2005/06/02(木) 16:41:46ID:???
うん、切り分けをハッキリ出来るってことだろ
とはいえプレゼンテーションロジックも入って来るし
phpも書くことは出来る…
メリット薄っ
0897nobodyさん2005/06/02(木) 16:46:49ID:???
{php}タグは禁止できます。
Smartyの知識はないようですね。キャッシュとコンパイルの
区別も付いていない人も居るみたいですし。
0898nobodyさん2005/06/02(木) 16:55:48ID:???
ハイハイ。
0899nobodyさん2005/06/02(木) 17:03:48ID:???
それなら切り分け、取り回しの良さがメリットになるかな
あとサニタイズもやりやすい気はするなぁ
ただメリット群がモッサリした遅さと
トレードオフするかというと疑問符…やはり遅さがネックだな
0900nobodyさん2005/06/02(木) 17:10:19ID:???
急にSmarty使いの分が悪くなってきたので無理やり加勢するぞ。
Smartyにメリットが無いなんていってるやつは営業の事を全く考えていない。
何の特色も無いプログラムをアピールするのは至難だと言うことに気づけ!
「世界的に普及していて実績もあるMVCフレームワークのひとつであるSmartyは
LAMPとの相性も最高で、かつて無い抜群のパフォーマンスを発揮します」
てな調子で煽っておけばバカな客はよくわかんねーけどすごそうだと思い込むし
少しバカな客は書店などで冒頭の謳い文句だけ読んで最新技術なのか〜
なんて思い込むものさ。その結果ボったくっても文句言われにくくなるので
仕事も安定するし、収益も上がる。
ほんのわずかな実行速度や手間をケチったおかげで仕事が減っては本末転倒。
どうだ?使いたくなってきただろw
0901nobodyさん2005/06/02(木) 17:14:35ID:???
>>900
お前はデメリットを強調しにきたのか
0902nobodyさん2005/06/02(木) 17:16:49ID:???
ワラタ
0903nobodyさん2005/06/02(木) 17:31:57ID:???
営業の必要ないプロジェクトでも使ってますが。
レス数が900を超えています。1000を超えると表示できなくなるよ。