【PHP】 Smarty 隔離スレ 【テンプレート】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/02(土) 00:21:09ID:6cKcKeTp0170nobodyさん
2008/09/04(木) 11:33:28ID:???0171169
2008/09/04(木) 12:15:47ID:???0172nobodyさん
2008/09/04(木) 12:25:57ID:???0173169
2008/09/04(木) 21:08:05ID:???配布されているウェブアプリがsmartyを使っているのですが
配布ファイルのバージョンアップの際に面倒なことにならないかな・・・と
というかphpはわからなくて
smartyも触るのは初めてでマニュアルを見ながら触っているのですが・・・
インデントするのも難しいですね
レスしてくれた方々、ありがとうございますm(_ _)m
0174nobodyさん
2008/09/04(木) 21:11:12ID:???0175nobodyさん
2008/09/04(木) 21:31:16ID:???0176169
2008/09/05(金) 00:54:49ID:???レスしてくれた方々、ありがとうございますm(_ _)m
0177nobodyさん
2008/09/24(水) 00:32:25ID:KMdxurbqタグとクラスが一対一になってるのが素晴らしい。
0178nobodyさん
2008/09/25(木) 00:09:46ID:lXgzxRnB<p>名前:{$name}</p>
テンプレートに上記のような記述をしたのですが、
「名前:」の部分が化けてしまいます。
テンプレートファイルはEUCで保存してあります。
原因としてはどのような事が考えられますか?
0180178
2008/09/25(木) 02:06:16ID:???見ましたが、既に化けてます・・・
SmartyがEUC以外の文字コードで
テンプレートを処理しているということでしょうか?
0181nobodyさん
2008/09/25(木) 02:17:37ID:???0182178
2008/09/25(木) 02:47:42ID:???あ、Smarty.class.phpがカスタマイズされていました。
SJIS→EUC→SJISみたいな変換してる。
お騒がせしました。すみません。
既存のものとは別にSmartyを入れます。
0183nobodyさん
2008/09/26(金) 16:36:37ID:NKaAViJVそんなファイルないよっていうエラーが出るんですが、なぜでしょうか?
ためしに、force_compileをtrueにしてみましたが、やっぱり見に行ってしまうようです。
0184183
2008/09/26(金) 17:02:20ID:NKaAViJVこれはいったい・・・。
0185nobodyさん
2008/09/26(金) 17:16:56ID:???0186nobodyさん
2008/09/26(金) 17:23:10ID:NKaAViJVすいません、重要な点を忘れていました。
その別ディレクトリでコンパイルされたテンプレートを、
動かない方のtemplate_cにコピーしてやると、動くのです。
なのでパスが違ってはいないです。
全く謎・・・
0187nobodyさん
2008/09/26(金) 17:49:10ID:???0188nobodyさん
2008/09/26(金) 23:07:17ID:???さっきひさぶりにやってみたらsjisでも問題なく動いた(?_?)
0192nobodyさん
2008/10/02(木) 16:19:26ID:???postFilterで元に戻す。
これは基本だろう。
0193nobodyさん
2008/10/03(金) 12:27:37ID:???0194nobodyさん
2008/10/03(金) 19:01:42ID:???よりも
名前:{$name}
のほうが書きやすくて可読性も高いから。
0195nobodyさん
2008/10/03(金) 19:14:40ID:???0196nobodyさん
2008/10/03(金) 19:36:59ID:???0197nobodyさん
2008/10/03(金) 20:29:13ID:???0198nobodyさん
2008/10/04(土) 01:57:42ID:???素人or中級者未満だと自覚した方が良いよ。
0200nobodyさん
2008/10/05(日) 01:31:28ID:???意味がわからんというのは、君のやってる事のレベルが低いからだと思うよ。
PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
PHPはテンプレートっぽく使えるだけで、実務的にテンプレート管理を行おうとしたらかなりの量のコーディングが必要になってくる。
結局はテンプレートエンジンを作る必要はあるんだよ。
0201nobodyさん
2008/10/05(日) 01:40:36ID:???<?php echo strlen($var) ? preg_replace("/[\r\n]/", "<br />", htmlspecialchars($var)) : "hoge";?>
・Smarty
{$var|escape|nl2br|default:"hoge"}
0202nobodyさん
2008/10/05(日) 06:55:52ID:???0203nobodyさん
2008/10/05(日) 11:15:11ID:???0205nobodyさん
2008/10/06(月) 03:08:54ID:???「そんなコードを書く状況は100%ねぇよw」って言うなら、Smarty使う意味無いけど。
0206nobodyさん
2008/10/06(月) 08:52:51ID:???>なぜphpのほうでnl2br使わんの
知らなかっただけだろ。
あと preg_replace("/[¥r¥n]/", "<br />") だと "¥r¥n" があったときに <br /><br /> になっちゃうから
ここは preg_replace("/¥r?¥n/", "<br />") だよな。旧Macは無視したとして。
nl2br知らないわ、正規表現間違うわじゃ、底がしれる
0207nobodyさん
2008/10/06(月) 08:55:31ID:???>PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
キャッシュは専用ライブラリを使う
ループ処理はPHPのforeachやwhileをそのまま使う
エスケープ処理はhtmlspecialchars()を使うか、短い名前で定義する
携帯、PC両対応はSmartyに備わってる機能ではない
0212196
2008/10/06(月) 19:40:07ID:???<?=h(e(n($name)))?>
0213nobodyさん
2008/10/06(月) 20:27:56ID:???そんなの結局は劣化車輪の再発明でしかないし、Smartyを使わない理由を述べよ。
0214nobodyさん
2008/10/07(火) 12:25:11ID:???実用レベルでは、してはいけない「車輪の再発明」だが、
言語の学習段階ではレベルアップのために、あえて「車輪の再発明」は必要...
論点ずれた。スマゾ
0215nobodyさん
2008/10/07(火) 14:30:17ID:???物理習うときにニュートン方程式の再発明から始めるのか?
0216nobodyさん
2008/10/07(火) 15:03:12ID:???ぶつりほうそくとは発見ではなく自然の理解であるからして。
同様に、対象を理解するために先人の真似をするのは無駄じゃない。
物理の授業でニュートンがやった実験やるのはべつに遊びってわけじゃない。
0217nobodyさん
2008/10/07(火) 15:10:28ID:???学習するためにやるものじゃない。
0218nobodyさん
2008/10/07(火) 18:26:45ID:???車輪の再発明自体は否定も肯定もしないけど、
>>212 とか、再発明の域にすら達してないだろ。
単にSmartyを勉強するのが面倒だから、批判してるだけに見えてしまうんよ。
実際そうなんだろうけどw
0219nobodyさん
2008/10/07(火) 21:01:42ID:???0220nobodyさん
2008/10/08(水) 08:35:32ID:???>全部Smartyで出来るじゃんw
>使わない理由と、他のライブラリを使う理由を述べよ。
逆だよ。PHPでできるのに、なんでSmartyを使う必要があるのってこと。
0221nobodyさん
2008/10/08(水) 08:44:32ID:???だからなんなん?
テンプレートエンジンを利用すれば簡潔に記述できるのは事実だろ
0222nobodyさん
2008/10/08(水) 14:08:02ID:???PHPで関数集なり、テンプレートエンジンもどきを作るくらいなら
なんで既存の枯れはてたSmartyを使わないのって事。
まぁ >>212みたいなのを見ても尚、PHPで同じ事が出来る。
と感じているのであれば、何説明しても無駄だろうけどさ。
テンプレート関数毎回作って、毎回デザイナに説明して、毎回デバッグしてるんだろうねw
0223nobodyさん
2008/10/08(水) 16:35:41ID:???だから毎回デスマーチになるのかw
0224nobodyさん
2008/10/09(木) 09:57:36ID:???デザイナに渡すときも
あとはよろしくねーって言えること。
マニュアルもちゃんとしてるし。
0225nobodyさん
2008/10/09(木) 11:10:47ID:???それでもPHPベタ書きよりはよほど楽だしあとで修正しやすい。
0226nobodyさん
2008/10/09(木) 16:09:53ID:???0227196
2008/10/09(木) 23:38:15ID:???> PHPで同じ事が出来る。
逆だよ。Smartyが前提なのではない。
素のPHPに対してSmartyをわざわざ追加する必要が無い、ということ。
しかしほんと、化石みたいなスレだな。
Smarty信者はまだPHP4とか使ってるのかね。
0228nobodyさん
2008/10/10(金) 00:21:33ID:???0229nobodyさん
2008/10/10(金) 01:12:51ID:???必死すぎwww
196のコードなんでPHP4とか以前にPGとしてウンコのレベルだろww
君が無知なのはわかったから
PHP単体じゃテンプレートエンジンとして機能しないのに、
「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
もしSmarty云々じゃなくてテンプレートエンジンがいらねーって事なら論外だ。
初心者スレから出直してこい。
>>228
普通に使われているし、需要も多いよ。
先月にも解説新刊が出た。
0230196
2008/10/10(金) 09:49:15ID:???答えは196に示してある通りなんだが。
俺もSmartyは仕事で3年くらい使ってたよ。
> 「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
> もしSmarty云々じゃなくてテンプレートエンジンがいらねーって事なら論外だ。
じゃあ俺はお前さんにとって論外らしいので、議論の余地は無いな。
SmartyじゃないとMVCが守れない開発者は現場では使えない。
もしお前さんがデザイナーなら、PHPの基礎くらい勉強しろと言いたくなるな。
うちのWebデザイナーはみんなPHP触れるよ。
> 初心者スレから出直してこい。
ここよりレベルの低いスレがあるのか。それは恐ろしいな。
0231nobodyさん
2008/10/10(金) 10:34:43ID:???それだとあとでデザイン修正があったときとかめんどくさくない?
もらったデザインを前のとdiffかけて
差分をtplに反映とか。
ただプログラマが一元的に管理してたほうが
セキュリティ的にはいいよね。
escape忘れただけで大変なことになることもあるし。
0232nobodyさん
2008/10/10(金) 15:47:13ID:???0233nobodyさん
2008/10/10(金) 17:37:52ID:???こんな輩が得意げに宣ってるからPHPはウンコだって言われるんだろうな。
0234nobodyさん
2008/10/10(金) 17:44:35ID:???0235196
2008/10/10(金) 23:28:20ID:???209の要件を満たす方法の一つが212で、それは211と大して変わらない。
だけど196は、MVCさえ理解できれば、209で述べられている要件も、
201よりスマートなコードにする事も、満たすことが出来るんだ。
なんでか知らんけど、Smartyを信じる人は知識があって偉い、
そうじゃない人はみんな素人だ、という反論しか戴けないのは残念だな。
>>234
ストローク数の少なさと可読性は若干損なわれるが、
それでもSmartyよりは<?php echo $name ?>のほうがマシだと思う。
0236nobodyさん
2008/10/11(土) 00:30:31ID:???>そうじゃない人はみんな素人だ
誰もそんな事言ってないから。
君がSmartyを否定するだけの根拠を持ち出さないから素人扱いされちゃうんだよ。
(まぁ、テンプレートエンジンを否定してる時点で底が知れてるけども。)
196が良いって、グローバル変数かつ、ショートタグかつ、エスケープ無しがView的にOKって事かい?
それなら、早急にWEB系PGを辞めた方が良い。
212の記法に疑問を持たないのであれば、
やはり、早急にPGを辞めた方が良い。
一応聞いとくけど、OOP&MVC的に開発する時、どんな構成で作ってるの?
フレームワークとかライブラリとか教えてよ。
まさかhtdocs以下に.phpファイルを量産してたりしないよね?
0237nobodyさん
2008/10/11(土) 06:53:44ID:???ほらほらこんな書き方すると単にSmartyを叩いてるようにしかみえないよ
196が同じ人なら、その内容からとてもSmartyを理解してる人には思えないんだよね
>196は良いと思うんだけどな。
PHP(web)初心者だよね(笑)
0238nobodyさん
2008/10/11(土) 12:06:19ID:???今まででたのは、<?php echo $var; ?> が短く書けることぐらい?
SymphonyとCodeIgniterを使って開発したけど、どっちもSmarty使わなかったし、それで何の問題もなかった。
>>229
>「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
・SmartyでやろうとしていることはPHPでできる
・Smartyは学習コストがかかる
・Smartyは遅い
・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
で、Smarty使う理由って何?
>>229は他人を無知よばわりしてるから、おれの知らないSmartyの利点ってやつを教えてくれ。
0239nobodyさん
2008/10/11(土) 12:07:00ID:???0240nobodyさん
2008/10/11(土) 22:10:00ID:???→ PHP単体では出来ない。別個にエンジンを作る必要がある。
キャッシュ、フィルタ、プラグイン、コンフィグをPHP単体でどうやって書くんですか?
・Smartyは学習コストがかかる
→ 少なくとも独自エンジンやPHPを覚えさせるより、簡単で学習環境も整っている。
・Smartyは遅い
→ 同様の機能(キャッシュ、構文、プラグイン等)を実際に実装して比較してみたかい?
スレ頭のピュアコードより5倍遅いとかいうのを真に受けてるだけだろw
ビジネスロジック層と比べれば軽い処理なので、システム的には対した差はでねーよw
・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
→ ずれてないよww エラー英文すら読めないレベルかwwww
そもそもPHPのテンプレートエラーはシステムに障害をきたすし、論外だ。
→PHP単体でなく、Smartyを使う理由?
・テンプレートエンジンとして必要な機能を備えている
・拡張がし易い
・デザイナのコードがシステムに混入しない
・PHPテンプレートエンジンとしてはメジャーで扱える人が多い
>SymphonyとCodeIgniterを使って開発したけど、どっちもSmarty使わなかったし、それで何の問題もなかった。
良かったね。
僕らは楽して堅牢なシステムを作るためにSmartyを使ってるんだ。
SymphonyとCodeIgniterの利点を教えて欲しいな(^o^
0241nobodyさん
2008/10/13(月) 03:31:41ID:???0242nobodyさん
2008/10/13(月) 10:28:16ID:???0245nobodyさん
2008/10/13(月) 11:31:25ID:???>→ PHP単体では出来ない。別個にエンジンを作る必要がある。
> キャッシュ、フィルタ、プラグイン、コンフィグをPHP単体でどうやって書くんですか?
PEARにいくらでもライブラリあるけど。プラグインは普通に関数でいいだろ。コンフィグも普通にPHPファイル。
>→ 少なくとも独自エンジンやPHPを覚えさせるより、簡単で学習環境も整っている。
んなわけない。なんでPHPよりSmartyのほうが簡単で学習環境も整っているといえるんだよ。
>→ 同様の機能(キャッシュ、構文、プラグイン等)を実際に実装して比較してみたかい?
> スレ頭のピュアコードより5倍遅いとかいうのを真に受けてるだけだろw
>ビジネスロジック層と比べれば軽い処理なので、システム的には対した差はでねーよw
おまえこそほんとに測定したのかよ。明らかにSmarty遅いじゃねーか。
0246nobodyさん
2008/10/13(月) 11:38:35ID:???>→ ずれてないよ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を学習させる意味がわかんない。
0247nobodyさん
2008/10/13(月) 11:41:35ID:???>僕らは楽して堅牢なシステムを作るためにSmartyを使ってるんだ。
>SymphonyとCodeIgniterの利点を教えて欲しいな(^o^
いまどきこんなこと言うのは、フレームワークを使ってないということか。
あるいはオレ様フレームワークか。
これでオレ様フレームワークつかってたら笑うなー。
0248nobodyさん
2008/10/13(月) 12:01:54ID:???要するに、「うちのデザイナはPHP理解できるからSmartyいらないんだぜ」ってことな。
前提としてる環境が違うんだからいつまでも平行線なんだろうね。他にも摺りあわない理由はありそうだが。
0249nobodyさん
2008/10/13(月) 12:27:09ID:???外注に出す場合、まだsmartyの文法のほうが通じやすいと感じるがなー
既にsmartyを知ってるデザイナもちょこちょこいるし
知らない場合でもマニュアルの「II. テンプレートデザイナのための Smarty」だけ読んどいてで済む
さすがにPHPを覚えてくれとは言えない
0250196
2008/10/13(月) 14:37:10ID:???名前もうまく書けてないレスが多いが、正しくはsymfonyと言う。
>>236
> Smartyを否定するだけの根拠を持ち出さないから素人扱い
Smartyを否定するつもりは無いよ。
「否定したら玄人」とか、どんな中二病だよw
まず前提として、Smartyの是非を議論する場合、
Smartyありきではなく、Smartyと実装Aと実装Bは対等に比較されるべきなんだよ。
>>237も同じで煽りに内容が無い。
0251196
2008/10/13(月) 14:56:46ID:???> 196が良いって、グローバル変数かつ、ショートタグかつ、エスケープ無しがView的にOKって事かい?
その考え自体がモダンじゃないんだよな。
<?=$name?>を実行するファイルの先頭に書いたら、何が表示される?
Noticeが出るだけだよね(PHP4だと出ないかも)。当たり前のことだ。
「PHP単体」という言葉自体がおかしくて、(SmartyだってPHPだしな)
<?=$name?>を実行するためには、まず$nameに値を代入する必要があるんだよ。
ロジックから$nameに値を代入する過程が必ずあり、そこで、
スコープの決定と、エスケープなどのビュー用の加工処理が行われる。
ちなみに、スコープの決定条件は、196とSmartyで等価だよ。
パーサのメソッドの中でincludeしたら、スコープはそのメソッドの中になる。
212のコードの欠点は、ビュー用の加工処理が、
本来HTMLであるべきファイルの中で行われることだ。Smartyも同様。
まあ、俺はSmartyを否定したいのではなく、
別の選択肢を提示して、それに対する意見を聞きたかっただけなので、
とにかくSmartyを褒めてくれなきゃヤダヤダ、という話なら正直困る。
0252196
2008/10/13(月) 15:09:46ID:???DreamWeaverでしかページを作れないへぼデザイナーと仕事をするとか、
外注には出すがソースレビューしたくないという場合は、
大人しくWeb製作として依頼して、コーディングは自分でやった方がいいとおもう。
結局Smartyだろうが何だろうがビューはビューなので、
MVCが理解出来ない人にビューを作らせようとしてもうまくいかんし、
テストとデバッグは結局やらなきゃいけないんだよ。
デザイナーから見たら、実際どう描画されるかわからない記号の羅列を
マニュアルと変数名の指示書どおりにHTMLに書き込んでみたりして、
「たぶんこれで出来たと思うんですがどうでしょうか」と言わないといけない時点で、
それはプログラマー仕事としての負荷を被っているわけだよ。
実質的に、分業にもなっていなければ、責任の切り分けにもなっていない。
Smartyの良くないところをあえて挙げるならば、
「Smartyを使えば、へぼデザイナーとへぼプログラマーが協力出来る」という幻想を
蔓延させた事かも知れんねw
0253nobodyさん
2008/10/13(月) 15:10:55ID:???おまえさんはSmartyを否定してるんじゃなく、テンプレートエンジンを否定してるんだろ?
なら選択肢なんかじゃなくて具体的にどのように実装すべきかを提示してみてくれ
0254196
2008/10/13(月) 15:24:07ID:???「PHPはテンプレートエンジンとしての要件を満たす」というのが196の主張だ。
>>229はそれを否定していたので、そこからして論外なのだ。
テンプレートエンジンとしての要件みたいなものを脳内で想像してるなら、
まずそれを考えなおして、表現してみてくれ。
「必ずキャッシュ機能が無いといけない」とか
「PHPとして実行できてはいけない」とか
そういう特殊な前提があるんなら、それを踏まえないとお前さんの役には立てんよ。
俺の要件に則って具体的な実装を述べて良いなら、
196こそが「テンプレートファイル」の答えなのだ。
$nameに何をどこでどうやって代入すればいいのかについては、>>251に書いた。
そうそう、ディスパッチャの存在が前提になるんだ。そこはSmartyと同じだな。
0255nobodyさん
2008/10/13(月) 15:33:22ID:???いや、だからな
>ロジックから$nameに値を代入する過程が必ずあり、そこで、
>スコープの決定と、エスケープなどのビュー用の加工処理が行われる。
の具体例を提示してみてくれって話なんだが
0256nobodyさん
2008/10/13(月) 17:04:37ID:???Smartyのここがだめ、俺ならこう書く!ってのをサンプル出せや。
PEARとかライブラリとか出してきてる時点で、ピュアPHPじゃねーし。
使う事を否定しないが、君なりの構築術があるわけだろ?
それを示せよ。何と比較してダメなのか、要所要所わかりやすく上げてくれ。
0257nobodyさん
2008/10/13(月) 17:05:33ID:???ってだけならすれ違いだから、よそで最高のテンプレートエンジンを開発してくれよな!
0258nobodyさん
2008/10/13(月) 17:10:46ID:???>「PHPはテンプレートエンジンとしての要件を満たす」というのが196の主張だ。
>>>229はそれを否定していたので、そこからして論外なのだ。
うむ、同意だな。PHPはそれ自体でテンプレートエンジンとして使える。
> テンプレートエンジンとしての要件みたいなものを脳内で想像してるなら、
> まずそれを考えなおして、表現してみてくれ。
テンプレートエンジンとしての要件は、ビューを分離できること、でいいと思う。
>「必ずキャッシュ機能が無いといけない」とか
キャッシュ機能はビュー層が単体で持つべき機能じゃないよな。
もつべきならコントローラ層だ。
0259nobodyさん
2008/10/13(月) 17:18:03ID:???>ぐだぐだ言い分けしてないで、
>Smartyのここがだめ、俺ならこう書く!ってのをサンプル出せや。
前スレ読め。とっくに出てる。
>PEARとかライブラリとか出してきてる時点で、ピュアPHPじゃねーし。
はあ?ライブラリを使っちゃだめとか、頭どうかしてんじゃねーの。
Smartyだってライブラリだろ。なんでSmartyはよくて、他はだめなの?ばかなの?
それにPHPだけで書かれたライブラリはpure PHPだろ。言葉の意味間違ってるぞ素人さん。
>使う事を否定しないが、君なりの構築術があるわけだろ?
>
>それを示せよ。何と比較してダメなのか、要所要所わかりやすく上げてくれ。
だから前スレよめって。>>193以降全部読め。
0260nobodyさん
2008/10/13(月) 18:24:20ID:???別の選択肢を提示して、それに対する意見を聞きたかっただけなので、
>>193をそう解釈しろと言われても困る
0261nobodyさん
2008/10/13(月) 18:40:09ID:???>何と比較してダメなのか
→ PHPと比較して。
>要所要所わかりやすく上げてくれ。
>>238からのコピペ。
・SmartyでやろうとしていることはPHPでできる
・Smartyは学習コストがかかる
・Smartyは遅い
・Smartyのテンプレートでエラーがあった場合、その行番号がずれている
で、Smarty擁護派が>>240で反論してるけど、Smarty反対派が>>245-246で再反論してて、今はSmarty擁護派の再々反論待ち。
特にエラー行番号についての見解を期待。
0262nobodyさん
2008/10/13(月) 21:39:53ID:???>>エラーについて
君の出してるエラーは「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
0263nobodyさん
2008/10/13(月) 21:48:53ID:???ライブラリを組み合わせるのも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拡張クラス組込済。
0264nobodyさん
2008/10/13(月) 22:13:18ID:???解ったから、具体的に選択肢を提示してくれよ。
ショートタグで値を表示するだけじゃ甲乙つけられないだろ?
ループ、エスケープ、インクルード、条件分岐が入ったViewテンプレートサンプルを上げてくれ。
それを見て「これならSmarty使う必要は無いな」と思わせてくれよ。
俺が出すサンプルは以下だ、
「ヘッダ、フッタを合成して配列の中身をテーブルに出力するだけの簡単な処理」
0265nobodyさん
2008/10/13(月) 22:16:06ID:???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"}
0266nobodyさん
2008/10/13(月) 22:16:56ID:???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";?>
0267nobodyさん
2008/10/13(月) 22:17:35ID:???インクルードファイルの管理や、ローカルスコープ化処理、エラー処理、etc。
結局細かい処理を考えるとSmartyと同程度までの実装は欲しくなってくる。(文法はおいておいて)
そこをライブラリや関数で補うって事なんだろうけど、
実際にそうした場合のテンプレートコードを上げてみてくれ。
0268nobodyさん
2008/10/14(火) 01:17:27ID:???>君の出してるエラーは「Smartyエラー」じゃなくて「PHPのエラー」だねw
>Smarty自体の処理ははあっておりコンパイルも通っている。
あほかお前、なんでSmartyのエラーかPHPのエラーかをここで区別する必要があるんだ?
エラーといわれた場所の行番号が違っていることが問題なんだろうが。
Smartyのエラーなんて、ただの構文解析でのエラーしかでねーじゃんか。
実行時のエラーには無力なうえ、変な行番号ででるんじゃ、使い勝手悪すぎだろ。
PHPなら実行時のエラーも行番号がずれることはない。こんなのあたりまえ。
実行時エラーを変な行番号でしか報告できないSmartyを必死に擁護するほうがどうかしてる。
「Smartyエラー」ってなんだよ、構文解析でのエラーじゃないからSmartyのせいじゃありませんって、アホか。
エラーの種類に関係なく、行番号がずれるのが問題なのに、
構文レベルエラーと実行時エラーを区別する必要がどこにある。
0269nobodyさん
2008/10/14(火) 01:52:38ID:???デザイナとプログラマの分業がなされているとき
構文エラーはデザイナ責任、実行時エラーはプログラマ責任。
PHPエラーがでたらプログラマが対処すりゃいい。
そもそも、>246のエラーは文字列に変換できないクラスをassignしないもしくは、
assignしたものが直接扱えない変数であることをデザイナに伝えていれば起きない。
0270nobodyさん
2008/10/14(火) 02:36:44ID:???アホはお前だろw
実行時エラー制御したいなら、Smartyに限らずassign時点で型判別しろよ無能w
それこそSmartyとかPHP以前の話だよ。
>エラーの種類に関係なく、行番号がずれるのが問題なのに、
ずれてねーよw コンパイル後のソースでの行数で、ご丁寧にファイル名まで出てるじゃん。
スクリプト言語しか触った事無い素人には、実行時エラーのデバッグは難しいのかもしれんが、
普通のPGなら上のエラーコード読むだけで、エラー内容もエラー位置も特定出来るわ…
むしろ構文エラーじゃなくて、実行時エラーだって理解出来て問題識別しやすいわw
無能を晒してないで、
はやく>>265-266を君の考えた素敵で使い勝手の良いテンプレートに書き換えてくれよ。
はやく>>265-266を君の考えた素敵で使い勝手の良いテンプレートに書き換えてくれよ。
はやく>>265-266を君の考えた素敵で使い勝手の良いテンプレートに書き換えてくれよ。
■ このスレッドは過去ログ倉庫に格納されています