【PHP】 Smarty 隔離スレ 【テンプレート】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/02(土) 00:21:09ID:6cKcKeTp0468nobodyさん
2009/05/23(土) 20:37:34ID:???phpコードに書いた和文が文字化けしてしまいます。
テンプレートの和文は文字化けしません。
phpで$smarty->assign('name', 'みなさん');として
tplに「こんにちは、{$name}!」とすると、
htmlで「こんにちは、文字化け!」とでてしまうのです。
全部UTF-8で書いています。
サーバーはsixcoreをかりており、mbstringの設定はこうしています。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,EUC-JP,SJIS,JIS,ASCII
mbstring.substitute_character = none;
今日一日中ググりまくっているんですが、どうしてもわかりません。
どなたかお助けください。おねがいします。
0469468
2009/05/23(土) 20:42:52ID:???ほんとサーセンでした!!!
0470nobodyさん
2009/05/23(土) 21:22:40ID:???はワラタ
0471nobodyさん
2009/05/23(土) 21:30:08ID:???この書き方はおかしいのでしょうか
{if $hoge!==""}text{/if}
たまにif文が動かないのでおかしいと思うのですが
0472nobodyさん
2009/05/23(土) 22:28:46ID:???===はあるけど!==はないんじゃないか?
マニュアルに記載されてないし
!($hoge==="")
に差し替えてみよう
0473nobodyさん
2009/05/23(土) 23:15:34ID:???0475nobodyさん
2009/06/30(火) 18:33:31ID:Cv5BCTzF何か利点はありますか?それとも他のフレームワークを使った方がよいですか?
フレームワークを使い比べたことがある方、教えてください。
0476nobodyさん
2009/06/30(火) 21:29:17ID:???SmartyはVのみを担当するテンプレートエンジンでしかない。
・既存のソース+Smarty
・他のフレームワーク+Smarty
という使い方が一般的です。
0477475
2009/07/01(水) 02:15:48ID:FWyhhBD1簡単ながら簡潔な意見だと思います。ありがとうございます。
0478nobodyさん
2009/07/01(水) 18:56:06ID:???0479nobodyさん
2009/07/06(月) 17:48:50ID:???HTML内にPHPコードを書いているのと変わらない。
(しかも、それを実現する為に複雑な処理をしているのでパフォが落ちる
でも、プログラマー以外がテンプレートを操作する環境なら凄い便利
0480nobodyさん
2009/07/06(月) 17:53:06ID:???0481nobodyさん
2009/07/07(火) 00:33:01ID:???0482nobodyさん
2009/07/07(火) 03:43:16ID:???大事なことなので小さく言いました。
0483nobodyさん
2009/07/07(火) 04:18:14ID:???PHPコードを書かせない(制限する)為に、Smartyがあるわけだが。
>(しかも、それを実現する為に複雑な処理をしているのでパフォが落ちる
内部的にPHPに変換及びキャッシュを行うから、きっちり設定をすればパフォ的には気にとめる程じゃ無くね?
システム規模によるだろうけど、大抵は処理全体の1割未満のリソースしか食わんよ。
上手に導入出来れば開発が相当楽になるので、結果的にコストパフォーマンスは上がるしさ。
一度Smartyの設計思想を読む事をおすすめ。
0484nobodyさん
2009/07/07(火) 16:14:30ID:???いやいや。そう言うことを言いたいんじゃないよ。
Smartyを覚えるならPHPも覚えなければいけないわけで、
フレームワークに使用するにはかなりの知識が必要だよ。
ってこと。475に対する意見として書いた。
あんたの言う「きっちり設定」する為には、それなりの知識や経験が必要だろ?
だから、経験がないと難しいって言いたかった。
0485nobodyさん
2009/07/08(水) 01:44:36ID:???最適化に関しては経験が必要だが、導入までは相当楽な部類かと思うぞ。
0486nobodyさん
2009/07/08(水) 02:16:30ID:???0487nobodyさん
2009/07/08(水) 05:06:10ID:???0488nobodyさん
2009/07/08(水) 09:25:14ID:???if ($nantoka) {
$str="yes";
} else {
$str="no";
}
↓
result:{$str}
(2)
result:{if $nantoka}yes{else}no{/if}
0489196
2009/07/08(水) 09:25:17ID:???0492nobodyさん
2009/07/08(水) 12:47:51ID:???> どの程度までCとVを分離すればいいの?
普通、MとCを何処まで分離すればイイの?という質問が多いと思う。
" CとV "と言ってしまう時点で、MVCがまるで判っていない印象。
MVCの中心にあるのは、C(コントローラ)
何故 C かと言えば、Webアプリのエントリーポイント(プログラムの着火点)は、アドレスであると考えたから。
どんな処理でも、まずそのスクリプトにブラウザでアクセスしないと何も起こらないという事実から、エントリーポイントをアドレスと考えた。
次に、このアドレスの扱いを拡張しようと考えた。
スクリプト名 / メソッド名 / 引数 ... って感じで、アドレスから処理を操ろうとした訳だ。
この時、上記の記述を実際の処理に落とし込むのが、C(コントローラ)の役割。
C は、受け取ったアドレスから、処理の出力先を M(モデル)にするか、V(ビュー)にするか判断するだけ...
ここから、Cは只単に処理を振り分けるだけと考えれば、おのずとMVCそれぞれの割り振りも判ってくるハズ
0494nobodyさん
2009/07/08(水) 12:59:50ID:???V(ビュー):クライアント(ブラウザ)への画面表示処理専用。ブラウザに出力するものは全てココで処理。スマーティーはこの部類に入る
0495nobodyさん
2009/07/08(水) 13:11:42ID:???0496nobodyさん
2009/07/08(水) 13:53:41ID:???目的では無く、あくまで手法なんだからケースバイケースに実装すればいいんじゃね?
使い回し不要のビジネスロジックなんかは、Cに実装しても良いかと。
0497nobodyさん
2009/07/09(木) 12:40:59ID:???> でもMVCモデル自体がモデルなんだから要するにMVC全体でサーバ処理するってことなの?
MVCモデルのモデルは事例を示すモデル。Mのモデルとは意味が違う。
同音表記だから同じ意味とか思うなよ...大人だろ!
0498nobodyさん
2009/07/09(木) 12:46:29ID:???確かに可読性は下がる。また、RoRが過ぎるとフレームワークのブラックボックス化が著しくなり、
背後でどんな処理がなされているのか、まるで判らなくなる。
当然、カスタマイズしにくい...
0499nobodyさん
2009/07/10(金) 17:05:35ID:???どうやってその理解を深める勉強をするの?
結局、自分でソースを書いて、良いか悪いか判断するしかないよね?
俺が書いているソースなんて、まるっきり駄目な部類かも知れないけど、
それでも目的通り動いているし、俺にとっては可読性はあってわかりやすい。
なら、それで良いのではないか?と思うんだけど、後で困るのだろうか
0500nobodyさん
2009/07/10(金) 17:06:18ID:???0501nobodyさん
2009/07/10(金) 17:19:26ID:???「でも、そこまで言うぐらいだから、こだわらないと困るのか」 ←疑問
0502nobodyさん
2009/07/10(金) 17:21:09ID:???>>496に「とらわれすぎると」って書いてあるだろ、
場合によってはMVCの枠組みに落とし込む事がデメリットになるって話。
例えば、数行で済む使い回し不要のコードの為にモデルを量産すると
管理が面倒だし、他との依存関係が不透明になるからロジック変更の時に面倒だよね。
そういう場合はCなりに埋め込んでしまう方がいいんじゃね?
って話。
0503nobodyさん
2009/07/10(金) 18:13:16ID:aQw5S2vU0504nobodyさん
2009/07/10(金) 18:17:06ID:???503さん、まじパねぇっす!
0505nobodyさん
2009/07/10(金) 19:29:24ID:???0509nobodyさん
2009/07/17(金) 19:58:03ID:???だというプログラマーが多すぎです
0510nobodyさん
2009/07/20(月) 22:58:34ID:KgRJffi+Modelは関数の処理で
Viewの部分がdisplayやfetchでテンプレ表示で
Controllerが最初のクラス実行で
自作フレームワーク+Smartyを作ってるんだが、
考えたらMVCすべてSmartyだけでもいい気がしてきた
0511nobodyさん
2009/07/20(月) 23:16:35ID:???PHP+Smartyじゃん
0512nobodyさん
2009/07/20(月) 23:28:34ID:???0513nobodyさん
2009/07/21(火) 10:38:01ID:???その理論だと世の中全てのPHPコードがMVC実装されてる事になる。
0514nobodyさん
2009/07/21(火) 10:47:00ID:???Smartyみたいに元から実装されている分けじゃないんでは?
0515nobodyさん
2009/07/22(水) 00:47:18ID:???0516nobodyさん
2009/07/22(水) 08:22:08ID:???0517nobodyさん
2009/07/24(金) 20:52:45ID:kF0trrBu0518nobodyさん
2009/07/24(金) 22:28:00ID:???Smartyだと使わされるもんだと思ってたよ。
0519nobodyさん
2009/07/24(金) 22:42:57ID:???コンパイル済みテンプレートとキャッシュを混同してるだろw
俺は使ってない。
本当にキャッシュが必要なページはrenderしたものを自前で静的htmlファイル生成化してるわ。
1時間に一回再生成するようなページで使えば楽んだろうけど、レアケースだよね。
0520nobodyさん
2009/07/25(土) 00:10:16ID:???批判じゃなくて興味本位だが、
なぜSmartyのキャッシュじゃなくて、自前なの?
Smartyで同じ事出来るよね?
0521nobodyさん
2009/07/25(土) 01:34:19ID:???更新したらキャッシュ切らないとだめなの?
0522519
2009/07/25(土) 05:09:32ID:???Smartyのキャッシュって、
PHP呼び出し → Smartyインスタンス生成 → キャッシュ確認 → 出力
という処理が入るから、生成されたHTMLファイルに直接アクセスする場合と比べると負荷はかかるんだよね。
519にも書いたように定期的に自動で再生成するような場合は楽だけどさ。
自分のやってるシステムでは、管理者が任意のタイミングで再生成するのがほとんどだから、自前で実装している。
DBからのデータを差し込みつつ、出力をキャッシュするってページはあまり無いからなぁ…。
0523nobodyさん
2009/07/25(土) 11:35:37ID:???テンプレートを更新したらキャッシュを削除するのが、
一番手っ取り早いし、確実だと思うよ。
>>522
なるほど。俺は、テンプレート(ヘッダーフッターなど)を
DBで管理しているんだが、
テンプレート内にもSmartyタグを使ってるから、
自前のキャッシュファイル生成だとそれらが反映されずに困るんだよな
0524nobodyさん
2009/07/26(日) 02:40:29ID:???ん?DBから動的に書き出す(+Smartyタグを処理する)場合ってキャッシュは使えないよね?
コンパイル済みテンプレートの事?
俺の中では
キャッシュ … DBデータ等の差し込み済み出力結果を静的に保存する。
コンパイル済 … SmartyテンプレートをPHPコードとしてキャッシュする。
って定義なんだ。
これが正しいかはわからない。誰が偉い人まとめて!
0525nobodyさん
2009/07/26(日) 03:26:35ID:???その都度キャッシュのon/offを切り替えて使えということ?
あるいはインスタンスを分けるとか?
0526nobodyさん
2009/07/26(日) 04:04:17ID:???毎回DBからデータを持ってくるのであれば、
それは事実上キャッシュは不可能。
コンパイル済テンプレートのキャッシュは常に有効にしておいて良いと思うよ。
0527nobodyさん
2009/07/27(月) 11:12:36ID:???0528nobodyさん
2009/07/27(月) 11:30:56ID:???0529nobodyさん
2009/07/27(月) 12:48:51ID:???0530nobodyさん
2009/07/27(月) 17:40:06ID:???キャッシュの有効期限とかどうしてるの?
設定してあれば on / offしなくても自動でキャッシュ更新されるし、
設定していないのであれば、キャッシュは生成されないだろうし。
上にもある通り、キャッシュとコンパイル済テンプレートの認識が混ざってないかい?
0531nobodyさん
2009/07/27(月) 22:41:03ID:???0532nobodyさん
2009/07/28(火) 10:37:13ID:???できるならすごい便利なんだが
0534nobodyさん
2009/07/28(火) 15:09:38ID:???Smartyヘルプのリソースプラグイン読んでごらん。
まんまDBからテンプレート取得するコード書いてあるから。
0535nobodyさん
2009/07/28(火) 16:09:45ID:???いまいちどういう時に使いたいのかわからん。
ファイル名でマッピングしておくのと何が違うんだろ?
0537nobodyさん
2009/07/28(火) 20:41:09ID:???CMSとか作る場合には良いんじゃないかね。
管理画面からの検索や更新、バックアップが取りやすい。
あとはWEBサーバが冗長化されていて、リソースを一箇所に纏めたい場合とかかね。
制作の手間暇考えたら、メリットは薄いと思うけど。
0538nobodyさん
2009/07/29(水) 22:00:38ID:???ファイルをDBで管理すると、WEB上から更新できるならな。
しかし、複数アカウントを発行して利用するシステム(MTなど
の場合は、システム毎にテンプレートを編集できるので
ファイルで管理するより便利。メリットは絶大だと思う。
0539nobodyさん
2009/07/30(木) 00:20:18ID:???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:???0545nobodyさん
2009/07/30(木) 17:12:18ID:???0546nobodyさん
2009/07/30(木) 18:40:48ID:???0547nobodyさん
2009/07/30(木) 18:50:56ID:???0548nobodyさん
2009/07/30(木) 18:58:17ID:???ちょっとかじった中学生か、ってレベルのおっさんが
見てて頭痛くなってくるような非効率的な作業環境で、
素人騙して金貰ってるようなとこいっぱいあるぞ。
0551nobodyさん
2009/07/30(木) 23:54:04ID:???DBでできてファイル直弄りでできんことはないだろ。
せっかくキャッシュとか使ってるのに
変なとこでDB使うとパフォーマンスのボトルネックにもなりかねんし
DBじゃなきゃ開発コストパフォーマンスの点でよっぽど差がでる
って場合じゃなきゃ下手にDB化なんかせんよ。
そういう奴は画像ファイルとかもカラムに突っこんでるタイプだろ。
0552nobodyさん
2009/07/31(金) 00:03:20ID:???0553nobodyさん
2009/07/31(金) 01:55:56ID:???って思ったけど、OpenPNEがそうだな。追加で編集する場合はDB使うけど
0554nobodyさん
2009/07/31(金) 02:04:43ID:???制作、運用、実行コスト、全てが大きく変わるわw
検索するとか、システム一括で何かしたいとか、特別な理由が無い限りDBにテンプレートつっこむのはナンセンス。
0555nobodyさん
2009/07/31(金) 02:43:31ID:???ファイルシステムだって名称を唯一のキーとしたDBみたいな物だし
0556nobodyさん
2009/07/31(金) 03:11:10ID:???DBで記録しようがファイルで置こうがボトルネックと呼べるレベルのものは出ない
むしろ、恐ろしいほどに数が増えて人的に整理が大変になったほうがボトルネック
0557nobodyさん
2009/07/31(金) 03:49:06ID:???だからこそナンセンスなんだよw
ファイルシステムの実装はDBそのものなんだから、DBにつっこむ必要が無いものをつっこむ必要は無い。
>>556
にわかSEにありがちな発想ですね(^^
人的整理はDBやSmarty以前のバージョン管理、運用の問題。
0559nobodyさん
2009/07/31(金) 04:42:31ID:???FSじゃなきゃ出来ない事、FSなら標準で出来る事は多々あるだろう。
・DBコネクション等の負荷が無い
・当然PHP側のコードもシンプル
・SVN等のバージョン管理システムが使える
・使い慣れたエディタで直接編集が可能
・使い慣れたソフトでアップロード/ダウンロード/バックアックも自由自在
・当然複雑な管理画面も不要になる為実装コストは激減
これらはFSなら特別な実装は不要。
君はDBで実装出来るか?
検索したいとか、DBサーバで集中管理したいとか、特別な要件が無い限りテンプレートのDB化はしない。
逆にDBを疑似ファイルシステムとして使うメリットとその実装コストを教えて欲しい。
オープン系CMSを引き合いに出すのであれば、同等の管理画面等を作るコストも入れてくれよな。
0560nobodyさん
2009/07/31(金) 05:22:21ID:???0562nobodyさん
2009/07/31(金) 10:54:30ID:???第三者からみたら、有益な討論してるように感じるんだから。
0566nobodyさん
2009/07/31(金) 15:05:22ID:???■ このスレッドは過去ログ倉庫に格納されています