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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/03/29(月) 14:41:04ID:???
Smarty は PHP のためのテンプレートエンジンです。
具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
0446nobodyさん2010/06/13(日) 18:55:00ID:???
軽く煽るつもりが反論出来なくなって荒らしになる典型的パターンだな
0447nobodyさん2010/06/13(日) 19:38:40ID:???
>>445
次スレの>>1にも書いておこうぜwww
0448nobodyさん2010/06/13(日) 21:10:04ID:???
次スレは池沼出入り禁止だからそれは無理だお(^ω^)
0449nobodyさん2010/06/13(日) 21:55:44ID:???
次スレのタイトルは
【フレームワークであり】Smartyスレ第3章【アダプターにもなる】
で決まりだな。
0450nobodyさん2010/06/14(月) 01:43:33ID:???
そんなことより >>449 にオススメのソフトがあるから是非活用してくれ
http://yuukiremix.s33.xrea.com/chirashi/
0451nobodyさん2010/06/14(月) 03:45:18ID:???
保存できないとかチラシの裏以下じゃね?
0452nobodyさん2010/06/14(月) 03:54:45ID:???
チラシの裏以上に使い道のない発言など保存する必要無いって事だろう
0453nobodyさん2010/06/14(月) 03:55:34ID:???
まあ、そうだなw
0454nobodyさん2010/06/14(月) 13:09:14ID:???
自演するならもうちょっと投稿時間考えてくれ
連投制限ちょうどの40秒間隔で罵りあいとか、もう見てて憐れで
0455nobodyさん2010/06/14(月) 17:03:38ID:???
また妄想で都合の悪いレスは受け流す・・・すか・・・
まじで病院行った方がいいよ。池沼。
0456nobodyさん2010/06/15(火) 13:07:55ID:???
うん。都合の悪いレスは受け流しちゃうんだ
だって都合の悪いレスに真っ向からぶつかっても、得るものないんだもの
0457nobodyさん2010/06/15(火) 16:18:23ID:???
久しぶりにここ見たけど、まだやってたw
この辺境の地ですげえな。
0458nobodyさん2010/06/15(火) 17:48:22ID:???
むしろこのスレで得るものあったのか?w
0459nobodyさん2010/06/15(火) 17:54:53ID:???
昔、よく質問に答えてもらって助かりましたので。
やっと使いこなす側になれたので、初心者がきたら(分かる所は)教えてあげられるかなと思って常駐してます。
0460nobodyさん2010/06/15(火) 18:34:46ID:???
ん?上の方で揉めてた人とは別人かい?
0461nobodyさん2010/06/16(水) 09:03:32ID:???
メンドクセーの相手にしないでよ。
持論を展開したいなら、自分のblogなりでやれば良いのに、相手にするからやり込めたくなったり、議論の為の議論にしちゃうんだからさ。
0462nobodyさん2010/06/16(水) 17:42:13ID:???
そうだな、じゃあSmarty3 RC2 の話でもするか。

各プロパティやメソッドが camelCaseや setter / getter になったのは嬉しいね。
0463nobodyさん2010/06/16(水) 18:13:58ID:???
今から勉強するならSmarty2系よりもSmarty3がいいですか?
0464nobodyさん2010/06/16(水) 18:15:32ID:???
勉強したいなら3でいいんじゃない?
業務で使うなら2のほうが枯れてて良いと思うけど
0465nobodyさん2010/06/16(水) 18:26:30ID:???
>>463
ありがとうございます
Smarty3はRCとのことですが、業務で使われるようになるのはいつごろになると思われますか?
0466nobodyさん2010/06/16(水) 18:28:46ID:???
ごめんなさい、>>465のアンカーは>>464です
0467nobodyさん2010/06/16(水) 20:34:41ID:???
>>465
Smarty2使ってる人はある程度自作プラグイン活用してるだろうし、乗り換えまでは少し時間かかるかもね。

全く初めてなら、ドキュメントやサンプルの揃ってる2から勉強するのもありかと。
0468nobodyさん2010/06/17(木) 06:07:27ID:???
ありがとうございます、2から触ってみます
0469nobodyさん2010/06/17(木) 17:53:52ID:???
3にする利点て何でしょう??
0470nobodyさん2010/06/18(金) 01:47:44ID:???
>>469
全てPHP5で書き直されて、軽量化と大幅な機能追加が行われた。

詳しくはREADME読むといいよ。
http://smarty-php.googlecode.com/svn/branches/Smarty3Dev/distribution/README

完全に書き直しただけあって現状では不具合も未知数なので、
暫くは様子見が吉だと思う。
0471nobodyさん2010/06/18(金) 17:31:08ID:???
>>470
ありがとう。PHP5のみか。
基本問題ないけど、たまーに今更PHP4とか言ってる案件あんだよね。
upgrade.php使ったりして少しは差異吸収させるけど。

ぐぐったついで。

Smarty2.0からSmarty3.0への変更点 | スイナシア
ttp://suin.asia/2010/03/06/smarty_3.0
0472nobodyさん2010/06/22(火) 11:28:33ID:???
Smarty3はphp5.3に完全対応してますか?
0473nobodyさん2010/06/22(火) 19:09:39ID:???
していますん
0474nobodyさん2010/06/28(月) 01:57:03ID:???
Smartyなんて使ってる奴まだいたんだな。
0475nobodyさん2010/06/28(月) 10:13:15ID:???
COBOLやBASICすら現役なのに、プログラマの台詞とは思えないですぞw
0476nobodyさん2010/06/28(月) 17:12:46ID:???
釣られるなよ
0477nobodyさん2010/06/29(火) 01:16:19ID:???
本当のプロはSmartyなんて使わない。
まぁ趣味でやる分にはいいんじゃない?
0478nobodyさん2010/06/29(火) 09:00:08ID:???
本当のプロは依頼主の要望に合わせる
まぁ趣味でやる分には何を嫌おうがいいじゃない?
0479nobodyさん2010/06/29(火) 17:24:50ID:???
ブラウザ三国志はSmarty
http://www.slideshare.net/ketaiorg/php-4638298
0480nobodyさん2010/06/29(火) 22:55:29ID:???
Smartyは激重だから使わない方がいい
0481nobodyさん2010/06/30(水) 12:00:10ID:???
比べればわかるSmartyは超高速。

for ($i=1 ; $i<100000000;$i++ ) {
$smarty->display('hello world.tpl');
}

for ($i=1;$i<1000000000;$i++) {
echo 'hello world';
}
0482nobodyさん2010/06/30(水) 12:31:45ID:???
そのふたつって同じ結果になる処理なのか?
0483nobodyさん2010/06/30(水) 15:44:41ID:???
Smartyが激重とか言ってる奴は、5年くらい前から知識とハードウェア構成が止まってるんだろうよw
0484nobodyさん2010/06/30(水) 18:44:24ID:???
ttp://www.slideshare.net/ketaiorg/php-4638298
Mixiブラウザ三国志の実装
・Smartyを使用してる
・Smartyは重いと言われてたけど、テストしたら別に重くなかったから採用した
とブラウザ三国志の作者が言及
0485nobodyさん2010/07/01(木) 20:16:33ID:???
お前ら、ちょっと相談ですけど、
CMSサイトをSmartyで作るとして、管理画面はSmarty使わずに
公開画面はSmartyを使ってるんですが、変ですかね?
管理画面は編集する必要ないと思っているので、使ってないのですが。
0486nobodyさん2010/07/01(木) 22:18:04ID:???
変じゃないけど、テンプレートを共有出来た方が楽な気はしないでも無い。
0487nobodyさん2010/07/02(金) 00:12:55ID:???
DreamweaverでSmartyの編集している人いる?
includeを反映させる方法「Dreamweaver Smarty でググると出てくる方法」
で反映させる事は出来たんだけど、デリミタタグを{{ }}に変更したら出来ない。
やり方知ってる人がいたら教えて下さい。
0488nobodyさん2010/07/02(金) 01:50:44ID:???
>>487
ぐぐって見たけど、複数のエクステンションがあるっぽいね。
どの方法でやってるか書かないと誰も答えられないと思うよ。
0489nobodyさん2010/07/02(金) 12:28:04ID:???
>>488
そんなに複数のエクステンションはないと思いますよ。
自分が試したのは「Dreamweaver Smarty」でググって一番上の方法と、
そのエクステンションの/transrator/SmartyInclude.htm(タグ置換ファイル)
の編集ですね。デリミタタグを{ }から{{ }}に変えるという。
0490nobodyさん2010/07/03(土) 12:42:11ID:???
なんでそんなぼかした言い方するんだ
0491nobodyさん2010/07/03(土) 16:26:42ID:???
どの方法で、どこで躓いているのかが解らないので答えようが無い
0492nobodyさん2010/07/03(土) 16:47:53ID:???
自作のMVCフレームワーク作ってるんだけど、
VをSmarty使うかどうか悩む。

Smartyにはエスケープとか日付フォーマットの変更とか使えるから、
Viewで表示を変える事は出来る。
でも、アクセス毎にコンパイルファイルが生成されるのが気になる。
サイト構造のディレクトリ分けの時とかさ。

意外とPHPフレームワークでSmarty使ってるって少ないんだよね。
Ethnaぐらいか?
0493nobodyさん2010/07/03(土) 19:52:53ID:???
>>492
コンパイルは最初の1回だけでは?毎回ソースをparseするよりは早くなるんだししょうがないっしょ。
あとはキャッシュ使うなりの運用じゃね?
0494nobodyさん2010/07/04(日) 00:41:54ID:???
Smartyって大抵のレンタルサーバーだと元から入ってるもんなの?
0495nobodyさん2010/07/04(日) 01:17:12ID:???
>>493
そうじゃなくて、templates_cとかcacheとかの置き場所に困るんだよ。
サイト構造的に、場面展開する時とかね。

あと、単純にコントローラーにSmarty変数を書いていくと
コントローラーが肥大化してしまうと言う悩みもある。
テンプレートファイルにPHP直書きだとそうでもないからね。
0496nobodyさん2010/07/04(日) 02:26:33ID:???
>>495
置き場所に困る意味がわからないのだが・・・適当な場所にディレクトリ作るだけじゃないの?

あとControllerにSmarty変数を書いてしまって肥大化ってのは、assignが面倒って事?
0497nobodyさん2010/07/04(日) 12:47:58ID:???
適当な場所に作るんだけど、
サイトが大きくなるとその管理・分け方が難しく感じる時があるんだよ。

あと、assignが面倒ってのは大きいね。
モデルからコントローラーに何らかの処理が渡って、
その結果をビュー(テンプレート)に渡すのが流れだけど、
ビュー内のSmarty変数に対してすべてassingするのが面倒。

もちろん、配列でassignして、テンプレでは
{$data.name}みたいな書き方も出来るけど。
0498nobodyさん2010/07/04(日) 18:13:08ID:???
>適当な場所に作るんだけど、
>サイトが大きくなるとその管理・分け方が難しく感じる時があるんだよ。

参考までに現在のプロジェクトディレクトリの構成教えてくれない?
俺はプロジェクリディレクトリ以下に templates/  templates_c/ chache/ を作ってる。

>あと、assignが面倒ってのは大きいね。
>モデルからコントローラーに何らかの処理が渡って、
>その結果をビュー(テンプレート)に渡すのが流れだけど、
>ビュー内のSmarty変数に対してすべてassingするのが面倒。

コントローラからビューに結果を渡す必要があるのだから、Smartyに限らずassignは発生すると思うよ
もし面倒ならコントローラに定義された変数を、自動で全てassignする機能を持たせればよいかと
その場合、コントローラ側で変数名変えたり、増やしたり、振る舞いを変えたりするとテンプレートにまで影響が出る可能性があるので注意だけど

自分用フレームワークなら、自分が使いやすい方で作るのが良いかと思う。
0499nobodyさん2010/07/04(日) 20:22:11ID:???
>>498
単純に「公開用」「会員用」「管理者用」の画面があった場合、
/templates_c
/html、/member、/admin(長くなるから横書きにした)

みたいな感じにするか
/admin
/templates
/templates_c
/cache

とするかそれぞれの好みに寄るだろうけど、
サーバにアップする時、ディレクトリ作ってパーミッションを777にして
とかいう作業が少し面倒に感じてね。

>自分用フレームワークなら、自分が使いやすい方で作るのが良いかと思う。
自分用フレームワークを他人が見ても分かる形にしたいからさ。

その時に、テンプレファイルで{$name}とするのと、<?php echo $name;?>
とするのと、一緒だと思って。
どこかで「ビューで表示を変える」というのを見たから
Smartyを使おうと思ったんだけどね。いまいち、使い方で悩むわけよ。
0500nobodyさん2010/07/04(日) 22:39:56ID:???
>>499
自分だったら
/templates/public/
/templates/member/
/templates/admin/
/templates_c/
/cache/
かな・・・ここらへんはプロジェクトディレクトリの構成によるから、
他のフレームワークを参考に決めればいいと思う。

>>自分用フレームワークを他人が見ても分かる形にしたいからさ。
で、あればView用Interfaceを作っておいて、
好きなテンプレートエンジンを組み込めるようにしておけばいいと思うよ。


実際に他のフレームワークとかビュークラスを触ってみれば良いよ
0501nobodyさん2010/07/05(月) 01:41:29ID:???
View用Interfaceを作ると結局、Smartyを使った方が良いよね
ってなるからな。

Viewとなるテンプレファイルはコントローラーで指定したいから
Interface作ると柔軟性に欠けるんだよな。俺の経験では。

フレームワークはEthnaとZendとCakeを少しかじっただけだから
まだ利点が理解できてないかも知れないけど。
ま、Smartyスレで「フレームワークのビューにSmarty使うってどうよ?」
って問いかける事自体おかしいのかもしれないがw
0502nobodyさん2010/07/05(月) 02:57:05ID:???
>>501
普通はフレームワークに柔軟性と自由度を与える為にInterface化するんだけど・・・Interface自体を思い違いしてない?
もしくはViewじゃなくてSmartyに依存しすぎたInterface設計をしてないかい?
0503nobodyさん2010/07/05(月) 04:43:21ID:???
横だけど、それぞれのモジュールの関連の深さによって、templates/templates_c分けた方が良いと思うな。
ディレクトリごと別のプロジェクトに移しても動くように。
ある意味、オブジェクト思考的なカプセル化というか、粗結合というか。
0504nobodyさん2010/07/05(月) 10:22:53ID:???
>>502
Interfaceを小一時間ほど勉強したけど、完全に勘違いしてた・・・
ただ、あまり利点(使い方)が思い浮かばない。

>で、あればView用Interfaceを作っておいて、
>好きなテンプレートエンジンを組み込めるようにしておけばいいと思うよ。

と言うのが想像出来ん。もう少し勉強してみるよ。
0505nobodyさん2010/07/07(水) 01:22:28ID:???
PHP5時代の今、まだSmartyなんか使ってるのがいたとはな
驚愕の事実だぜ。
0506nobodyさん2010/07/07(水) 02:25:23ID:???
そもそもテンプレートにPHPのコード書けば終いだもんな
キャッシュもob_get_contents使って自作すればいいし。
0507nobodyさん2010/07/07(水) 04:28:11ID:???
>キャッシュもob_get_contents使って自作すればいいし。
この一行で頭の悪さが露呈しているなw
0508nobodyさん2010/07/07(水) 10:20:55ID:???
いまだにPHP4.4.0なんだが
0509nobodyさん2010/07/07(水) 13:11:32ID:???
smartyのページキャッシュを使いたがらない人がいるんだけど、なんで?
PEARのキャッシュを使いたがるんだ。
0510nobodyさん2010/07/07(水) 13:13:49ID:???
いや、オレはSmartyのキャッシュ使ってるよ、超便利じゃん
PEARのキャッシュ使う人はSmarty使うページと使わないページがあって、それを統一したいとかじゃね?
0511nobodyさん2010/07/07(水) 13:43:12ID:???
>>507
Smarty自体がob_get_contents使ってるんだが。
0512nobodyさん2010/07/07(水) 15:47:30ID:???
キャッシュのグループ機能とか便利だよね
0513nobodyさん2010/07/07(水) 20:07:17ID:???
Smarty使うってことは
フレームワークの大部分はPHP5で記述して
ViewだけPHP4で書くのか?
ダサすぎなんだがw
0514nobodyさん2010/07/07(水) 20:10:42ID:???
フレームワークの大部分www全部じゃないの?PHP4混ざってんの?w
0515nobodyさん2010/07/07(水) 20:14:39ID:???
Smarty3はPHP5なわけだが・・・
0516nobodyさん2010/07/07(水) 21:27:58ID:???
>>514
アホは黙ってろ。

>>515
Smarty3はまだ正式リリースされてねーだろ。
0517nobodyさん2010/07/07(水) 23:07:02ID:???
>>516
日本語は正しく使おうね。
曖昧なままに書くから誤解されるんだ。

それから、冷やかし、煽り、中傷、その他他人が不快に思う言動は他でやってくれたまえ。
0518nobodyさん2010/07/07(水) 23:47:02ID:???
そんなことよりSmartyはアダプタですよ?
0519nobodyさん2010/07/07(水) 23:47:40ID:???
おい、cakePHPさんの悪口はそこまでにしとけよ!!
0520nobodyさん2010/07/08(木) 23:50:36ID:???
Smartyはそれ自体がアダプタです(キリッ
0521nobodyさん2010/07/09(金) 01:41:14ID:???
テンプレートはデザイナーにも自由に触らせます(キリッ
0522nobodyさん2010/07/09(金) 06:35:49ID:???
ほらcakeさんを馬鹿にしたから、厨が沸いちゃったでしょ!
誤って!cakeさんに誤って!PHP4でも凄いですね!って言って!!ほら!!
0523nobodyさん2010/07/09(金) 16:35:32ID:???
Smartyのprefilterで質問です。
prefilterには$tpl_sourceでテンプレートの中身(文字列)と、&$smartyが渡されるのですが
テンプレートのファイルパスを取得する方法はないでしょうか?

通常ならばセットしたテンプレートのパスがそのままなので問題ないのですが
{include}を使った場合に、インクルード「された」テンプレートのパスが分からないので困っています。

テンプレートのパスによってフィルタの挙動を変えたいと思っているもので…
0524nobodyさん2010/07/14(水) 18:02:47ID:???
スレチ失礼。ATNDより、PHP関連の勉強会を紹介します。


■Ktai Library for cakephp 勉強会@関東
URL: http://atnd.org/events/6209
日時: 2010/07/17 11:00 to 15:00
場所: マイ・スペース&ビジネスブース池袋西武横店
参加条件: Masa-Pさんの本「PHPで作る携帯サイト デベロッパーズガイド」を持参、かつ4章までを自力である程度実装できている、もしくは出来る方


■OpenPNE3で学ぶsymfony勉強会
URL: http://atnd.org/events/6255
日時: 2010/07/24 15:00 to 17:00
場所: 手嶋屋新宿御苑オフィス
内容: この勉強会は毎回OpenPNE3の各機能、仕様にフォーカスを当て、ベースフレームワークであるsymfonyを理解していく勉強会です。
参加者はみんなsymfonyに興味のあるプログラマです。Webエンジニアとのネットワークづくりにもお役立てください。


■Python4PHPer 第7回講習会
URL: http://atnd.org/events/6344
日時: 2010/08/12 10:00 to 22:00
場所: 国立オリンピック記念青少年総合センター
内容: Python未経験者向けの、PythonとGoogle App Engine (GAE) の入門講座です。


■第11回 LOCAL PHP部勉強会
URL: http://atnd.org/events/6443
日時: 2010/08/28 14:00 to 16:30
場所: 札幌市産業振興センター セミナールーム9
0525nobodyさん2010/07/14(水) 19:57:00ID:???
まともな質問にレスすらつかないスレに宣伝されてもな
0526nobodyさん2010/07/15(木) 11:02:53ID:???
Smartyと何の関係もない宣伝ってどうなのよ
0527nobodyさん2010/07/15(木) 12:52:10ID:???
RC3来たよ。
0528nobodyさん2010/07/15(木) 14:40:56ID:???
RCいつ取れんだよ
0529nobodyさん2010/07/16(金) 06:21:58ID:???
そのうちとれんだろ
0530nobodyさん2010/07/17(土) 21:47:29ID:???
Smartyってそれ自体がアダプタなんだろ?
すげーw
0531nobodyさん2010/07/17(土) 21:53:00ID:???
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
0532nobodyさん2010/07/18(日) 23:57:58ID:???
>>530
すごいよねw
何ていってもアダプタだしw
0533nobodyさん2010/07/19(月) 17:40:42ID:???
キーワード:Smarty アダプタ
0534nobodyさん2010/07/19(月) 17:43:59ID:???
compileとcacheの違いが分かりません!
0535nobodyさん2010/07/19(月) 18:47:15ID:???
実際のファイル見ればいいじゃない
0536nobodyさん2010/07/19(月) 19:52:37ID:???
compile ・・・ テンプレートをPHPコードにコンパイルしたファイル
cache ・・・ PHPコードを実行した出力結果のキャッシュ
0537nobodyさん2010/07/20(火) 01:42:52ID:???
>>536
>cache ・・・ PHPコードを実行した出力結果のキャッシュ
htmlということで宜しいか?
0538nobodyさん2010/07/20(火) 03:39:17ID:???
>>537
そう考えていいけど、キャッシュしない部分はそのままphpコードが残るはず。
0539nobodyさん2010/07/20(火) 18:17:46ID:???
教えてください。

$smarty->assign('arr',array(
'2010-07' => '7月のデータ',
'2010-08' => '8月のデータ',
));
の様にキーに-記号が含まれてる場合に
{$arr.2010-07}とすると
$arr[2010]-7みたいなパースになってしまうのですが
どのように書けばいいのでしょうか?
0540nobodyさん2010/07/20(火) 20:17:27ID:???
バッククォートでくくる
0541nobodyさん2010/07/21(水) 04:35:28ID:giVfeoMU
smarty2をphp5.2.9でつかっていて、ブラウザで出力結果を見たところ、「>」が表示されています。
が、テンプレートファイルにそんなものはなく、それどころか以下のような状況です


Safari5
-------------------------
・ソースを見ても該当箇所に > はない
<div><table class="tableH">〜〜


Firefox3.6.6
-------------------------
・ソースを見ても > はない
<div><table class="tableH">〜〜
・「>」を選択して、選択した部分のソースを表示だと
<div>
>
<table class="tableH">〜〜


Chrome5
-------------------------
・ソースを見ても > はない
<div><table class="tableH">〜〜

・「>」を選択して、要素の検証をすると
<div>
">"
<table class="tableH">〜〜


何が原因なんでしょうか? ご意見よろしくお願いします。(ブラウザは全てmacです)
05425412010/07/21(水) 04:38:29ID:giVfeoMU
Firefoxでの検証は「選択部分のソース表示」で

<div>
&gt;
<table class="tableH">〜〜

です。 すみません、半角で書いたら>に変換されたので全角に書き直しました
0543nobodyさん2010/07/21(水) 05:30:29ID:???
Smarty関係なさそうだけど。
テンプレートじゃないなら、変数確認したら。
0544nobodyさん2010/07/24(土) 20:12:03ID:???
Smarty アダプタパターン
Smarty アダプタパターン
Smarty アダプタパターン
Smarty アダプタパターン
Smarty アダプタパターン
0545nobodyさん2010/07/24(土) 23:04:53ID:???
それにしてもアダプタパターンは無いわw
■ このスレッドは過去ログ倉庫に格納されています