トップページphp
1001コメント342KB

【PHP】 Smarty 隔離スレ 【テンプレート】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/02(土) 00:21:09ID:6cKcKeTp
まぬあるhttp://www.smarty.net/manual/ja/
0488nobodyさん2009/07/08(水) 09:25:14ID:???
(1)
if ($nantoka) {
$str="yes";
} else {
$str="no";
}

result:{$str}

(2)
result:{if $nantoka}yes{else}no{/if}
04891962009/07/08(水) 09:25:17ID:???
Smarty信者はMVCフレームワークとテンプレートエンジンの区別もつかんのか
0490nobodyさん2009/07/08(水) 09:30:04ID:???
>>476で回答済の話をなぜ蒸し返す
0491nobodyさん2009/07/08(水) 10:06:46ID:???
>>487
もっと詳しく
0492nobodyさん2009/07/08(水) 12:47:51ID:???
ココでMVCの話はお門違いだけど、一寸だけ口挟む。

> どの程度までCとVを分離すればいいの?

普通、MとCを何処まで分離すればイイの?という質問が多いと思う。
" CとV "と言ってしまう時点で、MVCがまるで判っていない印象。

MVCの中心にあるのは、C(コントローラ)
何故 C かと言えば、Webアプリのエントリーポイント(プログラムの着火点)は、アドレスであると考えたから。
どんな処理でも、まずそのスクリプトにブラウザでアクセスしないと何も起こらないという事実から、エントリーポイントをアドレスと考えた。

次に、このアドレスの扱いを拡張しようと考えた。

スクリプト名 / メソッド名 / 引数 ... って感じで、アドレスから処理を操ろうとした訳だ。

この時、上記の記述を実際の処理に落とし込むのが、C(コントローラ)の役割。
C は、受け取ったアドレスから、処理の出力先を M(モデル)にするか、V(ビュー)にするか判断するだけ...

ここから、Cは只単に処理を振り分けるだけと考えれば、おのずとMVCそれぞれの割り振りも判ってくるハズ


0493nobodyさん2009/07/08(水) 12:53:19ID:???
>>492
じゃMとVはどう仕事を割り振ればいいの?
0494nobodyさん2009/07/08(水) 12:59:50ID:???
M(モデル):サーバ処理専用。主にDBがらみの処理
V(ビュー):クライアント(ブラウザ)への画面表示処理専用。ブラウザに出力するものは全てココで処理。スマーティーはこの部類に入る
0495nobodyさん2009/07/08(水) 13:11:42ID:???
でもMVCモデル自体がモデルなんだから要するにMVC全体でサーバ処理するってことなの?
0496nobodyさん2009/07/08(水) 13:53:41ID:???
MVCにとらわれすぎると、逆に可読性下げるからなぁ…
目的では無く、あくまで手法なんだからケースバイケースに実装すればいいんじゃね?

使い回し不要のビジネスロジックなんかは、Cに実装しても良いかと。
0497nobodyさん2009/07/09(木) 12:40:59ID:???
>>495
> でもMVCモデル自体がモデルなんだから要するにMVC全体でサーバ処理するってことなの?

MVCモデルのモデルは事例を示すモデル。Mのモデルとは意味が違う。
同音表記だから同じ意味とか思うなよ...大人だろ!
0498nobodyさん2009/07/09(木) 12:46:29ID:???
>>496

確かに可読性は下がる。また、RoRが過ぎるとフレームワークのブラックボックス化が著しくなり、
背後でどんな処理がなされているのか、まるで判らなくなる。

当然、カスタマイズしにくい...
0499nobodyさん2009/07/10(金) 17:05:35ID:???
MVCを意識する・理解するというのは大事だと思うんだが、
どうやってその理解を深める勉強をするの?
結局、自分でソースを書いて、良いか悪いか判断するしかないよね?

俺が書いているソースなんて、まるっきり駄目な部類かも知れないけど、
それでも目的通り動いているし、俺にとっては可読性はあってわかりやすい。
なら、それで良いのではないか?と思うんだけど、後で困るのだろうか
0500nobodyさん2009/07/10(金) 17:06:18ID:???
お前は何を言ってるんだ
0501nobodyさん2009/07/10(金) 17:19:26ID:???
「そこまでこだわるべきなのか」 ←言いたいこと
「でも、そこまで言うぐらいだから、こだわらないと困るのか」 ←疑問
0502nobodyさん2009/07/10(金) 17:21:09ID:???
>>499
>>496に「とらわれすぎると」って書いてあるだろ、
場合によってはMVCの枠組みに落とし込む事がデメリットになるって話。

例えば、数行で済む使い回し不要のコードの為にモデルを量産すると
管理が面倒だし、他との依存関係が不透明になるからロジック変更の時に面倒だよね。
そういう場合はCなりに埋め込んでしまう方がいいんじゃね?

って話。
0503nobodyさん2009/07/10(金) 18:13:16ID:aQw5S2vU
そんなのコメントしとけば依存関係は不透明にならんだろ。ただの怠慢でMVCのせいにすんな。
0504nobodyさん2009/07/10(金) 18:17:06ID:???
コメントで他のコードのどこから参照されてるか、全て把握かつ保証出来るんだ?
503さん、まじパねぇっす!
0505nobodyさん2009/07/10(金) 19:29:24ID:???
503さんはエスパーなんです!
0506nobodyさん2009/07/17(金) 01:42:54ID:???
>>494
サーバ専用処理って。。。
逆にクライアント処理をPHPで書いてもらいたいな
0507nobodyさん2009/07/17(金) 12:08:33ID:???
>>506
入力も出力もなく
サーバ内で完結する処理という意味だろうけどね。
0508nobodyさん2009/07/17(金) 12:24:47ID:???
>>506

大丈夫か?
頭打ったろ!

ザックリした説明に一々噛み付く馬鹿!
夏はイロイロ湧いてくるなぁ
0509nobodyさん2009/07/17(金) 19:58:03ID:???
自分の頭に無い解釈=不正解

だというプログラマーが多すぎです
0510nobodyさん2009/07/20(月) 22:58:34ID:KgRJffi+
勘違いしていたかも知れないんだけど、Smarty自体がMVCフレームワークだよね?
Modelは関数の処理で
Viewの部分がdisplayやfetchでテンプレ表示で
Controllerが最初のクラス実行で

自作フレームワーク+Smartyを作ってるんだが、
考えたらMVCすべてSmartyだけでもいい気がしてきた
0511nobodyさん2009/07/20(月) 23:16:35ID:???
それSmatyじゃなくて
PHP+Smartyじゃん
0512nobodyさん2009/07/20(月) 23:28:34ID:???
まあ、あながち間違ってはいないがな。
0513nobodyさん2009/07/21(火) 10:38:01ID:???
いや、間違ってるだろw
その理論だと世の中全てのPHPコードがMVC実装されてる事になる。
0514nobodyさん2009/07/21(火) 10:47:00ID:???
いや、それは「PHPでMVCを書いた」って事で
Smartyみたいに元から実装されている分けじゃないんでは?
0515nobodyさん2009/07/22(水) 00:47:18ID:???
Smartyhajimemasita
0516nobodyさん2009/07/22(水) 08:22:08ID:???
Hello! Smarty
0517nobodyさん2009/07/24(金) 20:52:45ID:kF0trrBu
で、お前らキャッシュ機能って使ってる?
0518nobodyさん2009/07/24(金) 22:28:00ID:???
キャッシュって使うもんなの?
Smartyだと使わされるもんだと思ってたよ。
0519nobodyさん2009/07/24(金) 22:42:57ID:???
>>518
コンパイル済みテンプレートとキャッシュを混同してるだろw


俺は使ってない。
本当にキャッシュが必要なページはrenderしたものを自前で静的htmlファイル生成化してるわ。
1時間に一回再生成するようなページで使えば楽んだろうけど、レアケースだよね。
0520nobodyさん2009/07/25(土) 00:10:16ID:???
>>519
批判じゃなくて興味本位だが、
なぜSmartyのキャッシュじゃなくて、自前なの?
Smartyで同じ事出来るよね?
0521nobodyさん2009/07/25(土) 01:34:19ID:???
キャッシュ使うとテンプレートの更新が反映されないんだが
更新したらキャッシュ切らないとだめなの?
05225192009/07/25(土) 05:09:32ID:???
>>520
Smartyのキャッシュって、
PHP呼び出し → Smartyインスタンス生成 → キャッシュ確認 → 出力
という処理が入るから、生成されたHTMLファイルに直接アクセスする場合と比べると負荷はかかるんだよね。

519にも書いたように定期的に自動で再生成するような場合は楽だけどさ。
自分のやってるシステムでは、管理者が任意のタイミングで再生成するのがほとんどだから、自前で実装している。

DBからのデータを差し込みつつ、出力をキャッシュするってページはあまり無いからなぁ…。
0523nobodyさん2009/07/25(土) 11:35:37ID:???
>>521
テンプレートを更新したらキャッシュを削除するのが、
一番手っ取り早いし、確実だと思うよ。
>>522
なるほど。俺は、テンプレート(ヘッダーフッターなど)を
DBで管理しているんだが、
テンプレート内にもSmartyタグを使ってるから、
自前のキャッシュファイル生成だとそれらが反映されずに困るんだよな
0524nobodyさん2009/07/26(日) 02:40:29ID:???
>>523
ん?DBから動的に書き出す(+Smartyタグを処理する)場合ってキャッシュは使えないよね?
コンパイル済みテンプレートの事?

俺の中では
キャッシュ … DBデータ等の差し込み済み出力結果を静的に保存する。
コンパイル済 … SmartyテンプレートをPHPコードとしてキャッシュする。
って定義なんだ。
これが正しいかはわからない。誰が偉い人まとめて!
0525nobodyさん2009/07/26(日) 03:26:35ID:???
じゃDBデータがあるサイトの場合は
その都度キャッシュのon/offを切り替えて使えということ?
あるいはインスタンスを分けるとか?
0526nobodyさん2009/07/26(日) 04:04:17ID:???
キャッシュするなキャッシュ自体に期限を設けるのが一般的かな、
毎回DBからデータを持ってくるのであれば、
それは事実上キャッシュは不可能。

コンパイル済テンプレートのキャッシュは常に有効にしておいて良いと思うよ。
0527nobodyさん2009/07/27(月) 11:12:36ID:???
テンプレート自体をDBに格納してるって話じゃないの?
0528nobodyさん2009/07/27(月) 11:30:56ID:???
え?
0529nobodyさん2009/07/27(月) 12:48:51ID:???
へ?
0530nobodyさん2009/07/27(月) 17:40:06ID:???
>>525 の意味がいまいちわからんのだが…
キャッシュの有効期限とかどうしてるの?
設定してあれば on / offしなくても自動でキャッシュ更新されるし、
設定していないのであれば、キャッシュは生成されないだろうし。

上にもある通り、キャッシュとコンパイル済テンプレートの認識が混ざってないかい?
0531nobodyさん2009/07/27(月) 22:41:03ID:???
え?
0532nobodyさん2009/07/28(火) 10:37:13ID:???
テンプレートってDBとかに格納しておけるの?
できるならすごい便利なんだが
0533nobodyさん2009/07/28(火) 14:22:43ID:???
>>532
できなくはないでしょ
0534nobodyさん2009/07/28(火) 15:09:38ID:???
>>532
Smartyヘルプのリソースプラグイン読んでごらん。
まんまDBからテンプレート取得するコード書いてあるから。
0535nobodyさん2009/07/28(火) 16:09:45ID:???
できなくないのは分かるけど
いまいちどういう時に使いたいのかわからん。
ファイル名でマッピングしておくのと何が違うんだろ?
0536nobodyさん2009/07/28(火) 17:56:09ID:???
>>535
updateコマンドで一括変更したり、日にちでサイトをガラッと変えたりするんじゃね
0537nobodyさん2009/07/28(火) 20:41:09ID:???
>>535
CMSとか作る場合には良いんじゃないかね。
管理画面からの検索や更新、バックアップが取りやすい。
あとはWEBサーバが冗長化されていて、リソースを一箇所に纏めたい場合とかかね。


制作の手間暇考えたら、メリットは薄いと思うけど。
0538nobodyさん2009/07/29(水) 22:00:38ID:???
>>535
ファイルをDBで管理すると、WEB上から更新できるならな。
しかし、複数アカウントを発行して利用するシステム(MTなど
の場合は、システム毎にテンプレートを編集できるので
ファイルで管理するより便利。メリットは絶大だと思う。
0539nobodyさん2009/07/30(木) 00:20:18ID:???
いや、その用途なら普通にファイル編集orアップローダのが楽だろ…
0540nobodyさん2009/07/30(木) 12:07:42ID:???
>>539
DB分かってる人ならDB使うのがラクだと思えるよ。
ファイルはすぐ腐る。
0541nobodyさん2009/07/30(木) 12:13:33ID:???
少し腐ったぐらいが美味しい...
0542nobodyさん2009/07/30(木) 12:16:56ID:???
ファイルは数が増えるとどんどん大変になるんだよな
0543nobodyさん2009/07/30(木) 16:35:27ID:???
システム作る側は楽かもね。

デザイナの大半はローカル環境でコーディング、一括でアップロードを望んでいる。
またテンプレート自体がバージョン管理下に置かれている事も多々ある。
運営する上でDBに流し込み作業が発生するのは楽ではない。
0544nobodyさん2009/07/30(木) 16:40:57ID:???
ディレクトリ分けもせずに700個のHTMLと格闘してる奴を見てるとホント馬鹿だと思えてくる
0545nobodyさん2009/07/30(木) 17:12:18ID:???
そんな奴いねーよw
0546nobodyさん2009/07/30(木) 18:40:48ID:???
700個のHTMLって時点でテンプレートを活かしてない感じが…
0547nobodyさん2009/07/30(木) 18:50:56ID:???
テンプレどころかCSSすら使ってないんですわ、マジで。
0548nobodyさん2009/07/30(木) 18:58:17ID:???
でも場末のウェブ制作屋ってほんとひどいからね。
ちょっとかじった中学生か、ってレベルのおっさんが
見てて頭痛くなってくるような非効率的な作業環境で、
素人騙して金貰ってるようなとこいっぱいあるぞ。
0549nobodyさん2009/07/30(木) 21:03:15ID:???
>>543
流し込み作業をプログラムですれば良いだけだろ
一括アップロードと変わらん
0550nobodyさん2009/07/30(木) 22:46:24ID:???
>>549
それやってしまうとファイル管理のメリットも、DB使うメリットも薄れてしまう気がするんだが。
0551nobodyさん2009/07/30(木) 23:54:04ID:???
というかDBなんてある意味ファイル管理をラップしたようなもんだから
DBでできてファイル直弄りでできんことはないだろ。
せっかくキャッシュとか使ってるのに
変なとこでDB使うとパフォーマンスのボトルネックにもなりかねんし
DBじゃなきゃ開発コストパフォーマンスの点でよっぽど差がでる
って場合じゃなきゃ下手にDB化なんかせんよ。

そういう奴は画像ファイルとかもカラムに突っこんでるタイプだろ。
0552nobodyさん2009/07/31(金) 00:03:20ID:???
どちらにしろデータとして記録するんだからファイルで置こうがDBに突っ込もうが大して変わらんだろ
0553nobodyさん2009/07/31(金) 01:55:56ID:???
Smarty使って、DBではなくファイルで管理しているWEBアプリってあるか?


って思ったけど、OpenPNEがそうだな。追加で編集する場合はDB使うけど
0554nobodyさん2009/07/31(金) 02:04:43ID:???
>>552
制作、運用、実行コスト、全てが大きく変わるわw

検索するとか、システム一括で何かしたいとか、特別な理由が無い限りDBにテンプレートつっこむのはナンセンス。
0555nobodyさん2009/07/31(金) 02:43:31ID:???
ナンセンスってほどでも無いっしょ
ファイルシステムだって名称を唯一のキーとしたDBみたいな物だし
0556nobodyさん2009/07/31(金) 03:11:10ID:???
PCのスペックが上がりまくったせいで、恐ろしいほどのヘマをしない限りは
DBで記録しようがファイルで置こうがボトルネックと呼べるレベルのものは出ない

むしろ、恐ろしいほどに数が増えて人的に整理が大変になったほうがボトルネック
0557nobodyさん2009/07/31(金) 03:49:06ID:???
>>555
だからこそナンセンスなんだよw
ファイルシステムの実装はDBそのものなんだから、DBにつっこむ必要が無いものをつっこむ必要は無い。

>>556
にわかSEにありがちな発想ですね(^^
人的整理はDBやSmarty以前のバージョン管理、運用の問題。
0558nobodyさん2009/07/31(金) 04:25:59ID:???
>>557
ほう、ではDBとFSで実装した場合の違いを定量的に示してくれ
0559nobodyさん2009/07/31(金) 04:42:31ID:???
>>558
FSじゃなきゃ出来ない事、FSなら標準で出来る事は多々あるだろう。

 ・DBコネクション等の負荷が無い
 ・当然PHP側のコードもシンプル
 ・SVN等のバージョン管理システムが使える
 ・使い慣れたエディタで直接編集が可能
 ・使い慣れたソフトでアップロード/ダウンロード/バックアックも自由自在
 ・当然複雑な管理画面も不要になる為実装コストは激減

これらはFSなら特別な実装は不要。
君はDBで実装出来るか?

検索したいとか、DBサーバで集中管理したいとか、特別な要件が無い限りテンプレートのDB化はしない。

逆にDBを疑似ファイルシステムとして使うメリットとその実装コストを教えて欲しい。
オープン系CMSを引き合いに出すのであれば、同等の管理画面等を作るコストも入れてくれよな。
0560nobodyさん2009/07/31(金) 05:22:21ID:???
定量的の意味知ってるか?
0561nobodyさん2009/07/31(金) 05:56:21ID:???
定量的って言葉使いたいだけですか?w
>>559 に答えられたら答えてやんよ。
0562nobodyさん2009/07/31(金) 10:54:30ID:???
まぁ、喧嘩するなや。
第三者からみたら、有益な討論してるように感じるんだから。
0563nobodyさん2009/07/31(金) 11:13:51ID:???
>>561
低学歴乙
0564nobodyさん2009/07/31(金) 11:35:24ID:???
>>562
有益かはともかくSmartyの議論ではなさそうだな。
0565nobodyさん2009/07/31(金) 12:20:19ID:???
>>564
Smartyの使い方に関する議論だろ
0566nobodyさん2009/07/31(金) 15:05:22ID:???
smartyってHTMLだけしか知らないデザイナーに読みやすくするためだけの技術だろ
0567nobodyさん2009/07/31(金) 16:10:10ID:???
逆だと思うが。PHPを使えるプログラマー用の技術だろ。
0568nobodyさん2009/07/31(金) 18:56:10ID:???
>>563
答えられない質問には煽る…典型的な厨ですね。

定量的も何も、FSの場合は >>559の 実装コストはほぼゼロ。
DBで作った場合のコストは?低学歴な僕には検討もつきません><おしえてください。
0569nobodyさん2009/07/31(金) 19:46:53ID:???
>>568
俺も低学歴だけど頑張ってみる
XOOPSみたく、ベースはファイルで、そっからDB突っ込む奴で考えてみた


> ・DBコネクション等の負荷が無い
キャッシュファイル使えばテンプレ本体がDBにあっても関係ない

> ・当然PHP側のコードもシンプル
プラグインで済むから同じ

> ・SVN等のバージョン管理システムが使える
ベースのテンプレートをファイルにすれば同じ

> ・使い慣れたエディタで直接編集が可能
コピペすれば一緒かと

> ・使い慣れたソフトでアップロード/ダウンロード/バックアックも自由自在
phpMyAdminは使い慣れたソフトってことで

> ・当然複雑な管理画面も不要になる為実装コストは激減
テキストボックスで十分じゃん

> 同等の管理画面等を作るコストも入れてくれよな。
phpMyAdminで十分


テンプレートがDBに入ってて便利なのは、
出先とかでftp,シェルが使えない環境でもブラウザで更新出来るに尽きるんじゃないかと
頑張れば携帯でも更新出来るし。。。
0570nobodyさん2009/07/31(金) 19:49:07ID:???
ファイル操作用のPHPコードと
DB操作用のSQLでは、後者の方が自由度高いと思うけどな
0571nobodyさん2009/07/31(金) 20:49:32ID:???
>>568
煽ったのはお前だろカスが
最初に質問したのは俺だが何故答えないの?
0572nobodyさん2009/07/31(金) 20:58:48ID:???
また「全部自分でやるから実行速度は早い」とかえらそうにしてる馬鹿が騒いでるのか
0573nobodyさん2009/07/31(金) 21:21:59ID:???
>>571
「俺だが」ってIDも出していない奴をどうやって判断する?
俺たちはエスパーじゃないぞ?
0574nobodyさん2009/07/31(金) 23:21:12ID:???
>>569
> キャッシュファイル使えばテンプレ本体がDBにあっても関係ない
テンプレート更新確認の為に、DB接続されるよ。

> プラグインで済むから同じ
プラグイン作成、テストの工数がかかるよ。

> ベースのテンプレートをファイルにすれば同じ
一括でコミットしたり、指定リビジョンにロールバックしたい場合とか困るよね。

> コピペすれば一緒かと
エディタで編集→管理画面を開く→コピペ→DBにコミット→確認が、直接編集と同じ手間と?

> phpMyAdminは使い慣れたソフトってことで
ファイルやディレクトリ単位での権限管理はどうするの?
例えば一時的にディレクトリ名を変えてバックアップ取りたい場合とか、運営者にSQLを書かせるの?

> テキストボックスで十分じゃん
見た目上はそうかもしれないが、内部実装は相応のコストがかかると思うよ。
複数ファイル同時に更新しなきゃいけない場合とかもあるしさ。

> phpMyAdminで十分
上に同じ。

> テンプレートがDBに入ってて便利なのは、
> 出先とかでftp,シェルが使えない環境でもブラウザで更新出来るに尽きるんじゃないかと
> 頑張れば携帯でも更新出来るし。。。
これはDBかFSかは関係無くね?制作者的にはSQL回す方が楽ではあるだろうけど。

>>571
>>568 で答えてるよ。FSならコストゼロ、DB実装なら相応。要件次第。
高学歴の君に、DBで同等の実装をした場合のコストを教えて欲しいな。
0575nobodyさん2009/08/01(土) 01:20:41ID:???
だから、いちいち煽り入れるなって
お前がせっかく書いたレスも陳腐な物になるぞ
0576nobodyさん2009/08/01(土) 23:36:43ID:???
>>571はどこいっちゃったの?
0577nobodyさん2009/08/02(日) 01:41:46ID:???
お前がいい加減にしろ
0578nobodyさん2009/08/02(日) 01:48:38ID:???
>>571はどこいっちゃったの?
0579nobodyさん2009/08/02(日) 03:05:41ID:???
まぁ普通はDBを使うメリットなんて無いって事さ
DB憶えたての頃は俺も無闇にDB化したがったものだ
0580nobodyさん2009/08/03(月) 01:13:56ID:???
じゃ、大手ポータルサイト(ブログとか)って
テンプレートをDBに入れずにファイルで読み書きしてるのかな?
0581nobodyさん2009/08/03(月) 03:29:39ID:???
そんな極少数の大規模案件を例えに出されてもなぁ・・・
使ってるところは使ってるだろう(ハテナとか、スケーラビリティか何かを考慮してDBをファイル置き場に使ってるとか)

要件次第なんじゃない?
それなりの資金と開発期間があり、WEBベースで不特定多数が編集するシステム開発
とかだったらDB化した方が遙かに楽だろう。
0582nobodyさん2009/08/03(月) 09:46:29ID:???
>>581
DB使うメリットないとか言っといて
結局要件しだいかよw
0583nobodyさん2009/08/03(月) 10:57:19ID:???
>>581
つまり、結局は「DB化した方が遥かに楽」なケースが”ある”ということですね
0584nobodyさん2009/08/03(月) 17:52:34ID:???
>>582-583
最初から『意味も無く』FSをDBに置き換えるのがナンセンスと書いてるじゃないかw

揚げ足取りはいいから、具体的なメリットデメリットを提示してくれよ、
大手が使ってるとか、Open系CMSが使ってるからでは話にならん。
0585nobodyさん2009/08/03(月) 18:04:36ID:???
っていうか大手CMSサイトってPHP+Smartyなの?その時点でその話は破綻している。
0586nobodyさん2009/08/03(月) 18:24:53ID:???


どちらも都合のいいように解釈しすぎで、この話はいつまで経っても平行線。
0587nobodyさん2009/08/03(月) 18:59:14ID:???
平行線にすらなっていない。
DB厨がファビョっているだけだ。
■ このスレッドは過去ログ倉庫に格納されています