08/02/02 00:21:09 6cKcKeTp
まぬあるURLリンク(www.smarty.net)
2:nobodyさん
08/02/02 00:31:36
smartyのことを聞きたいやつはとりあえずここに書き込め
3:nobodyさん
08/02/02 01:01:34
なんで隔離なの?
4:nobodyさん
08/02/03 10:44:03
ソースと別って意味か?
5:nobodyさん
08/02/09 22:07:45 c9Rr2KUa
HTMLの中にコードが書けるのがPHPの特徴だったのに、なんでテンプレートエンジンなんか使うの?
テンプレート使うくらいならPHPなんか使わずにPerlを使った方が効率が上がるのに。
6:nobodyさん
08/02/12 12:01:15
別にSmartyなんて質問することなくね?
7:nobodyさん
08/02/20 11:19:49 q0lktVll
カスタム関数のdefaultを空白('')にして、かつ、もし値があればstring_format(%0.1fなど)して表示するにはどうすればいいですか?(できればif文を使わずに)
現状では、値が無い場合に0.0という表示が必ず出てしまいます。
defaultを先にしても後にしても同様です。
どなたかお願いします。
8:nobodyさん
08/03/03 05:14:04
ちょっと調べてみたところ
HTMLとPHPが混在した形とSmartとで表示速度が5倍以上違う(当然前者の方が速い)らしいのだけども
なんか他に高速なテンプレートエンジンってないの?
処理速度さえ高速なら機能は最低限でいいんだけど
9:nobodyさん
08/03/03 05:30:31
10msが50msになったところで大して変わらなくね?
10:nobodyさん
08/03/03 15:19:04 FhmTLeYh
>>9
5倍も違うんだと、アクセス多いと如実に効いて来るよ。
11:nobodyさん
08/03/10 20:24:56 la5GJf3w
compile_dir配下にできるファイルの
パーミッションを0600にしたいのですが
smartyの設定でありますか?
12:nobodyさん
08/03/11 08:47:15 GwdF10l+
smartyと関係ないだろ
umaskとかしとけばいいんじゃね?
13:11
08/03/11 11:14:01
>>12
ごめんなさい
smartyの設定ではできないんですね
umaskでやることにします
14:nobodyさん
08/03/11 15:02:25
質問したいんですけどいいですか?
↓
15:nobodyさん
08/03/11 17:15:12
↓どうぞ
16:nobodyさん
08/03/11 21:41:50
それにしても、アンチスレは別だとして
「できない」ってことを言えない人がいるよね。
17:nobodyさん
08/03/12 10:42:36 gvIujdzc
キャッシュを600にする意味って何あるん?
18:nobodyさん
08/03/13 19:13:48
>>17
他人にみられたくないからだろ?
19:nobodyさん
08/03/14 21:01:04
Smartyというのは、既にフォームがPHPで書かれてて、それを自分でカスタマイズするって感じですか?
20:nobodyさん
08/03/14 21:10:40
そんなわけねーだろw
21:nobodyさん
08/03/14 21:30:53
じゃあ初心者には難しいですね
22:nobodyさん
08/03/15 02:54:21
>>21
初心者向けだよ
23:nobodyさん
08/03/15 04:31:17
初心者向けだが、素人向けではない。
24:nobodyさん
08/03/15 18:59:02
どうもお世話になってます。
SmartyはApacheで確認できないんですね
25:nobodyさん
08/03/15 19:03:04
動きました。 ありがとうございます
26:nobodyさん
08/03/18 12:21:04 YNr5gB9L
html_select_dateを使用してデフォルト値を決めた場合、javascriptを使って、変更後の値をデフォルト値に戻すことは可能でしょうか?
例えば開始と終了日付がありリセットボタンが押された際にjavascrptが、動いて片方だけデフォルト値に戻る等
27:nobodyさん
08/04/06 21:01:07
これってけっこうひどいねw
作ったやつらってあまり賢くないよなw
28:nobodyさん
08/04/07 16:47:08
>>27
誰がどう見ても、おまえよりは数倍賢いと思うぞw
29:nobodyさん
08/04/11 13:33:17 lTuTwlT7
Config_File.class.phpの130行目でOnly variable references should be returned by referenceのNoticeエラーが出る
ソースみたらリファレンスで返さなくちゃいけないのに
function &get($file_name, $section_name = NULL, $var_name = NULL)
リファレンスで返してない
return (array)$this->_config_data[$file_name]["vars"];
30:nobodyさん
08/04/14 01:03:25 iLkauD+A
assign_by_ref('test', 1)
みたいな事やるとなにがしかのエラーが出たと記憶していたのですが、
今試してみたらエラーが出ません。
どこかのバージョンから変更になったのでしょうか?
それとも元からが勘違いだったのでしょうか?
31:nobodyさん
08/04/14 05:42:53 /O4ED1WG
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
32:nobodyさん
08/04/18 06:04:17 uLMECrIl
escapeを何度も通過して実体参照を実体参照にしてしまう問題を解決したいです。
<textarea name="hoge">{$hoge|escape}</textarea>
というテンプレートで入力フォームを作りました。
入力フォームに値を入れて画面遷移するとデータベースに入力内容を入れて完了画面がでます。
同じ入力フォームでデータの更新をするページを作ると問題が発生しました。
タグ文字列は通過させながらもHTMLが壊されないようにしないといけないのですが、いい方法ないでしょうか。
33:nobodyさん
08/04/18 06:41:29
入力フォームやらデータの更新とやらの話は関係なくね?
34:nobodyさん
08/04/18 07:33:12
入力文字列をphp側で受け取ったときにunescapeすればいいのでは?
35:nobodyさん
08/04/18 08:13:30 Kck9JNI8
ページの出力時に任意のヘッダを挿入したいとき、
どのようにすればよいでしょうか。
display()する前に、phpのheader()を書くことで、
追加できてはいるのですがコードの流れ的に不自然というか・・
あと、例えばContent-lengthヘッダを追加したいとかなると、
ますますテンプレートと行き来することになり、ますます変な気がします。
Smartyでヘッダ追加の関数はあるんでしょうか。
36:nobodyさん
08/04/19 23:32:19
Smartyつかうとすげー楽になるっていう実例おしえてくだしあ!!
37:nobodyさん
08/04/19 23:35:20
マニュアル見れば書いてあるよ
38:nobodyさん
08/04/20 00:29:00 ui/WcxXd
>>36
キャッシュとかカスタムプラグインとかいろいろ
39:nobodyさん
08/04/20 00:33:38
しかしキャッシュONにするとテンプレート変更しても反映されないのは何とかならないものか
40:nobodyさん
08/04/20 04:24:32
それマジでダルいよな。
変更判定をしっかりやって欲しい
41:nobodyさん
08/04/22 19:44:38
>>36
複数のサーバで同じシステム使っているのだが
phpファイルの変更にはツール使って一発で全サーバ更新できるので便利。
デザインやリンク先の違いも全部吸収できる。
まあテンプレートエンジンならなんでもいいんだけど
速度よりメンテ性重視にするとSmartyになった。
42:nobodyさん
08/04/22 21:38:51
>>41
何それどういうツール?
43:nobodyさん
08/04/23 00:52:29
思うんだけど、Smarty使って{}のコードをhtmlに埋めるのと
PHPの<?php ?>でhtmlファイルをPHP化して埋めるのと、
あまり大差無いと思うんだが。
デザインとプログラムの分離としてしばらく勉強してきたけど、
Smarty専用のコードを覚える=プログラムを覚えることと同義な気がする。
44:nobodyさん
08/04/23 01:22:37
Smatyの機能は{$var}で変数が表示できることだけですよね。わかります。
45:nobodyさん
08/04/23 04:20:00
でも、デザイナがなんとなく書いたPHPコード付きhtmlなんて怖くて使えないだろ?w
誰かSmartyリファクタリングしてくんねーかなぁ、
default_modifiersバグや、キャッシュの反映チェックがぬるい等
便利機能がいまいち使いこなせないのが辛い。
46:nobodyさん
08/04/23 11:20:20
>でも、デザイナがなんとなく書いたPHPコード付きhtmlなんて怖くて使えないだろ?w
それもあるんだよなw
一度デザイナーからhtmlを受け取ってシステム化した後、
修正が入る場合、画像作成とか以外では、PG側がしなきゃいけないもんな。
でも、それもデザイナーがSmartyのソースいじる可能性もあるし、
やっぱり同じ事のような気がする。だから厳密なデザインとプログラムの分離
とは行かないんだよな。
47:nobodyさん
08/04/23 15:25:42 pSFXKy0F
>>42
ボタン1つで複数のサーバにsshアップロードする機能があるFSW。というか自作だけど。
以前はテンプレートエンジンなしでこのツール作ってたが1サイトだけマーキー入れてほしいとかいう要望に対しては
手作業で対応するしかなかった。
もちろんサイト間の差分なんか把握できるわけない・・・
>>46
>>44みたいな使い方もできるし、デザイナにもっと権限を与えることもできる、でいいんじゃないかなあ。
48:nobodyさん
08/04/23 16:01:50
ロジックの分離というより、権限管理的な意味合いが濃いんじゃないかな。
故意にPHPコードを書かない限りは、Smarty内で簡潔するので、安全っちゃ安全。
49:nobodyさん
08/04/23 19:51:43 rNbxu3m+
質問です。
yum install php-Smarty
がインストールできないのですが、なんで?
その前にインスコしておくものはありますか?
CENT OSなんですが....
50:nobodyさん
08/04/23 20:00:10
そんなんで知るかボケ
51:49です。
08/04/23 21:36:12 rNbxu3m+
どこで質問すればいいの?
52:nobodyさん
08/04/23 23:04:45
osスレ
53:nobodyさん
08/04/24 15:44:39
中身はただのphpファイルなんだからtgzファイル落として解凍するだけでいいんじゃね?
こういうのってパッケージ管理使う意味あるのかな。
54:nobodyさん
08/04/24 15:50:43
楽
55:nobodyさん
08/04/24 21:52:29
pearifiedをpearのチャンネルに追加してそっからSmartyをとってくると楽。
56:nobodyさん
08/04/26 23:54:58
ちょっと使ってみた。
sqlserverでカラム名が和名。
select 住所1 from 得意先マスタ
その和名のまま連想配列にしてテンプレートに渡すとエラーになる。
select 住所1 as zyuusyo1 from 得意先マスタ
これで渡すとzyuusyo1でちゃんと取得できる。
まあ、和名テーブルやらカラムを作るなって話だが、今あるからしかたない。
まだまだ、和名には弱いのかなぁ?実はパッチがあったりしますか?
あと、テンプレート側で、都道府県名と言う文字列を含めるとエラーになる。
県名にかえたらエラーでず。
んーーーー。不便。
57:nobodyさん
08/04/27 00:37:38
住所1て
58:nobodyさん
08/04/27 08:48:29
文句を垂れる前に、日本語文字コードについて学べ。
59:nobodyさん
08/04/27 12:24:18
ところで、皆Smartyの拡張クラスの名前何にしてる?
MySmartyだと、何かダサイ気がしてならない
60:nobodyさん
08/04/27 14:53:43
EternalForceSmarty
相手は死ぬ
61:nobodyさん
08/04/28 10:19:07
>>59
変な名前付けてあとでわからなくなるより
MySmarty
かっこいいのがいいなら
SuperSmarty
62:nobodyさん
08/04/28 11:48:26
MySmartyだと用途がはっきりしないので、
SmartyMobile
SmartyWeb
SmartySitename
SmartyView
的な命名の方がよくね?
63:nobodyさん
08/04/28 12:11:28
あれ? 今回なんて名前にしたっけ?
って考えるのが面倒くさいから、いつもMySmarty
64:nobodyさん
08/04/28 18:00:24
俺はいつもYouSmarty
65:nobodyさん
08/04/28 18:33:55
PHPだからできる $smarty
66:ムームー
08/05/02 02:13:12 xWzxYhLM
$template_dir に関するマニュアルに、
「このディレクトリをwebサーバのドキュメントルート下に置く事を推奨しません。」
と書いてあるんだけど、根拠がわかる人いる?
67:nobodyさん
08/05/02 02:14:59
逆になぜ置く必要があるのか
68:nobodyさん
08/05/02 02:26:22
httpdの設定ミスってテンプレートだだ漏れ
おまけに内部のデータ構造も推測できちゃう作りでしたとかやる奴がいるからだろう
69:ムームー
08/05/02 03:55:53 xWzxYhLM
>>64
> 逆になぜ置く必要があるのか
テンプレートを別ディレクトリに配置すると、保守性が悪いから。
>>68
> httpdの設定ミスってテンプレートだだ漏れ
> おまけに内部のデータ構造も推測できちゃう作りでした
テンプレートが見られても、あんまり危険性がないと思うんだけどな。
escape し忘れて XSS される、ぐらいかな。
でも、そんなのはテンプレート見るまでもなく、
実際に入力してみれば escape していないことはすぐ分かるしさ。
70:nobodyさん
08/05/02 08:18:26
逆に考えるんだ,公開する必要があるディレクトリをドキュメントルート以下に置くと考えるんだ
もしくはせめてaccessでも使え
71:nobodyさん
08/05/02 12:35:17
>>69
テンプレの構造を解析されて、直接変数へバッファオーバーフローを起こす様な汚染データを打ち込まれる
72:nobodyさん
08/05/02 13:35:15
つーかさ、そこまで承知の上ならドキュメントルート以下に置けばいいと思うよ
推奨であってドキュメントルート下だと動作しない訳じゃないんだし
俺はレンタルサーバとかでドキュメントルートにしか置けない場合を除いて別ディレクトリに置くけどな
73:nobodyさん
08/05/02 14:11:27
俺はローカル側で管理しづらいという理由でドキュメントルート下に置いて.htaccessで全Deny
74:nobodyさん
08/05/02 14:25:29
そしてAllow Overwrite Off
75:nobodyさん
08/05/02 14:31:06
テンプレートをドキュメントルート下に置かないと保守性が悪いとか
ローカルで管理しづらいって、さっぱりわからんなあ
例えばドキュメントルートの一つ上の階層にテンプレートを置くとして
そこを基点に管理するだけの話だと思うんだが
76:nobodyさん
08/05/02 17:21:49
ぶっちゃけフォルダ移動まんどくせ
77:nobodyさん
08/05/02 18:53:27
ドキュメントルート外に置くと、相対的に読み込んでいる画像とかCSSとの、パスが切れるって事だろ?
HTMLコーディングしてる最中にプレビュー出来ないってのが面倒だって事だろ?
78:nobodyさん
08/05/02 19:40:12
>>77
は?お前は何を言ってるんだ
79:nobodyさん
08/05/03 19:44:56
>>78
templates/index.html
htdocs/image.jpg
というファイル構成だと、
ローカルファイル上で画像チェックをする術が無いって事だよ。
これは、コーダー観点で見ると致命的に面倒。
htdocs以下をテンプレートディレクトリにする事で解消されるから、利便上htdocsに置く人達がいるわけだ。
templatesディレクトリに画像とか置いちゃう方法でもいいんだけど。
80:nobodyさん
08/05/03 20:00:42
ローカル上のシステムにアクセスして確認すればいいじゃん
81:nobodyさん
08/05/03 21:44:08 K4MBJC9r
templates_cの方がやばいだろ。
82:jtb
08/05/03 21:57:29
自宅鯖を、レンタル鯖にするところまではできるんですが、ユーザーと、ftpパスワードの保存先ディレクトリどこにしようか迷ってるのですが、普通はどこに保存してますか?
83:nobodyさん
08/05/03 22:08:53
public_html/secure/ftppass.txt
84:nobodyさん
08/05/03 23:29:36
>>80
ローカル上のシステムって意味がわからんが。
ローカル鯖でも立てない限り、確認は無理。
コーダーに鯖立て強要(例えXAMPPでも)も厳しい。
OK?
85:nobodyさん
08/05/03 23:33:32
開発中はbaseパス設定するなり置換するなり好きなようにすればいいじゃん
86:nobodyさん
08/05/03 23:36:53
開発中はtemplateをhtdocs以下に置いてもいいじゃん
87:nobodyさん
08/05/04 00:40:42
ローカルにサーバー立てられないやつは
この業界から消えていいよ。
88:nobodyさん
08/05/04 01:46:37
XAMPPのサーバも立てられないコーダなんて糞過ぎ。まぁ、だからコーダなんだろうけど。いやしかし。
まぁ、俺なら*.tpl(*.htmlを含んでもいい)をtemplateディレクトリに、残りをhtdocsに置くスクリプトを用意するけどね。
89:nobodyさん
08/05/04 02:21:16
XAMPPは地雷だろ・・・
90:nobodyさん
08/05/05 19:52:01
ローカル環境作ってない奴ってバージョン管理やデプロイ手作業でやってる訳かな?
高校生バイトじゃあるまいし
91:nobodyさん
08/05/06 12:34:25
デプロイを手作業でやらないって
何を使ってるの?
92:nobodyさん
08/05/06 15:53:08
テスト環境ならsvn管理下に置いてsvn updateだけど
本番環境は手作業だなあ
93:nobodyさん
08/05/06 22:40:24
分散ものに関わるとシェルなりでスクリプト走らすけど、ねえ
94:nobodyさん
08/05/07 14:15:57
>>93
それもやるけど、しかしコンソールに生のHTML、しかもオーサリングソフトで作ったような多重テーブルとスクリプトが含まれる
テキストはもはや人間の読むものではない。
95:nobodyさん
08/05/09 04:28:25
デプロイって標準的なやり方ってないのかな。
96:nobodyさん
08/05/09 06:33:29
>>95
つFFFTP
97:nobodyさん
08/05/09 12:07:52
>>59
自分はいつも
SetupSmarty
ってつけてる。
98:モモ子
08/05/09 13:33:34 6V2WpTSb
テンプレートでいつも {$var|escape} みたいに escape つけるの
面倒だよねー?何かいい方法はないかなー?
99:nobodyさん
08/05/09 14:51:49
? ? ?
100:nobodyさん
08/05/09 16:58:56
>>98
・escape済の変数をassignする
・もしくはdefault_modifiersにescapeをいれとく
お好きなほうでどうぞ。
後者は特定の条件で不具合が発生するので、自力で修正する自信ないならお勧めしない。
101:nobodyさん
08/05/10 08:34:44
なんで肝心な不具合とかが修正されないんだろ。
日本とは感覚が違ってて必要とされてないのかな。
102:nobodyさん
08/05/10 09:46:22
Smarty3でも出ない限りは、このままなんじゃね?
103:nobodyさん
08/05/15 19:11:15 ss9CEhce
JSmartyでもry
104:nobodyさん
08/05/19 00:22:26
Smartyの残骸に悩むPHP土方の皆さんごきげんようw
105:nobodyさん
08/05/21 08:04:10
普通に、外部モジュール化したHTMLテンプレートを読み込んで、
正規表現で独自タグを変数に置換して出力。
っていう古式ゆかしきCGI技じゃいかんの?
Smartyの3~4倍は速いぞ。
106:nobodyさん
08/05/21 08:06:14
まだこういう馬鹿いるのかw
107:nobodyさん
08/05/21 08:12:24
なんでバカなんだ?
ちゃんとロジックとデザイン分離できてるじゃん。
そもそもPerlとか他の言語のテンプレートエンジン全般に言えるけど、
こういうシンプルな目的だったのに、
万人の要望に応えるうちに無駄に富豪化して、
ムーアの法則頼りで突っ走ってるのが、今のテンプレートエンジンだろ。
108:nobodyさん
08/05/21 09:50:33
テンプレートエンジンを使いこなせてない人の発言だなぁ・・・。
デザインとロジックの分離レベルにもよるけど、
ビューで処理すべきロジックもあるって事だ。
if
foreach
include
|escape
あたりは最低限必須だろ。
109:nobodyさん
08/05/21 10:14:55
>107がそう思ってるならその自分のやり方を貫けばいい
>108がそう思ってるならその自分のやり方を貫けばいい
自分の考えを押し付けるのが一番うざい。
110:nobodyさん
08/05/21 12:49:26
そう、自分がやりやすい方式で作ればよろしい
もっとも>>108の挙げてる機能くらいは無いと確かに困るというか
ロジック側でHTMLを吐く必要性が出てくるので嫌
111:nobodyさん
08/05/21 12:49:45
そういう問題ではない。
実装の統一化は今後の開発効率を左右する重要な課題。
ただ、Smartyに何かが足りないのは確か。
結局どこかで独自に使い方を工夫しないといけない場合が出る。
特にescape。
112:nobodyさん
08/05/21 13:06:06
おまいは全世界を統一したい野望でもあるのか?
統一すれば効率はいいだろうが、そんなツマラン世界は御免こうむる
113:nobodyさん
08/05/21 13:44:07
>>109
おまいは、現場でコーディング規約とかに文句言うタイプだろ。
114:nobodyさん
08/05/22 01:18:43
文句言うべきときは言うべきだと思う
//使うなって言われる噴飯モノの現場もあるしな
しかも理由が「/**/と入れ子にできちゃうから」という意味不明具合
115:nobodyさん
08/05/22 01:48:09
>>112
趣味と仕事を兼ねるからツマランのじゃね?
仕事と割り切って出世する事を考えていこうよ。
116:nobodyさん
08/05/22 02:33:05
出世考えるならプログラマー辞めて「プログラムも判る企画/営業」に異動促す努力したほうがええで
いくらコード練っても、中/印/ベトナム経由の「安いだけの人材」がケツ噛み続ける時代
会社としてのポストがなくなる
「MFC超得意だからMSなくなるまでは困らん」と言ってた先輩が潰れて実家の本屋継いだぜ
「PHP? 新し物好きは迷惑だね。perlで一生食っていけるよ」と豪語してた
馬鹿女は、アルコールで精神病院を経て休職後、そのまま元彼と寿退社してリタイアだ。
一番頼れる仲間は某MTAのドキュメントにも名前を連ねる我が社の誇りだった人
今はビル屋上緑化を主とする企業のヒラ営業に転職しちまったぜ。
毎日PHPに限らずコード書かされてて思うが、
なんかそういうドロップアウトした筈の彼らがみんな幸せそうに見えるんだ
なんでなんだろう
なんの話だっけ
117:nobodyさん
08/05/22 12:54:15
オレは給料泥棒 まで読んだ
118:nobodyさん
08/06/01 12:02:10 hyBgIur5
Smartyはプロの世界でもよく使われるんですか?
119:nobodyさん
08/06/01 17:37:18
SmartyのないPHPなんてレモンのないコーヒーですよ。
120:nobodyさん
08/06/01 18:54:42
なぬ?
121:nobodyさん
08/06/02 03:03:23
Smartyを始めたら背が5cm伸びて、彼女が出来ました。
122:nobodyさん
08/06/02 03:08:23
OpenPNEが一日も早くSmarty外ししてくれることを願うよ。つうか俺がコミットすりゃいいのかな。
123:nobodyさん
08/06/02 04:38:00
>>122
そんなことしたら背が縮んで、彼女が離れていくじゃないか。
124:nobodyさん
08/06/02 05:30:17
嫁と分かれたいケースに最適ですかね
125:nobodyさん
08/06/02 05:53:12
>>124
リンクしてコンパイル済みなら分離できません
126:nobodyさん
08/06/02 06:36:26
ライブラリと生活モデル、および資産の依存性を分離して
再コンパイルするしかない訳ですね。
わかります。
127:nobodyさん
08/06/02 18:15:50
再婚パイルをお考えですか。
128:nobodyさん
08/06/03 04:20:49
GirlFriend Pluginがファイル破損しちゃいました。
どこで再配布してますか?
129:nobodyさん
08/06/03 08:16:30
新しいPluginは古いものと互換性がないので、
関連ファイルは全部削除しないとダメだよ
130:nobodyさん
08/06/03 14:28:35
まさかこのスレでふっきれるとはおもわなんだ。
貴様らありがとう。
131:nobodyさん
08/06/04 22:39:07
ウチ、すごいぞw
俺が来るまで何年もプログラミング初心者が入ってきては辞めての繰り返しだったみたいで、
機能つけたしが全てSmarty設置で実現されてるwww
サイトのいたるところにvarだのbinだのがあるwwww
勘弁してくれwwww
132:nobodyさん
08/06/04 22:53:01
日本語でおk
133:nobodyさん
08/06/05 12:25:23
業務でSmartyを使っているのか...
134:nobodyさん
08/06/05 13:57:52
>>134
そりゃ背が伸びて彼女ができるなら使うだろう。
135:nobodyさん
08/06/05 14:50:40
業務だからこそ使うんじゃないの?
逆に趣味とかじゃ使いたくない。
136:nobodyさん
08/06/05 21:38:50
趣味でPHPはないわ。
俺は半年ほど休んでた時期に趣味で遊んだのはSchemeだけだった。
実務(共同作業)がSchemeでも進められるなら、迷わずこれを選ぶ。
しかし近年の現実はどいつもこいつもPerlすら宇宙語だからな。PHP一択にならざるをえない。
137:nobodyさん
08/06/06 13:01:48
PHP + Smarty を使って、お客専用のCMSモドキより、
MovableType4.1 + αカスタマイズのCMSモドキの方が、お客には受けが良かった上に見積もりも良かった!
業務でSmartyを使うなら、隠れて使いたい
138:nobodyさん
08/06/06 21:00:18
そりゃデザインのおかげじゃねーの
139:nobodyさん
08/06/06 22:14:37
見た目以外に判断材料があるやつなんて、最低でもPHPを書けるレベル以上のやつに限られる。
140:nobodyさん
08/06/06 23:39:38
>>139
いや、判断材料としては操作感も重要だけど、使う側と作る側のロジックが違うから
どう考えても不条理な操作が要求されたりするんだよなあ。
もちろん使う人のために作るんだからお客様優先なわけだが、
将来コケるのが目に見えてるから困る。
141:nobodyさん
08/06/06 23:48:35 astBuURj
現在のバージョンは、
・セールスレターテンプレート集(68通)
・売れるセールスレターの書き方
・ダイレクトメールワークシート
・穴埋め式Eメールテンプレート(14通)
・究極のセールスレターツールBOX
など、合計で500ページ近いパッケージとCDROMが
セットになっています。
ただ、この無料お試しはだいぶコストがかかるらしいので
500個の限定だそうです。
興味があればこちらをクリックしてください。
URLリンク(www.123marketing.jp)
142:nobodyさん
08/06/06 23:49:48
>>140
それはあなたが低スキルだからでしょうね。コケて逃亡するのはあなたではないでしょうか。
143:nobodyさん
08/07/10 05:42:24 NxX5vAdg
Smartyで、テンプレート内で送られてきた変数の簡単な計算できませんか?
{$value + 3}など。
試してみたのですが、{$value}の値がそのまま出力されます
144:nobodyさん
08/07/10 09:09:32
つマニュアル
145:nobodyさん
08/07/10 21:23:41
折角公式に日本語のマニュアルがあるというのに全く。
146:nobodyさん
08/07/21 01:40:20 8uak49aQ
■ MySmarty.class.php
<?php
require_once("Smarty/Smarty.class.php");
classMySmartyextendsSmarty {
publicfunction__construct() {
$this->Smarty();
$this->template_dir="./data/templates";
$this->compile_dir="./data/templates_c";
}
}
?>
■ test.php(MySmarty.class.php と同じディレクトリ) → 正常に動作
<?php
require_once( './MySmarty.class.php' );
$o_smarty = new MySmarty();
$o_smarty->display( "main.tpl" );
?>
■ dir.php(MySmarty.class.php の直下のフォルダ) → エラー
Warning: Smarty error: unable to read resource: "main.tpl" in C:\hoge\Smarty\Smarty.class.php on line 1092
<?php
require_once( '../MySmarty.class.php' );
$o_smarty = new MySmarty();
$o_smarty->display( "main.tpl" );
?>
これは仕様なの?
147:146
08/07/21 01:41:40 8uak49aQ
MySmarty.class.phpで半角空白がなくなっていますが、
2chにコピペするときの変換ミスで、実際は正常に動いています。
148:nobodyさん
08/07/21 01:47:07
仕様
149:146
08/07/21 01:52:13
>>148
ええ!? マジすか……。
それじゃ、ディレクトリが多数ある場合は、
全てのディレクトリにMySmarty.class.phpが必要ってこと?
プラグイン自作してどうにかなる話じゃないですよ?w
150:nobodyさん
08/07/21 02:24:44
お前は何を言ってるんだ
151:nobodyさん
08/07/21 03:18:45
>>150
いや、文字通り、Smarty.class.phpを継承した設定済みのMySmarty.class.phpを
直下以外のディレクトリに置くとtemplatesディレクトリの認識がしなくなるのが仕様だったら、
多数のディレクトリ分けしてると超大変だよね、って言ってるんだけど。
>>146が仕様で間違いないのなら、俺は何か間違ったこと言っているか?
152:nobodyさん
08/07/21 09:54:38
さて問題です。
dir.phpからみて
$this->template_dir="./data/templates";
$this->compile_dir="./data/templates_c";
このディレクトリはどこでしょう?
153:nobodyさん
08/07/21 12:55:50
>>152
dir.phpは、MySmarty.class.phpを呼び出しているだけで、
dataディレクトリは、MySmarty.class.phpから見た相対パスだから、
dir.phpから見たdataディレクトリの場所は、関係ないと思うけど。
そもそも、なぜか絶対パスを受け付けてくれんのよね。エラーになる。
154:nobodyさん
08/07/22 08:41:57
>そもそも、なぜか絶対パスを受け付けてくれんのよね。
こっちのほうが深刻というか根幹な問題をかかえてる気がするのだが・・・
155:nobodyさん
08/07/24 14:01:26
PHPは実行されてるファイルの位置がカレントディレクトリになるから……
156:nobodyさん
08/07/24 21:30:17
$template_dir
これは、デフォルトのテンプレートディレクトリの名前です。 ファイルのインクルード時にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは ./templates で、 これは、実行しているスクリプトと
同じ場所にある templates/ ディレクトリを探すということです。
という文章からすると「実行しているスクリプト」が基準になるということみたいだな。
157:nobodyさん
08/08/01 21:13:05
Smarty廃れましたなぁ。
そんなことより、PHPもJSPのように
カスタムタグが使えたらいいのにね。
158:nobodyさん
08/08/02 02:29:09
廃れてないけど
159:nobodyさん
08/08/02 19:51:20
スレ立て半年でこの程度の伸びだったら、十分廃れてるだろw
ぶっちゃけ、必要な機能だけ絞り込んで自分で作った方がいい。
160:nobodyさん
08/08/02 19:56:13
いいというのはどういう点で?
161:nobodyさん
08/08/03 10:51:13 4+uLL3BX
でも、テンプレートって言えば、もうSmartyでしょ。
162:nobodyさん
08/08/03 11:32:25
テンプレート機能だけ使いたいならSmartyを使うか、生phpで済ませる
各種FW使うなら同梱されてるテンプレートエンジンを使う
163:nobodyさん
08/08/04 11:49:55
「index.php#xxx」
smartyで↑の「xxx」を取得する方法ってありますか?
164:nobodyさん
08/08/04 22:09:03
>>163
例で示されたxxxの部分は通常サーバ側には送信されることはない。
なのでサーバサイドで動いているsmartyから取得することは不可能。
165:nobodyさん
08/08/05 16:01:03
>>164
ぎょぎょ!
確かにその通りでした。
166:nobodyさん
08/08/06 21:40:18
仮に送信されるにしても、smartyじゃなくPHPから取ると思うんだけどなあ。
167:nobodyさん
08/08/07 20:08:18
テンプレ内で{}使う方法ド忘れした誰かHELP
168:nobodyさん
08/08/07 20:16:02
URLリンク(www.smarty.net)
169:nobodyさん
08/09/04 10:40:28
{include}
で出力された結果が複数行にわたる場合、全ての行に対してインデントさせるにはどうすればいいですか?
{"\t"}{include}
とかしても先頭の行だけしかインデントされなくて
170:nobodyさん
08/09/04 11:33:28
全部divで囲んでCSSで
171:169
08/09/04 12:15:47
ああ、すみません、出力されたソースでの話です・・・
172:nobodyさん
08/09/04 12:25:57
変数に格納してindentかけるとか?
173:169
08/09/04 21:08:05
すみません、変数の宣言はphpファイル側でするものですか?もしそうなら、
配布されているウェブアプリがsmartyを使っているのですが
配布ファイルのバージョンアップの際に面倒なことにならないかな・・・と
というかphpはわからなくて
smartyも触るのは初めてでマニュアルを見ながら触っているのですが・・・
インデントするのも難しいですね
レスしてくれた方々、ありがとうございますm(_ _)m
174:nobodyさん
08/09/04 21:11:12
Smartyの前にやるべきことが・・・
175:nobodyさん
08/09/04 21:31:16
デザイナにはロジックを触らせないコンセプトのSmarty
176:169
08/09/05 00:54:49
すみません、includeのassignでできました
レスしてくれた方々、ありがとうございますm(_ _)m
177:nobodyさん
08/09/24 00:32:25 KMdxurbq
JSPのカスタムタグがPHPにもあればいいのにな。
タグとクラスが一対一になってるのが素晴らしい。
178:nobodyさん
08/09/25 00:09:46 lXgzxRnB
すみません、教えてください。
<p>名前:{$name}</p>
テンプレートに上記のような記述をしたのですが、
「名前:」の部分が化けてしまいます。
テンプレートファイルはEUCで保存してあります。
原因としてはどのような事が考えられますか?
179:nobodyさん
08/09/25 01:02:44
>>178
テンプレートをコンパイルしたあとのPHPファイルを見てみれば?
180:178
08/09/25 02:06:16
>>179
見ましたが、既に化けてます・・・
SmartyがEUC以外の文字コードで
テンプレートを処理しているということでしょうか?
181:nobodyさん
08/09/25 02:17:37
phpの文字コードがあってないんじゃない?
182:178
08/09/25 02:47:42
>>181
あ、Smarty.class.phpがカスタマイズされていました。
SJIS→EUC→SJISみたいな変換してる。
お騒がせしました。すみません。
既存のものとは別にSmartyを入れます。
183:nobodyさん
08/09/26 16:36:37 NKaAViJV
template_cの中身を全部削除しても、template_cの中身を見に行こうとして、
そんなファイルないよっていうエラーが出るんですが、なぜでしょうか?
ためしに、force_compileをtrueにしてみましたが、やっぱり見に行ってしまうようです。
184:183
08/09/26 17:02:20 NKaAViJV
ちなみに、全く同じものを1つ下の階層にコピーすると動きました。
これはいったい・・・。
185:nobodyさん
08/09/26 17:16:56
パスがおかしい
186:nobodyさん
08/09/26 17:23:10 NKaAViJV
>>185
すいません、重要な点を忘れていました。
その別ディレクトリでコンパイルされたテンプレートを、
動かない方のtemplate_cにコピーしてやると、動くのです。
なのでパスが違ってはいないです。
全く謎・・・
187:nobodyさん
08/09/26 17:49:10
そんな断片的な情報では何も判断できないけど謎だね
188:nobodyさん
08/09/26 23:07:17
smartyってsjisだとエラー起きませんでしたっけ?
さっきひさぶりにやってみたらsjisでも問題なく動いた(?_?)
189:nobodyさん
08/09/27 01:11:46
>>188
自己解決しました
190:nobodyさん
08/09/30 23:16:57
>>189
自己解決の詳細を報告しる!
191:nobodyさん
08/10/01 16:25:04
>>190
気合で解決!
192:nobodyさん
08/10/02 16:19:26
preFilterでテンプレートの文字コードを内部文字コードに合わせる。
postFilterで元に戻す。
これは基本だろう。
193:nobodyさん
08/10/03 12:27:37
みんななんでSmartyなんて使ってるんだ。意味がわからん。
194:nobodyさん
08/10/03 19:01:42
名前:<?php echo $name ?>
よりも
名前:{$name}
のほうが書きやすくて可読性も高いから。
195:nobodyさん
08/10/03 19:14:40
それだけじゃなかんべw それだけしか使ってないならもったいないw
196:nobodyさん
08/10/03 19:36:59
<?=$name?>
197:nobodyさん
08/10/03 20:29:13
short_tagwwww
198:nobodyさん
08/10/04 01:57:42
Smarty(というかテンプレートエンジン)の便利さを解らない奴は、
素人or中級者未満だと自覚した方が良いよ。
199:nobodyさん
08/10/04 13:26:02
>>198
PHPそれ自体がテンプレートじゃん
わざわざSmartyを使う意味がわからん
200:nobodyさん
08/10/05 01:31:28
>>199
意味がわからんというのは、君のやってる事のレベルが低いからだと思うよ。
PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
PHPはテンプレートっぽく使えるだけで、実務的にテンプレート管理を行おうとしたらかなりの量のコーディングが必要になってくる。
結局はテンプレートエンジンを作る必要はあるんだよ。
201:nobodyさん
08/10/05 01:40:36
・PHP
<?php echo strlen($var) ? preg_replace("/[\r\n]/", "<br />", htmlspecialchars($var)) : "hoge";?>
・Smarty
{$var|escape|nl2br|default:"hoge"}
202:nobodyさん
08/10/05 06:55:52
なぜphpのほうでnl2br使わんの
203:nobodyさん
08/10/05 11:15:11
modelとviewを分けたいからじゃないの
204:nobodyさん
08/10/05 18:38:44
>>203
どういうこと?
205:nobodyさん
08/10/06 03:08:54
PHP単体で使う人は、 >>201なりPHPで書いたコードを想定してみれば良い。
「そんなコードを書く状況は100%ねぇよw」って言うなら、Smarty使う意味無いけど。
206:nobodyさん
08/10/06 08:52:51
>>202
>なぜphpのほうでnl2br使わんの
知らなかっただけだろ。
あと preg_replace("/[¥r¥n]/", "<br />") だと "¥r¥n" があったときに <br /><br /> になっちゃうから
ここは preg_replace("/¥r?¥n/", "<br />") だよな。旧Macは無視したとして。
nl2br知らないわ、正規表現間違うわじゃ、底がしれる
207:nobodyさん
08/10/06 08:55:31
>>200
>PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
キャッシュは専用ライブラリを使う
ループ処理はPHPのforeachやwhileをそのまま使う
エスケープ処理はhtmlspecialchars()を使うか、短い名前で定義する
携帯、PC両対応はSmartyに備わってる機能ではない
208:nobodyさん
08/10/06 14:44:20
>>207
全部Smartyで出来るじゃんw
使わない理由と、他のライブラリを使う理由を述べよ。
209:nobodyさん
08/10/06 14:59:38
>>204
改行が必ずしも<br />とは限らないからだろ。
ViewがHTMLとは限らない。
210:nobodyさん
08/10/06 15:10:02
>>209
上段はHTML以外も想定してるけど
下段はHTMLのみ想定しているってこと?
211:nobodyさん
08/10/06 17:03:58
>>210
Smartyのnl2brは拡張&動作の置換が可能。
212:196
08/10/06 19:40:07
全部関数書けばいいじゃん
<?=h(e(n($name)))?>
213:nobodyさん
08/10/06 20:27:56
グローバル関数っすかwww
そんなの結局は劣化車輪の再発明でしかないし、Smartyを使わない理由を述べよ。
214:nobodyさん
08/10/07 12:25:11
> 車輪の再発明...
実用レベルでは、してはいけない「車輪の再発明」だが、
言語の学習段階ではレベルアップのために、あえて「車輪の再発明」は必要...
論点ずれた。スマゾ
215:nobodyさん
08/10/07 14:30:17
そんな段階では「発明」でも何でもないし、する必要も無い。
物理習うときにニュートン方程式の再発明から始めるのか?
216:nobodyさん
08/10/07 15:03:12
物理では再発明というか、再発見をおのおのの学生がするものじゃないの?
ぶつりほうそくとは発見ではなく自然の理解であるからして。
同様に、対象を理解するために先人の真似をするのは無駄じゃない。
物理の授業でニュートンがやった実験やるのはべつに遊びってわけじゃない。
217:nobodyさん
08/10/07 15:10:28
初心者の学習段階でよくやるアレは「車輪の再発明」の域にも達してないってことさ。
学習するためにやるものじゃない。
218:nobodyさん
08/10/07 18:26:45
論点ズレすぎ。
車輪の再発明自体は否定も肯定もしないけど、
>>212 とか、再発明の域にすら達してないだろ。
単にSmartyを勉強するのが面倒だから、批判してるだけに見えてしまうんよ。
実際そうなんだろうけどw
219:nobodyさん
08/10/07 21:01:42
patTemplate ってはやってるの?
220:nobodyさん
08/10/08 08:35:32
>>208
>全部Smartyで出来るじゃんw
>使わない理由と、他のライブラリを使う理由を述べよ。
逆だよ。PHPでできるのに、なんでSmartyを使う必要があるのってこと。
221:nobodyさん
08/10/08 08:44:32
>携帯、PC両対応はSmartyに備わってる機能ではない
だからなんなん?
テンプレートエンジンを利用すれば簡潔に記述できるのは事実だろ
222:nobodyさん
08/10/08 14:08:02
>>220
PHPで関数集なり、テンプレートエンジンもどきを作るくらいなら
なんで既存の枯れはてたSmartyを使わないのって事。
まぁ >>212みたいなのを見ても尚、PHPで同じ事が出来る。
と感じているのであれば、何説明しても無駄だろうけどさ。
テンプレート関数毎回作って、毎回デザイナに説明して、毎回デバッグしてるんだろうねw
223:nobodyさん
08/10/08 16:35:41
ああ、、、
だから毎回デスマーチになるのかw
224:nobodyさん
08/10/09 09:57:36
smartyとかテンプレートエンジンのいいとこは
デザイナに渡すときも
あとはよろしくねーって言えること。
マニュアルもちゃんとしてるし。
225:nobodyさん
08/10/09 11:10:47
うちの場合ページが先に出来上がってくるから、それを元にtplを作ってるな。
それでもPHPベタ書きよりはよほど楽だしあとで修正しやすい。
226:nobodyさん
08/10/09 16:09:53
デザイナに include と 変数 の使い方覚えて貰うだけでかなり楽になるよね。
227:196
08/10/09 23:38:15
>>222
> PHPで同じ事が出来る。
逆だよ。Smartyが前提なのではない。
素のPHPに対してSmartyをわざわざ追加する必要が無い、ということ。
しかしほんと、化石みたいなスレだな。
Smarty信者はまだPHP4とか使ってるのかね。
228:nobodyさん
08/10/10 00:21:33
smartyってもうはやってないの?
229:nobodyさん
08/10/10 01:12:51
>>227
必死すぎwww
196のコードなんでPHP4とか以前にPGとしてウンコのレベルだろww
君が無知なのはわかったから
PHP単体じゃテンプレートエンジンとして機能しないのに、
「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
もしSmarty云々じゃなくてテンプレートエンジンがいらねーって事なら論外だ。
初心者スレから出直してこい。
>>228
普通に使われているし、需要も多いよ。
先月にも解説新刊が出た。
230:196
08/10/10 09:49:15
>>229
答えは196に示してある通りなんだが。
俺もSmartyは仕事で3年くらい使ってたよ。
> 「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
> もしSmarty云々じゃなくてテンプレートエンジンがいらねーって事なら論外だ。
じゃあ俺はお前さんにとって論外らしいので、議論の余地は無いな。
SmartyじゃないとMVCが守れない開発者は現場では使えない。
もしお前さんがデザイナーなら、PHPの基礎くらい勉強しろと言いたくなるな。
うちのWebデザイナーはみんなPHP触れるよ。
> 初心者スレから出直してこい。
ここよりレベルの低いスレがあるのか。それは恐ろしいな。
231:nobodyさん
08/10/10 10:34:43
>>225
それだとあとでデザイン修正があったときとかめんどくさくない?
もらったデザインを前のとdiffかけて
差分をtplに反映とか。
ただプログラマが一元的に管理してたほうが
セキュリティ的にはいいよね。
escape忘れただけで大変なことになることもあるし。
232:nobodyさん
08/10/10 15:47:13
196やら212のコードを記述するぐらいなら俺はSmarty使うよ。
233:nobodyさん
08/10/10 17:37:52
196が答えか、、、終わってるなw
こんな輩が得意げに宣ってるからPHPはウンコだって言われるんだろうな。
234:nobodyさん
08/10/10 17:44:35
少なくとも俺の現場ではショートタグは使えない
235:196
08/10/10 23:28:20
212に不満があるのは理解出来るけど、196は良いと思うんだけどな。
209の要件を満たす方法の一つが212で、それは211と大して変わらない。
だけど196は、MVCさえ理解できれば、209で述べられている要件も、
201よりスマートなコードにする事も、満たすことが出来るんだ。
なんでか知らんけど、Smartyを信じる人は知識があって偉い、
そうじゃない人はみんな素人だ、という反論しか戴けないのは残念だな。
>>234
ストローク数の少なさと可読性は若干損なわれるが、
それでもSmartyよりは<?php echo $name ?>のほうがマシだと思う。
236:nobodyさん
08/10/11 00:30:31
>Smartyを信じる人は知識があって偉い、
>そうじゃない人はみんな素人だ
誰もそんな事言ってないから。
君がSmartyを否定するだけの根拠を持ち出さないから素人扱いされちゃうんだよ。
(まぁ、テンプレートエンジンを否定してる時点で底が知れてるけども。)
196が良いって、グローバル変数かつ、ショートタグかつ、エスケープ無しがView的にOKって事かい?
それなら、早急にWEB系PGを辞めた方が良い。
212の記法に疑問を持たないのであれば、
やはり、早急にPGを辞めた方が良い。
一応聞いとくけど、OOP&MVC的に開発する時、どんな構成で作ってるの?
フレームワークとかライブラリとか教えてよ。
まさかhtdocs以下に.phpファイルを量産してたりしないよね?
237:nobodyさん
08/10/11 06:53:44
>それでもSmartyよりは<?php echo $name ?>のほうがマシだと思う。
ほらほらこんな書き方すると単にSmartyを叩いてるようにしかみえないよ
196が同じ人なら、その内容からとてもSmartyを理解してる人には思えないんだよね
>196は良いと思うんだけどな。
PHP(web)初心者だよね(笑)
238:nobodyさん
08/10/11 12:06:19
いやだから、PHPで同じことができるのにわざわざSmartyを使う理由ってなに?
今まででたのは、<?php echo $var; ?> が短く書けることぐらい?
SymphonyとCodeIgniterを使って開発したけど、どっちもSmarty使わなかったし、それで何の問題もなかった。
>>229
>「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
・SmartyでやろうとしていることはPHPでできる
・Smartyは学習コストがかかる
・Smartyは遅い
・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
で、Smarty使う理由って何?
>>229は他人を無知よばわりしてるから、おれの知らないSmartyの利点ってやつを教えてくれ。
239:nobodyさん
08/10/11 12:07:00
まちがえた、Symfonyね。
240:nobodyさん
08/10/11 22:10:00
・SmartyでやろうとしていることはPHPでできる
→ PHP単体では出来ない。別個にエンジンを作る必要がある。
キャッシュ、フィルタ、プラグイン、コンフィグをPHP単体でどうやって書くんですか?
・Smartyは学習コストがかかる
→ 少なくとも独自エンジンやPHPを覚えさせるより、簡単で学習環境も整っている。
・Smartyは遅い
→ 同様の機能(キャッシュ、構文、プラグイン等)を実際に実装して比較してみたかい?
スレ頭のピュアコードより5倍遅いとかいうのを真に受けてるだけだろw
ビジネスロジック層と比べれば軽い処理なので、システム的には対した差はでねーよw
・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
→ ずれてないよww エラー英文すら読めないレベルかwwww
そもそもPHPのテンプレートエラーはシステムに障害をきたすし、論外だ。
→PHP単体でなく、Smartyを使う理由?
・テンプレートエンジンとして必要な機能を備えている
・拡張がし易い
・デザイナのコードがシステムに混入しない
・PHPテンプレートエンジンとしてはメジャーで扱える人が多い
>SymphonyとCodeIgniterを使って開発したけど、どっちもSmarty使わなかったし、それで何の問題もなかった。
良かったね。
僕らは楽して堅牢なシステムを作るためにSmartyを使ってるんだ。
SymphonyとCodeIgniterの利点を教えて欲しいな(^o^
241:nobodyさん
08/10/13 03:31:41
cakeを上げないあたりにひねくれものな感じがプンプンするぜ
242:nobodyさん
08/10/13 10:28:16
Smartyがデフォルトのテンプレートエンジンになっているフレームワークってありますか。
243:nobodyさん
08/10/13 11:11:34
>>240
>・デザイナのコードがシステムに混入しない
いくらなんでもこれは冗談でしょ。
244:nobodyさん
08/10/13 11:17:06
>>242
普通は自分で選ぶ
245:nobodyさん
08/10/13 11:31:25
>>240
>→ PHP単体では出来ない。別個にエンジンを作る必要がある。
> キャッシュ、フィルタ、プラグイン、コンフィグをPHP単体でどうやって書くんですか?
PEARにいくらでもライブラリあるけど。プラグインは普通に関数でいいだろ。コンフィグも普通にPHPファイル。
>→ 少なくとも独自エンジンやPHPを覚えさせるより、簡単で学習環境も整っている。
んなわけない。なんでPHPよりSmartyのほうが簡単で学習環境も整っているといえるんだよ。
>→ 同様の機能(キャッシュ、構文、プラグイン等)を実際に実装して比較してみたかい?
> スレ頭のピュアコードより5倍遅いとかいうのを真に受けてるだけだろw
>ビジネスロジック層と比べれば軽い処理なので、システム的には対した差はでねーよw
おまえこそほんとに測定したのかよ。明らかにSmarty遅いじゃねーか。
246:nobodyさん
08/10/13 11:38:35
>・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
>→ ずれてないよww エラー英文すら読めないレベルかwwww
> そもそもPHPのテンプレートエラーはシステムに障害をきたすし、論外だ。
「<p>{$var}</p>」と1行だけ書いたテンプレートを用意し、$smarty->assign('var', new MyClass()); してから表示させるとこんなエラー。
PHP Catchable fatal error: Object of class MyClass could not be converted to string in /tmp/templates_c/%%C3^C35^C35E7879%%sample1.tpl.php on line 5
1行目なのに、コンパイルされたファイルの5行目でエラーとなっている。
これでどこがずれてないというの?おまえほんとにSmarty使ってるの?
> エラー英文すら読めないレベルかwwww
とかいうまえに、行番号ぐらい読めるようになろうぜwwww 数字の読み書きなら教えてやるぞwwww
>→PHP単体でなく、Smartyを使う理由?
>・テンプレートエンジンとして必要な機能を備えている
必要な機能はPHP自体がもっている。
>・拡張がし易い
>・デザイナのコードがシステムに混入しない
これはダウト
>・PHPテンプレートエンジンとしてはメジャーで扱える人が多い
PHPそれ自体はSmartyよりはるかにメジャー。PHPなら素人デザイナーでも基本は知っている。
わざわざSmartyを学習させる意味がわかんない。
247:nobodyさん
08/10/13 11:41:35
>>240
>僕らは楽して堅牢なシステムを作るためにSmartyを使ってるんだ。
>SymphonyとCodeIgniterの利点を教えて欲しいな(^o^
いまどきこんなこと言うのは、フレームワークを使ってないということか。
あるいはオレ様フレームワークか。
これでオレ様フレームワークつかってたら笑うなー。
248:nobodyさん
08/10/13 12:01:54
>>246
要するに、「うちのデザイナはPHP理解できるからSmartyいらないんだぜ」ってことな。
前提としてる環境が違うんだからいつまでも平行線なんだろうね。他にも摺りあわない理由はありそうだが。
249:nobodyさん
08/10/13 12:27:09
自社おかかえのデザイナがいるならどうでもいい話だろうが
外注に出す場合、まだsmartyの文法のほうが通じやすいと感じるがなー
既にsmartyを知ってるデザイナもちょこちょこいるし
知らない場合でもマニュアルの「II. テンプレートデザイナのための Smarty」だけ読んどいてで済む
さすがにPHPを覚えてくれとは言えない
250:196
08/10/13 14:37:10
やっとフレームワークの話が出てきたな。
名前もうまく書けてないレスが多いが、正しくはsymfonyと言う。
>>236
> Smartyを否定するだけの根拠を持ち出さないから素人扱い
Smartyを否定するつもりは無いよ。
「否定したら玄人」とか、どんな中二病だよw
まず前提として、Smartyの是非を議論する場合、
Smartyありきではなく、Smartyと実装Aと実装Bは対等に比較されるべきなんだよ。
>>237も同じで煽りに内容が無い。
251:196
08/10/13 14:56:46
さて本題だけど
> 196が良いって、グローバル変数かつ、ショートタグかつ、エスケープ無しがView的にOKって事かい?
その考え自体がモダンじゃないんだよな。
<?=$name?>を実行するファイルの先頭に書いたら、何が表示される?
Noticeが出るだけだよね(PHP4だと出ないかも)。当たり前のことだ。
「PHP単体」という言葉自体がおかしくて、(SmartyだってPHPだしな)
<?=$name?>を実行するためには、まず$nameに値を代入する必要があるんだよ。
ロジックから$nameに値を代入する過程が必ずあり、そこで、
スコープの決定と、エスケープなどのビュー用の加工処理が行われる。
ちなみに、スコープの決定条件は、196とSmartyで等価だよ。
パーサのメソッドの中でincludeしたら、スコープはそのメソッドの中になる。
212のコードの欠点は、ビュー用の加工処理が、
本来HTMLであるべきファイルの中で行われることだ。Smartyも同様。
まあ、俺はSmartyを否定したいのではなく、
別の選択肢を提示して、それに対する意見を聞きたかっただけなので、
とにかくSmartyを褒めてくれなきゃヤダヤダ、という話なら正直困る。
252:196
08/10/13 15:09:46
>>248-249
DreamWeaverでしかページを作れないへぼデザイナーと仕事をするとか、
外注には出すがソースレビューしたくないという場合は、
大人しくWeb製作として依頼して、コーディングは自分でやった方がいいとおもう。
結局Smartyだろうが何だろうがビューはビューなので、
MVCが理解出来ない人にビューを作らせようとしてもうまくいかんし、
テストとデバッグは結局やらなきゃいけないんだよ。
デザイナーから見たら、実際どう描画されるかわからない記号の羅列を
マニュアルと変数名の指示書どおりにHTMLに書き込んでみたりして、
「たぶんこれで出来たと思うんですがどうでしょうか」と言わないといけない時点で、
それはプログラマー仕事としての負荷を被っているわけだよ。
実質的に、分業にもなっていなければ、責任の切り分けにもなっていない。
Smartyの良くないところをあえて挙げるならば、
「Smartyを使えば、へぼデザイナーとへぼプログラマーが協力出来る」という幻想を
蔓延させた事かも知れんねw
253:nobodyさん
08/10/13 15:10:55
>>251
おまえさんはSmartyを否定してるんじゃなく、テンプレートエンジンを否定してるんだろ?
なら選択肢なんかじゃなくて具体的にどのように実装すべきかを提示してみてくれ
254:196
08/10/13 15:24:07
>>253
「PHPはテンプレートエンジンとしての要件を満たす」というのが196の主張だ。
>>229はそれを否定していたので、そこからして論外なのだ。
テンプレートエンジンとしての要件みたいなものを脳内で想像してるなら、
まずそれを考えなおして、表現してみてくれ。
「必ずキャッシュ機能が無いといけない」とか
「PHPとして実行できてはいけない」とか
そういう特殊な前提があるんなら、それを踏まえないとお前さんの役には立てんよ。
俺の要件に則って具体的な実装を述べて良いなら、
196こそが「テンプレートファイル」の答えなのだ。
$nameに何をどこでどうやって代入すればいいのかについては、>>251に書いた。
そうそう、ディスパッチャの存在が前提になるんだ。そこはSmartyと同じだな。
255:nobodyさん
08/10/13 15:33:22
>>254
いや、だからな
>ロジックから$nameに値を代入する過程が必ずあり、そこで、
>スコープの決定と、エスケープなどのビュー用の加工処理が行われる。
の具体例を提示してみてくれって話なんだが
256:nobodyさん
08/10/13 17:04:37
ぐだぐだ言い分けしてないで、
Smartyのここがだめ、俺ならこう書く!ってのをサンプル出せや。
PEARとかライブラリとか出してきてる時点で、ピュアPHPじゃねーし。
使う事を否定しないが、君なりの構築術があるわけだろ?
それを示せよ。何と比較してダメなのか、要所要所わかりやすく上げてくれ。
257:nobodyさん
08/10/13 17:05:33
単にSmartyに馴染めなかった、Smarty使ってる人うぜぇ!
ってだけならすれ違いだから、よそで最高のテンプレートエンジンを開発してくれよな!
258:nobodyさん
08/10/13 17:10:46
>>254
>「PHPはテンプレートエンジンとしての要件を満たす」というのが196の主張だ。
>>>229はそれを否定していたので、そこからして論外なのだ。
うむ、同意だな。PHPはそれ自体でテンプレートエンジンとして使える。
> テンプレートエンジンとしての要件みたいなものを脳内で想像してるなら、
> まずそれを考えなおして、表現してみてくれ。
テンプレートエンジンとしての要件は、ビューを分離できること、でいいと思う。
>「必ずキャッシュ機能が無いといけない」とか
キャッシュ機能はビュー層が単体で持つべき機能じゃないよな。
もつべきならコントローラ層だ。
259:nobodyさん
08/10/13 17:18:03
>>256
>ぐだぐだ言い分けしてないで、
>Smartyのここがだめ、俺ならこう書く!ってのをサンプル出せや。
前スレ読め。とっくに出てる。
>PEARとかライブラリとか出してきてる時点で、ピュアPHPじゃねーし。
はあ?ライブラリを使っちゃだめとか、頭どうかしてんじゃねーの。
Smartyだってライブラリだろ。なんでSmartyはよくて、他はだめなの?ばかなの?
それにPHPだけで書かれたライブラリはpure PHPだろ。言葉の意味間違ってるぞ素人さん。
>使う事を否定しないが、君なりの構築術があるわけだろ?
>
>それを示せよ。何と比較してダメなのか、要所要所わかりやすく上げてくれ。
だから前スレよめって。>>193以降全部読め。
260:nobodyさん
08/10/13 18:24:20
>まあ、俺はSmartyを否定したいのではなく、
別の選択肢を提示して、それに対する意見を聞きたかっただけなので、
>>193をそう解釈しろと言われても困る
261:nobodyさん
08/10/13 18:40:09
>>256
>何と比較してダメなのか
→ PHPと比較して。
>要所要所わかりやすく上げてくれ。
>>238からのコピペ。
・SmartyでやろうとしていることはPHPでできる
・Smartyは学習コストがかかる
・Smartyは遅い
・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
で、Smarty擁護派が>>240で反論してるけど、Smarty反対派が>>245-246で再反論してて、今はSmarty擁護派の再々反論待ち。
特にエラー行番号についての見解を期待。
262:nobodyさん
08/10/13 21:39:53
何が見解だよww
>>エラーについて
君の出してるエラーは「Smartyエラー」じゃなくて「PHPのエラー」だねw
Smarty自体の処理ははあっておりコンパイルも通っている。
コンパイル後のPHP実行時に、ストリングに変換出来ないクラスをそのままassignして表示してるからPHPがエラー出してるんだろ。
Smarty以前の問題だ。素人レベルのミスだ。
行が違う!とか行ってるけど、
コンパイル後のクラスのライン5みりゃ1発で原因わかるよね。
PHP Catchable fatal error: Object of class MyClass could not be converted to string in /tmp/templates_c/%%C3^C35^C35E7879%%sample1.tpl.php on line 5
Smatyでのエラーは以下のように正しく表示される。
Fatal error: Smarty error: [in sample.tpl line 4]: syntax error: unrecognized tag 'test' (Smarty_Compiler.class.php, line 590) in /xxxx/Smarty.class.php on line 1092
263:nobodyさん
08/10/13 21:48:53
>PEARにいくらでもライブラリあるけど。プラグインは普通に関数でいいだろ。コンフィグも普通にPHPファイル。
ライブラリを組み合わせるのもSmarty使うのも同じだと思うが?PEARの優位性は何だろね。
関数はグローバル関数かい?w
>なんでPHPよりSmartyのほうが簡単で学習環境も整っているといえるんだよ。
逆もしかり。PHPの方が覚える事も少ないし、文法も完結だからだ。
何度も言うがショートタグが使えない現場は多い。
>おまえこそほんとに測定したのかよ。明らかにSmarty遅いじゃねーか。
したよ。他のエンジンと比べて大差ねーよ。
View処理が 5 : 10 だとしてもビジネス処理に 50 かかれば 55 : 60 程度の差って事だよ。
>エラーコード
上に書いた。PHPの変数の使い方から出直してこい。
>必要な機能はPHP自体がもっている。
PEARとか別のライブラリや、スコープ確保の為にクラス化、関数化は必要だよね?
そうされた一式がSmartyって事なんだが。
>拡張がし易い
プラグイン、フィルタ、リソース等、かなり楽に拡張できるが?
>PHPそれ自体はSmartyよりはるかにメジャー
何度も言わせるな。「PHP単体」じゃ無理だろ。同じ事実現する為のライブラリの学習コストを考えろ。
>フレームワーク
cake、Zend、CodeIgniter使ってる。全部ViewはSmarty拡張クラス組込済。
264:nobodyさん
08/10/13 22:13:18
>別の選択肢を提示して、それに対する意見を聞きたかっただけなので、
解ったから、具体的に選択肢を提示してくれよ。
ショートタグで値を表示するだけじゃ甲乙つけられないだろ?
ループ、エスケープ、インクルード、条件分岐が入ったViewテンプレートサンプルを上げてくれ。
それを見て「これならSmarty使う必要は無いな」と思わせてくれよ。
俺が出すサンプルは以下だ、
「ヘッダ、フッタを合成して配列の中身をテーブルに出力するだけの簡単な処理」
265:nobodyさん
08/10/13 22:16:06
===================================================
PHP + Smartyで記述
===================================================
{include file="header.tpl" title="ページタイトル"}
<table>
<tr>
{foreach from=$rows item=row}
{strip}
<td>{$row.time|date_format:"%T "|default:"00:00:00"}</td>
<td>{$row.name|escape}</td>
<td>{$row.value|escape|default:"DEFAULT"}</td>
{/strip}
{/foreach}
</tr>
</table>
{include file="footer.tpl"}
266:nobodyさん
08/10/13 22:16:56
===================================================
PHP単体で記述
===================================================
<?php
$title = "ページタイトル";
include_once "header.php";
?>
<table>
<tr>
<?php foreach((array) $rows as $row) { ?>
<?php ob_start();?>
<td><?php echo $row["time"] ? strftime("%T", $row["time"]) : "00:00:00"; ?></td>
<td><?php echo htmlspecialchars($row["name"]);?></td>
<td><?php echo ($row["value"]) ? htmlspecialchars($row["value"]) : "DEFAULT" ?></td>
<?php echo preg_replace("/[\r\n]/", ob_get_contents()); ?>
<?php ob_end_clean(); ?>
<?php } ?>
<tr>
</table>
<?php include_once "footer.php";?>
267:nobodyさん
08/10/13 22:17:35
PHP側はこれでも処理が全然足りない。
インクルードファイルの管理や、ローカルスコープ化処理、エラー処理、etc。
結局細かい処理を考えるとSmartyと同程度までの実装は欲しくなってくる。(文法はおいておいて)
そこをライブラリや関数で補うって事なんだろうけど、
実際にそうした場合のテンプレートコードを上げてみてくれ。
268:nobodyさん
08/10/14 01:17:27
>>262
>君の出してるエラーは「Smartyエラー」じゃなくて「PHPのエラー」だねw
>Smarty自体の処理ははあっておりコンパイルも通っている。
あほかお前、なんでSmartyのエラーかPHPのエラーかをここで区別する必要があるんだ?
エラーといわれた場所の行番号が違っていることが問題なんだろうが。
Smartyのエラーなんて、ただの構文解析でのエラーしかでねーじゃんか。
実行時のエラーには無力なうえ、変な行番号ででるんじゃ、使い勝手悪すぎだろ。
PHPなら実行時のエラーも行番号がずれることはない。こんなのあたりまえ。
実行時エラーを変な行番号でしか報告できないSmartyを必死に擁護するほうがどうかしてる。
「Smartyエラー」ってなんだよ、構文解析でのエラーじゃないからSmartyのせいじゃありませんって、アホか。
エラーの種類に関係なく、行番号がずれるのが問題なのに、
構文レベルエラーと実行時エラーを区別する必要がどこにある。
269:nobodyさん
08/10/14 01:52:38
>>268
デザイナとプログラマの分業がなされているとき
構文エラーはデザイナ責任、実行時エラーはプログラマ責任。
PHPエラーがでたらプログラマが対処すりゃいい。
そもそも、>246のエラーは文字列に変換できないクラスをassignしないもしくは、
assignしたものが直接扱えない変数であることをデザイナに伝えていれば起きない。
270:nobodyさん
08/10/14 02:36:44
>>268
アホはお前だろw
実行時エラー制御したいなら、Smartyに限らずassign時点で型判別しろよ無能w
それこそSmartyとかPHP以前の話だよ。
>エラーの種類に関係なく、行番号がずれるのが問題なのに、
ずれてねーよw コンパイル後のソースでの行数で、ご丁寧にファイル名まで出てるじゃん。
スクリプト言語しか触った事無い素人には、実行時エラーのデバッグは難しいのかもしれんが、
普通のPGなら上のエラーコード読むだけで、エラー内容もエラー位置も特定出来るわ…
むしろ構文エラーじゃなくて、実行時エラーだって理解出来て問題識別しやすいわw
無能を晒してないで、
はやく>>265-266を君の考えた素敵で使い勝手の良いテンプレートに書き換えてくれよ。
はやく>>265-266を君の考えた素敵で使い勝手の良いテンプレートに書き換えてくれよ。
はやく>>265-266を君の考えた素敵で使い勝手の良いテンプレートに書き換えてくれよ。
271:nobodyさん
08/10/14 02:40:48
こういう無能がdisplay_errorsをonにしたまま本番公開しちゃって恥ずかし思いするんだろうねぇ('_`
272:nobodyさん
08/10/14 03:44:58
>>268じゃなくて初心者だけどつくってみたー
よろしくお願いしまーす
<? // きょうつう(init.php)
define('DS', DIRECTORY_SEPARATOR);
define('TEMPLATE_DIR', 'tpl');
function include_template($name, $vars) {
// てきとうにかんすうをていぎします
function h($str){ return htmlspecialchars($str); }
function strip($str){ return preg_replace('/[\n\r]/', '', $str); }
extract($vars);
include TEMPLATE_DIR . DS . $name;
}
?>
273:nobodyさん
08/10/14 03:46:43
<? // こんとろーら
require_once 'init.php';
$rows = array(
array('time'=>time(), 'name'=>'foo', 'value'=>1),
array('name'=>'bar')
);
include_template('tpl.php', compact('rows'));
?>
<? // てんぷれーと(tpl.php) ?>
<? $title = 'ページタイトル'; ?>
<? include 'header.php' ?>
<table>
<? foreach((array) $rows as $row): ?>
<? ob_start('strip') ?>
<tr>
<td><?=h ($row['time'] ? strftime('%T', $row['time']) : '00:00:00') ?></td>
<td><?=h ($row['name']) ?></td>
<td><?=h ($row['value'] ? $row['value'] : 'DEFAULT') ?></td>
<tr>
<? ob_get_flush() ?>
<? endforeach ?>
</table>
<? include 'footer.php' ?>
でもsmartyのメソッドチェインてきなやつはよいとおもいます
274:nobodyさん
08/10/14 04:01:40
>>268
>エラーといわれた場所の行番号が違っていることが問題なんだろうが。
言いたいことはわかる。
でも、関数なんだから当然だろ。
引数が不適切なせいで、呼び出し先でエラーが出た場合を考えればわかりやすい。
275:196
08/10/14 09:31:04
いや、行番号の話はSmartyとsymfonyを混同した人の指摘?みたいだし、
エラーを追いかけたかったら良いデバッグツールを使えばいいと思うぞ。
PHP標準でスタックトレースも変数の中身も出せるわけだし。
>>263
SimplateいいぞSimplate。暢気な人には魅力がかわらんかも知れんが。
俺が考える「Smartyをわざわざ導入する際のデメリット」が結構解消されてる。
まあ、「SmartyはPHPで書かれている」という大きいメリットは殺ぐのだけど。
>>265-266はMVCを理解してない人の例という意味では良いサンプルだな。
>>271-273ありがとう。俺もせっかくなので一つ案を出す。
276:nobodyさん
08/10/14 10:01:19
おはよう。
>>275
Simplateいいよね。 客先都合で使えない事が多くて泣けるけど。
>>265-266はMVC的にはどう書くのが正解?
277:196
08/10/14 10:20:12
レス番間違えた。272-273、素晴らしいコードをありがとう。
議論としては蛇足になってしまうかも知れないんだけど、
俺が個人的に>>212より>>196が良いと思うと言った部分を紹介します。
特徴(一長一短?)は、テンプレートファイルの可読性が高く、隠蔽されていること。
利点はHTMLからの移植性と習得の容易さ。
欠点は配列操作のコストを二重にかけていること。
改行が多いと叱られたので再挑戦。
>>276
>>272-273のように書くのが正解だと思う。
少なくとも、MとVとCがそれぞれどのファイルかわかるでしょ。
278:196
08/10/14 10:21:06
require >>272
// function d($value, $default) { return isset($value) ? $value : $default; }
<?php // メソッドチェイン?をビューと切り離す(tpl.php)
$title = 'ページタイトル';
$disp_rows = array();
foreach((array) $rows as $row) {
$row['time'] = $row['time'] ? strftime('%T', $row['time']) : '00:00:00';
$row['value'] = $row['value'] ? $row['value'] : 'DEFAULT';
array_walk($row, 'h');
array_walk($row, 'strip');
$disp_rows[] = $row;
}
include 'header.php';
include 'body.php';
include 'footer.php';
<? // てんぷれーと(body.php) ?>
<h1><?=$title?></h1>
<table>
<? foreach($disp_rows as $row): ?>
<tr>
<td><?=$row['time']?></td>
<td><?=$row['name']?></td>
<td><?=$row['value']?></td>
</tr>
<? endforeach ?>
</table>
279:196
08/10/14 10:30:20
>>276
厳密には、こう考えると良いかも。やっつけだけど。
<? // こんとろーら
require_once 'init.php';
require_once 'model.php';
include_template('tpl.php', compact('rows'));
<? // もでる(model.php)
$rows = array(
array('time'=>time(), 'name'=>'foo', 'value'=>1),
array('name'=>'bar')
);
ちなみに俺は>>278のような書き分けをする時は、
tpl.phpの処理は、コントローラに近い場所に書いているかも。
280:nobodyさん
08/10/14 11:24:56
>>196
君、MVCを全く理解出来てないよ。
データの表示フォーマット等に関するビューロジックは、ビュー側で処理するべき。
コントローラは必要なデータをモデルからひっぱってデータに渡すだけで表示内容には関与しない。
君の書き方だと、各種表示フォーマットやデフォルト値が変更になった時にビューで処理出来ないでしょう?
281:nobodyさん
08/10/14 11:31:38
>>265-266と>>272-273の違いは何ですか?
MとCはコードに掲載していないだけでVとしては正しいと思います。
何が問題でしょうか?具体的に教えて下さい。
282:nobodyさん
08/10/14 11:37:48
>>280
変更される度にtpl.phpに修正を入れるんだろうな
単純にテンプレートファイルとビュー用のデータ加工のphpを分けてるだけみたいだし
というか、やってる事はオレオレテンプレートエンジンな件について
要は生phpをテンプレートファイルにできればいいのかな?
283:nobodyさん
08/10/14 11:50:37
>>282
ねw 多分中学生か高校生の熱血PG志望者だよきっと。
俺も若い頃は動作の重さに超敏感だったし、Smartyとか使う奴はアホかと思っていたw
284:nobodyさん
08/10/14 12:14:00
>「Smartyをわざわざ導入する際のデメリット」
俺にはこれがわからん。
パッケージインストールもしくはダウンロード→インクルードパス下に解凍したらすぐ使えるよ?
習得の手間は人それぞれだろうけどおそらく196や周辺のPHP知ってるデザイナーは苦労したんだろうな。
285:nobodyさん
08/10/14 12:15:43
>>281
んーと
「V」にだけ着目するならどっちもただしい、
それこそ全部echo文でもただしいのではとおもいます!
>>272-273は「SmartyでできることはPHPでできる」、の一部のサンプルとして
1. 変数・関数のスコープの限定の実現
2. 生PHP?のテンプレートとしての(そこそこの)書きやすさの実現
(というかshort_open_tagの積極的な使用)
を主眼においてつくってみました。 >>266から>>273に代わって
何か問題が解決したとすれば、主にはView用変数・ユーザ定義関数がグローバルでなくなったこと
かなとおもいます(まちがってたらアドバイスください><)。
じぶんはというと今テンプレートに
Smartyを使いつづけるか(といってもまだ使って一ヶ月ですが!)
否かまよっているところなので先人さんのいろいろな意見を参考にしたいところで、
最近このスレをみつけてせっかく興味のある話題にめぐりあえたのに
煽り合いばかりでおもしろくないなーとおもっているところです。
286:nobodyさん
08/10/14 12:23:17
お前が煽ってんだろが
287:nobodyさん
08/10/14 12:28:17
あ、>>277さん、こちらこそありがとうございます><
最初はもっとボコボコに叩かれるかもとおもってたので…
288:nobodyさん
08/10/14 12:31:26
>>286
煽ってないですが煽ってると思われたならあやまります。。
すみません
289:nobodyさん
08/10/14 12:41:55
>>285
>>265-266
「V」に着目するだけというかVのサンプルですが…。
MVC的に見ても、MもCも混在していないので間違いがわかりません。
どこに違和感を感じたのでしょうか?
仕組みを学ぶのは良い事だと思います。
しかし、もう少しSmartyを使い続けてみて下さい。
不満点も沢山見つかると思いますが、メリットも沢山見つかると思います。
「SmartyでできることはPHPでできる」はパッと見出来てるように見えてるだけで、
細かい実装(商業では必須ね)考えると、相当な開発負荷がかかります。
>short_open_tagの積極的な使用
現バージョンのPHPの推奨設定ではshort_open_tag=offなので注意して下さい。
PHP6以降では廃止される可能性もあります。
290:nobodyさん
08/10/14 12:42:58
>>285
Smartyでできる事を手間をかけてPHPだけで書いてもメリットないだろう
処理速度に多少のアドバンテージがあるくらいで、それも汎用的に書いていけば怪しい
個人的にはSmartyを使うメリットで一番大きいのは、使ってる人が多い事だと思ってる
291:nobodyさん
08/10/14 12:46:30
SmartyもどきをPHPで作るくらいなら、俺はSmartyを使う。
292:196
08/10/14 18:57:31
short_open_tagは俺の趣味です。
「ファイルの末尾に ?> を書かない」と同じくらい、趣味の領域だと思う。
なので、xmlとか読み書きする人は気をつけてください。
>>280
そうだね。当然、MVCという区分上は、tpl.phpはビューに相当する。
「コントローラに近い場所に書いている」という実装が悪いのかな。
例えばsymfonyだったら、tpl.phpこそがhogeSuccess.phpであるべきで、
hogeSuccess.phpからhoge.htmlをincludeしたほうが妥当ってことだよね。
コントローラがinclude_templateを呼ぶのはイビツなんだな。なるほど納得。
それを踏まえて再度意見を戴きたいのだけど、
ビューが分かれててその一方がPHPだと、何かまずいだろうか?
モデルもコントローラも1ファイルじゃないといけないという理屈は無いよね。
>>282
そう。単純に「表示値の準備」と「表示処理」を分けているだけ。
> 要は生phpをテンプレートファイルにできればいいのかな?
ナマじゃなくてもいいんだけど、Smartyほど大げさなモノは、個人的には使わないかな。
テンプレートファイル部分は出来るだけ薄いほうが好き。
293:nobodyさん
08/10/14 20:46:31
>short_open_tagは俺の趣味です。
なんだ、ただのひねくれものか
お前、友達いないだろ?
お前、自分の事出来る職人だと思ってるだろ?
周りは確実に引いてるパターンが目に浮かぶ
もはやSmartyの話題でも無いので、MVCスレにでも行けや。
294:nobodyさん
08/10/15 00:24:43
>>292
>>278のコードだけど、tpl.phpとbody.phpを合わせてSmartyで言うところのテンプレートだよね?
tpl.phpでデータを整形をして、body.phpは体裁のみを担当と…。
これは君の主張していた
・Smartyより学習コストが低い
・(デザイナが)Smartyで出来る事は実現出来る
には当てはまらないよね。
tpl.phpで扱える便利な関数群を提供してあげればいいんだろうけど、
それは>>290-291の言うとおり、結局は我流テンプレートエンジンを作る事態になってしまうよね。
であれば既に完成されたSmartyから乗り換える理由にはなり得ないと思うんだ。
もっとも君が我流テンプレートエンジンを完成させて、公開してくれれば別かもしれないが。
295:nobodyさん
08/10/15 00:45:46
>>292
>ビューが分かれててその一方がPHPだと、何かまずいだろうか?
>モデルもコントローラも1ファイルじゃないといけないという理屈は無いよね。
ビューをファイル分割する事は、
メリットよりデメリットの方が多い気がするんだよね。
まず、ファイルが増えればバージョン管理やデプロイの手間が増える。
>>278の形式だとbodyの表示を修正したい場合、
読み込み元のtplを把握している必要があるし、
tplが読み込んでいるbodyが他に無いか等も把握していないといけない。
これは非常に面倒。
そんな理由で、どうしても整形処理を別ファイルにしたいのであれば、
tpl.phpからbody.phpを読むのではなく、
body.phpからtpl.phpを読むような形にするのが望ましいと思う。
<? // body.php ?>
<? include "tpl.php" ?>
<? $rows = $tpl->format($rows); // 整形 ?>
<? include "header.php" ?>
~ 表示処理 ~
<? include "footer.php" ?>
そうすると構文こそ違うものの、Smartyとやってる事はほとんど同じになる。
で、Smartyに相当するtpl.phpを作るのは誰がやるんだ…って話になる。
296:nobodyさん
08/10/15 01:03:17
>>289
じぶんは>>264-267を見てつくってみたのですが
おっしゃってることがよくわかりませんでした。。
Smartyはまだ触ってみるつもりではいます!
>>290さんのおっしゃっるとおり使う人が多いのはよいとおもいますし
たしかカスタムタグみたいなこともカスタム関数でできるんですよね??
ただSmartyに不満を持つたびに、
PHPをちゃんとテンプレートとしてつかえたら、とおもいます。
PHPを使いはじめてから、short_open_tagとか制御構文の別構文(endif, ...)とか
テンプレートとしてのPHPはすごくいい感じだとおもったので
PHPがちゃんとテンプレートとして進化しなかったのがざんねんです。
テンプレートエンジン上にテンプレートエンジンをのっけるという感覚が
今割り切って理解できなくなっているのです。。
short_open_tagがXML処理命令の規則に合わないのはあきらめるしかないです。。
297:nobodyさん
08/10/15 02:00:05
PHPはすでにテンプレートエンジンとしては不全なんだろ。
それならSmartyを良くするとかもっと良いテンプレートエンジンを作るとかしたほうが生産的だと思うのだが。
まあ、PHPを良くするというのもありか。
しかしテンプレートとプログラムを同居させるというのはどだい無理があると思う。
Smartyのプログラム的文法もかなり無理やりだしな。
298:nobodyさん
08/10/15 02:42:51
>>296
PHPは正確にはテンプレートエンジンでは無いんですよ。
テンプレートエンジンのようにHTML内に組み込めるようになっているだけなんです。
>PHPをちゃんとテンプレートとしてつかえたら、とおもいます。
Smartyのテンプレートの中にPHPを直接書く事も出来ますよ。(非推奨ですが)
{php}echo "Hello World"{/php}
>たしかカスタムタグみたいなこともカスタム関数でできるんですよね?
PHPが解る人なら簡単に作れますよ。
(例) タグ内の文字列を置換するタグ{replace}{/replace}タグを作る場合
block.replace.php というファイルをpluginsディレクトリの中に作成し、次のコードを記述するだけです。
function smarty_block_replace($params, $content, &$smarty)
{
retrurn str_replace($p["search"], $p["replace"], $content);
}
以降Smartyテンプレートで次のように記述出来るようになります。
{replace search="本当ですか" replace="マジッスカ"}
{replace search="凄いですね" replace="パネェっす"}
本当ですか。
凄いですね。
{/replace}
{/replace}
// 出力:マジッスカ。パネェっす。
一見、PHP単体でも簡単に実装出来そうに見えますが、タグの入れ子処理等を考えると地味に面倒だったり、テンプレートの可読性が下がったりしますよね。
299:196
08/10/15 18:33:26
>>294
tpl.phpが難しいから学習コストが高いということかな?
・PHPが理解出来ないレベルのへぼデザイナーはbody.phpだけ触らせるしかない
・Smartyで出来る事は理論上すべてPHPで出来る(し、その手段もそれなりに用意されている)
というのが俺の意見かな。
俺の環境はsymfonyで、sfFormか、helperか、sfSmartyViewPluginかの選択が必要なので、
既にSmartyで完成されたサイトとかを、わざわざリプレースする必要は無いと思う。
「SmartyはわかるけどPHPは触れません」というデザイナーって、結構多いのかな?
>>295
なるほど、俺にとっては斬新な発想だった。
ファイルの命名規則をしっかり決めれば、関連性はわかりやすいかと思ってたんだが。
tpl.phpは、デザイナーが作るのが理想だが、プログラマーがやっても構わない。
「$nameの表示はescapeしてnl2brしてください」という要件を把握出来るのが、
デザイナーなのかプログラマーなのかによって話が大きく変わるんだろうな。
300:196
08/10/15 19:01:26
せっかくなのでSmartyの質問をさせてくれ。
(是非はおいといて)>>278のような事をSmartyで実現したい。
MVCで言うと、new Smarty();が書かれるファイルは、
モデルでもコントローラでもなく、ビューに属する事になる。
sfSmartyViewとかZend_View_Smartyみたいな位置づけになるわけだな。なので、
コントローラ(ラッパーにテンプレート変数を渡す)
↓
ビュー用のラッパー。内部的に$snarty->assign();が書かれる
↓
★テンプレート変数の整形処理(Smartyの便利な構文で書ければ良い)
$name = {$name|escape|なんたら|かんたら}
↓
テンプレートファイル(.tpl)
{$name}
みたいな風にしたいのだが、それは仕様上無理なんだろうか。
{assign}とか{eval}でいける? コストはこの際考えないことにして・・・。
301:nobodyさん
08/10/15 19:38:33
>>299
>tpl.phpが難しいから学習コストが高いということかな?
少なくともSmartyと比較したら数倍難しいし、
素人のロジックがシステムに混入する恐れがある。
define("DEBUG", 1); とか $_POST["xxx"] = "debug data!"; とか書かれてたら寒気しない?
>Smartyで出来る事は理論上すべてPHPで出来る
これは逆じゃないかな。
「symfonyで出来る事は全てPHPで出来る」と言ってるのと同じで、
Smartyは所詮PHPライブラリに過ぎないんだから。
> PHPが理解出来ないレベルのへぼデザイナーはbody.phpだけ触らせるしかない
>「SmartyはわかるけどPHPは触れません」というデザイナーって、結構多いのかな?
仮にPHPが触れるデザイナがいたとしても、
上に書いたようにセキュリティの観点からは、システムに影響を与える権限を与えないのが普通だと思う。
少なくとも外注のデザイナには絶対に触らせたくないよね。
>tpl.phpは、デザイナーが作るのが理想だが、プログラマーがやっても構わない。
tpl.phpはビューである以上、デザイナが触るべきだと思う。
ロジック的にMVCを分けても、管理体制(担当区分)がわかれていないとエラーが出た時に面倒だから。
そういう意味ではSmartyはその機能性より、
コードの統一性や管理体制に与える恩恵の方が大きいのかもね。
302:nobodyさん
08/10/15 20:31:43
>>300
>(是非はおいといて)>>278のような事をSmartyで実現したい。
{assign}{capture}{eval}あたりで出来るよ。
コンパイル後のソース見ればわかるけど、assignなんかはコストもほとんど変わらない。
// format.tpl
{assign var="name" value=$name|escape|default:"no name"}
{include file="body.tpl"}
// body.tpl
{$name}
>MVCで言うと、new Smarty();が書かれるファイルは、
>モデルでもコントローラでもなく、ビューに属する事になる。
自分はSmarty自体をビューとして考えているかな。
コントローラがビュー(Smarty)を生成し、レスポンスデータを渡す。
ビュー(Smarty)は与えられたレスポンスデータを元に画面を表示する。
↓こんな感じ。
class Controller {
public function action() {
// 実際にはSmarty継承クラスor内包クラスになる
$view = new Smarty();
// 必要な処理をしてビューにレスポンスデータを渡す
$view->setResponse(new Respose(xxxx));
// 整形や表示処理は全てビューにまかせる。
$view->render();
}
}
303:nobodyさん
08/10/15 20:34:36
PHPが書けないデザイナをヘボとか言っちゃう人とは仕事したくないなあ
jspが書けないデザイナもヘボなんだよね?
MovableTypeのテンプレートタグも知らなきゃヘボなのかもしれない
うーん、大変だな
304:nobodyさん
08/10/16 02:49:37
>>298
> PHPは正確にはテンプレートエンジンでは無いんですよ。
そうなんですか??
> Smartyのテンプレートの中にPHPを直接書く事も出来ますよ。(非推奨ですが)
んんーSmarty内でPHPコードを書くのは本末転倒というか本末転倒ですよね。。
あとカスタムタグ?のサンプルありがとうございます!
URLリンク(smarty.incutio.com)というのがおもしろそうでした!
305:nobodyさん
08/10/16 03:51:12
>>304
PHPはプログラミング言語の名称ですよ。
306:nobodyさん
08/10/16 08:06:34
>>303
CSS、HTML、JSあたりを完璧に書けない奴はヘボプログラマなんかねw
個人的にはデザイナはPHPとか勉強するヒマあったら、
システムに組み込みやすいスマートなHTMLコーディング技術を学んで欲しいわ。
307:nobodyさん
08/10/16 17:56:46
>>305
そりゃ、そうでしょうとも…!
308:nobodyさん
08/10/16 19:53:26
PHPという言語は<?php ?>タグの外をそのまま出力するという言語仕様なだけでテンプレートエンジンでは無いよね。
309:196
08/10/19 11:55:40
なるほど、このスレには分業指向の人が多いんだな。
>>301
{php}{/php}でも同様の問題は発生すると思うので、その辺は気にしても仕方ないと思っている。
デザイナーにSSHを使わせないとか、PHPが絶対に動かない環境しか与えないとか、
へぼい人を縛る方向で考えるよりは、へぼくない人と仕事するほうが良いと思ってしまう。
>>302
やっぱり、そうなってしまうよなあ。
上で「それはMVCではない」と言われてから、内心悩んでたんだけど。
Smartyの解説ありがとう。その線で学習コストが等価になれるか検討してみる。
>>303
JavaとかMT(使ってる人いるのか?)のプロジェクトなら、そうだろうね。
>>306
HTML書けません、というプログラマーとは間違っても一緒に仕事しないよ。
というより、Smarty文法がわからないデザイナーと一緒に仕事しないでしょ?
同じことでないの?
310:nobodyさん
08/10/19 15:09:25
>>309
>{php}{/php}でも同様の問題は発生すると思うので、その辺は気にしても仕方ないと思っている。
{php}{/php}タグは禁止に出来ます。
>デザイナーにSSHを使わせないとか、PHPが絶対に動かない環境しか与えないとか、
>へぼい人を縛る方向で考えるよりは、へぼくない人と仕事するほうが良いと思ってしまう。
逆になんで必要の無い権限を与えるの?それによるデメリットは考慮しないの?
まっとうなセキュリティの考え方だったら「必要な権限以外は与えない」のが常識だと思うんだけどね。
最低限の権限で不便させない環境を提供出来ないシステム屋こそへぼい人だと思う。
参考までにいくつか質問させておくれ
・プロジェクトの人数とか連携手法やらバージョン管理方法は?
・テンプレートPHPでエラーが出たら誰の責任になるの?
・テンプレートに使ってるPHP系のライブラリとかは?
311:196
08/10/19 15:56:49
>>310
デザイナーに権限を与えたくないなら、HTMLだけを納品させて、
コードレビューとサーバへの設置はプログラマーがやればいいじゃん。
デザイナーにサーバへの書き込み権限を与えた時点で、
(仮にあらゆるコマンドの実行をサーバ上で絶対に行えなくしたとしても)
デザイナーはシステムの正常動作責任を一部負う事になるのは間違いない。
たとえば、必要なパラメタを渡さなかったとか、ファイルを消しちゃったとか。
だから、あらゆる操作をサーバ上で絶対に行えなくすることのメリットは、
デザイナーがサーバを壊さないようにする、という程度に過ぎないので、
それなら優秀で信頼のおけるデザイナーと仕事したほうがいいんじゃないの? と思う。
質問の答えだけど、製品が完成しなかったらチーム全体の責任。
デザイナー主導の案件でもプログラマー主導の案件でも、
インタフェース定義の必要性は発生し、それは両者(主に主導側)の責任になる。
Smarty単体ではシステムの仕様テストは行えないので、
「言われたとおりのSmartyテンプレートだけ書くからあとは知らないよ」というデザイナーは、
HTMLだけしか書かないデザイナーと大して変わらない。
なので俺はそういうデザイナーとは仕事してないし、
もしデザインを外注する事があっても、Smartyの学習を促す事は無いと思う。
あえて擁するなら、へぼプログラマーと連携する時には、Smartyは役に立ったな。
あれを安直に使えば、嫌でもビューとロジックが分離出来るから。
でも今はフレームワークを使うのが普通なので、そのメリットは感じられなくなった。
312:196
08/10/19 16:30:50
超極端な例として、>>310の議論にとって最も良い条件を考える。
・顧客がWebデザインを自分で更新したいと要望している
実力はへぼかも知れないが、お客様なので無碍にも出来ない
・プログラム開発も初期デザインも業者が行い納品する
・サーバは業者が貸与するので、壊されないように配慮しなければいけない
・ssh権限は与えず、ftpsでテンプレートファイルだけ更新できるようになっている
・プログラムの動作責任は業者が負わないといけない
・テンプレート更新内容のチェックに業者の人的コストは割けないので、
更新はノーチェックで行い、システムが正常動作しなくなった責任は顧客に負わせなければいけない
・テンプレートにはプログラムから変数を埋め込まなければいけない
・顧客はSmartyの心得と導入への理解がある
・Smartyのうち危険なタグをすべて洗い出し、設定で使用を禁止している
・テンプレートでエラーが出てもセキュリティ的に不適切な出力は行われないよう設定されている
それでも
・パラメタエラー
・クロスサイトスクリプティング
の問題は残り、特に後者はインタフェース側で検出する事が出来ない。
お客様が |escape を書き忘れただけで。
なので>>302の仕組みがあれば、完全に縛ることが可能だろうか、と思った。
でも、ここまで極端な事例でもない限り、デキル人を探した方が早いなぁ。
顧客には任意の静的HTMLを特定箇所にinclude出来る仕組みのみを提供するとか。
Smartyを縛るより、俺俺テンプレートエンジンのほうが早いじゃん、とか。
313:nobodyさん
08/10/19 17:55:19
とにかく難癖つけてSmarty叩きたいのはわかったけど、
結局君がSmarty使いこなせてないだけじゃんww
100%の対策なんて無いんだから、対策しないって言ってるだけって事に気付けww
>デザイナーに権限を与えたくないなら、HTMLだけを納品させて、
>コードレビューとサーバへの設置はプログラマーがやればいいじゃん
デザイン修正の度にやるんすか。
>デザイナーにサーバへの書き込み権限を与えた時点で
当然、テンプレートディレクトリとシステムディレクトリで権限分けてるし。
ファイルに関しても基本的にはSVN経由で、本番には手動デプロイですよ。
消される恐れがあるとわかってて何故権限を与える?w
>Smarty単体ではシステムの仕様テストは行えないので、
わぁ、きっと君のところはMVC分けが出来てないんですね><
フレームワーク使えば大丈夫とか思ってるんですね><
314:nobodyさん
08/10/19 18:12:47
>・パラメタエラー
>・クロスサイトスクリプティング
>の問題は残り、特に後者はインタフェース側で検出する事が出来ない。
>>>302の仕組みがあれば、完全に縛ることが可能だろうか、と思った。
default_modifiersやフィルタって知ってます?
>Smartyを縛るより、俺俺テンプレートエンジンのほうが早いじゃん、とか。
もうSmarty叩きはいいからさ
その安全で扱いやすい俺俺テンプレートエンジンを見せてよ。
君の主張は前提と具体性がないから水掛け論だよ…。
まさか専門学校生じゃないとは思うけど質問に具体的、箇条書きで答えてくれよ。
・プロジェクトの人数は?
・連携手法は?
・バージョン管理方法は?
・デプロイ方法は?
・使用しているPHPライブラリは?
・使用しているフレームワークは?
・使用している俺俺テンプレートエンジンは?
315:nobodyさん
08/10/20 12:22:54
こんなに活発に意見交換があるのに、
どうしてココは『隔離スレ』なの?
316:nobodyさん
08/10/20 12:27:38
名目はともかくスレ独立してるのはありがたいので別にいいや。
317:196
08/10/20 18:54:05
>>313
煽っているように見えて>>311と同じ事を言っているように見える。
なので異論は無い。むしろ、まったくその通りだと思う。
>>314
default_modifiersは初めて知った。
nodefaultsと組み合わせれば、symfonyのescaping strategyに近い所まではいけるな。
escapeはプログラマーの責任でもなくデザイナーの責任でもなく、
フレームワークが基本的に便宜を図る、という解釈をすれば、悪くない思想だと思う。
後半については答えても意味が無いと思うし、
別にSmartyを否定する事が主目的で発言している訳ではないと言っている。
世の中にはSmartyを使うのに明らかに向かない案件もあるし、
そんなシチュエーションをわざわざ取り上げてSmartyを否定しても仕方が無いだろ。
逆に「Smartyを使うならこんな規模や状況やツールに最適だよ」という意見があれば、
それは主張してくれればいいと思う。
318:nobodyさん
08/10/20 19:11:06
>>317
default_modifiersは問題がある(ソースに手を入れれば回避可能だが)から使わないって話なら聞くが
Smartyを3年使ってて知らないってどんだけ・・・
そもそもなんでこのスレにいるん?
319:nobodyさん
08/10/21 01:33:33
>>317
>世の中にはSmartyを使うのに明らかに向かない案件もあるし、
>そんなシチュエーションをわざわざ取り上げてSmartyを否定しても仕方が無いだろ。
本当にそう思ってるなら196から出てくる発言はありえないと思うんだよね。
シチュエーションも取り上げずに、否定だけされても納得は出来ないじゃない?
「俺ならこうする」って意見も無しにダメだしされてもなぁ…default_modifiersすら知らないみたいだし、
単にSmartyの事知らないだけですよね?
議論では無く、相手を論破する事が目的になってませんか?
なんでこのスレにいるん?
320:nobodyさん
08/10/22 10:19:46
>>313と>>311が同じに見えるって、どんだけ読解力無いんだお前は…
相反する事言っているのに、なんで>>313に対しては異論唱えないんだ。
321:196
08/10/22 11:20:52
simplateのメンテに貢献したほうがマシな気がしてきた。
>>318
そうだっけか。じゃあ使い物にならないから忘れたのかな。
いずれにせよSmarty使ってた頃は、そこまでいじる気自体が無かったな。
>>319
俺ならこうする、という意見も、具体的なコードも書いたし、
Smartyを否定する事が主目的でも無いし、Smartyのわからないところは質問した。
発言する前にきちんと流れを読んでくれ。
直近の議論は294,299,301,309,310,311だ。
>>320
> 当然、テンプレートディレクトリとシステムディレクトリで権限分けてるし。
> ファイルに関しても基本的にはSVN経由で、本番には手動デプロイですよ。
> 消される恐れがあるとわかってて何故権限を与える?w
という意向と>>311との違いは状況判断の部分だけ。
俺は手動デプロイなんていちいちしたくないので、
信頼のおける優秀なデザイナーと仕事をする。
だけど、信頼のおけないデザイナーと仕事せざるを得ないなら、
>>313の言うようにするのもわかる。
前提とか本人の置かれている状況が違うだけなので、特に反論は無い。
それとも、
「デザイナーには完全な制限と束縛を課して徹底的に管理しろ」
というのが一番言いたいことなのかな?
Smartyを使ってデザイナーを檻の中に隔離するんだ、みたいな思想なのかな。
322:196
08/10/22 12:12:03
俺が何故このスレに居るのかとよく問われるので、
お言葉に甘えさせて戴き、整理させていただく。
俺が思う結論
・Smarty文法 {$name} のPHP文法 <?=$name?> に対する優位性
→メソッドチェインはSmarty文法が少し短いが、習得コストに大差は無さそう。
→short_open_tagを使いたくない/使えない場合はPHP文法が長くなるが同上。
・Smarty関数 {hoge} のPHP関数 hoge() に対する優位性
→車輪の再発明をする必要が無いのが利点。
→なので別のライブラリやヘルパーなどでも良い。
・Smartyのdefault_modifiersを使いビューのHTMLを安全にすること。
→設計と実装は不完全だが、フレームワークに任せるという考え自体は良いかも。
・ビュー用の変数構築とビューのHTMLファイルを分ける意義
→Smartyで実現するには{assign}{capture}{eval}を使えば可能。
→デザイナーに変数構築をやらせる前提では二度手間に感じる。
→プログラマーが変数構築を担当可能な所には意義があると思うし、
default_modifiersの不具合をフォローすることも出来そう。
・Smartyはデザイナーがシステムを壊さないよう完全に束縛できるか
→100%束縛したり管理するのは不可能そう。
→PHPコード実行の抑止の為にテンプレートエンジンを使うのは一応有効。
何か主張されたのかも知れないと思っていること
・Smartyや他の手段を駆使してデザイナーをシステムから隔離する事自体の意義
権限とリポジトリの管理と手動デプロイを常に徹底すれ
→俺は優秀なデザイナーを使うかHTMLで納品させるというアプローチ。
手動管理はめんどくさいし、たとえ客でも保守費用払わなかったらやりたくない。