【PHP】 Smarty 【テンプレートエンジン】 第2章
Smarty は PHP のためのテンプレートエンジンです。
具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
このスレはSmarty信者の隔離スレです。
Smarty以外のテンプレートエンジンの批判や、Smartyを批判する発言のコピペや、
Smartyを使っていないユーザに対する批判は、荒れる元になるので禁止です。
他スレから荒らしを招くことが無いように、他スレでのSmartyの話題も極力控えましょう。
もはやSmartyを使ってない識者の方は生暖かく見守ってください。
枯れた技術を仕方なく使うしかないユーザー同士、ひっそりと会話をしましょう。
なんで前スレ落ちた?
>>5 どっかの馬鹿が変な晒しをやって、それが元で炎上して1000まで埋まった。
なぜかスレタイから「隔離スレ」が消えたけど、
>>4にある通りひっそりやったほうがいいと思う。
●以下の話題は過去スレで散々議論されています。不毛なので禁止な。
・PHP自体がテンプレートエンジンなんだからSmartyいらなくね?
→ ケースバイケースです。
不要だと思うならこのスレを見ても有益な情報は得られないでしょう。
>>1 >Smarty は PHP のためのテンプレートエンジンです。
PHP自体がテンプレートなので不必要ですね。
>具体的に言うと、php のプレゼンテーションからアプリケーションの
>ロジックとコンテンツを分離して管理する事を容易にします。
素のPHPでも十分容易にロジックとコンテンツを分離できるので不必要ですね。
>これは、プログラマーとテンプレートデザイナーの役割が異なり、
>これらの役割を違う人間が受け持っている場合に最適だと言えます。
デザイナーにSmartyというヘンテコで汎用性の無い言語を
わざわざ覚えさせるのですか?可哀想だからそんなことは止めましょう。
あと、テンプレートを書くのはプログラマの仕事です。
デザイナーはテンプレートの元となるHTMLを書くだけです。
プログラマはPHPを理解しているのでSmartyなんて入りませんね。
>>9 そんなに真っ赤な顔をして、学校で何か辛い事でもあったのかい?
え、新しいクラスで友達が出来ないのは何故かって?
ふふふ…聡明な君ならもう答えは解っているんだろう?
そう!
Smartyを使っていないからだよ!
勉強も部活も、恋だってAnything OK!!
なりたい自分になれる、それがSmartyだよ。
え?高いんじゃないかって?ふふふ…心配無用さ!
驚くことにSmartyはその全てが無料なんだ。
つまり…そう!!
お小遣いは全て君の大好きなHENTAI GAMEに注力できるんだ。
どうだい、とてもCoolだろ?
さぁ今すぐ
http://www.smarty.net/ にAccessしてSuccessしようぜ!
サンキューベイベー!
なにこの寒い自演
Smartyは必要のない無駄ライブラリ。
Ver3では字句解析・構文解析までしちゃって無駄の上乗せw
自分の理解出来ない事はすべて無駄な事ですよね。わかりますわかります。
速度が低下しちゃってるのはどうしようもないな
字句解析・構文解析してるってことはもう新たな言語を作ったようなもんだ。
テンプレートエンジンとしては非常に大掛かり過ぎるし、
なによりPHP自体がテンプレート機能があるという。
終わってますな。誰も使わないだろう。
俺が使うよ
俺も使うよ
>>15 お前は何を言っているんだ?
え?構文解析を行わないテンプレートエンジンってあるの?
PHP自体のテンプレート機能に不足があるからSmartyを開発したって経緯は知ってる?
なんでSmartyがこんなに普及しちゃったか知ってる?
PHP自体をテンプレートにすると、ビューすらPHP環境に依存してしまうからなぁ。
ショートタグが禁止になっただけで動かなくなっちゃうコードの多い事多い事…。
>>17 Smarty信者が必死だなw
Smarty2系は構文解析してーねーよ。正規表現で書き換えてるだけ。
オフィシャルにも書いてあるだろ。
PHPで一時期Smartyが流行ったのは知ってるがもう誰も使ってないよ。
CakePHPもsymfonyもSmartyどころかテンプレートエンジン使ってないから。
お前こそなんで最新のFWでテンプレートエンジンが使われなくなったか
知ってるのか?
教えて教えて!
>>19 僕は君がこのスレにいる理由を知りたいな!
俺の使っているSmarty2では構文解析(パース)に正規表現を使っているけどなぁ
公式の序文にもそう書いてあるんだよなぁ…パースが重いからコンパイル済ファイルをキャッシュするって…うーん。
>>お前こそなんで最新のFWでテンプレートエンジンが使われなくなったか知ってるのか?
教えて教えて!
あとTwigとかいうテンプレートエンジンの開発元と、開発の経緯も知ってたら教えて!
ググレカスw
未だにSmartyとか使ってる奴いるんだなw
デザイナーにも優しいとか言ってw
デザイナーにテンプレート書かせるなよwww
俺は組んだデザイナーによってはsmarty使うことがある。
無くてもいけるが、あったらあったで全体の作業は楽になる。
キャッシュの操作は優秀。
それにsmarty否定派に
>>24みたいのがいるなら、逆にこれからも使うかという気持ちになる。
デザイナーがHTMLを作成する
プログラマがSmartyテンプレートにする
デザインに修正が入ったらデザイナが修正する
が一般的だと思うよ
誰でも出来るデザイン修正にPGの手を割く事に疑問を持たない時点でPGとして終わってる
かといってシステムに影響が出るコードをデザイナに触らせるのはセキュリティ意識低すぎると思う
素のPHPをテンプレートとして使う場合、継承とかキャッシュとかどうしてんだろうね…
否定派の言うことも一理あるが、Smartyのメリットを全く生かそうとしない姿勢が素人臭くて可愛らしい
>>26 そうなんだが、デザイナーがテンプレ修正するなら
デザイナー自身がSmartyに関する知識をある程度
持っている必要あるよな?
そして、Smartyの知識が分かると言うことは
少なからずPHPも理解する必要があり、そうなればデザイナーか何か分からん
>>27 Smartyのテンプレートを弄るのにPHPの知識は不要じゃないか?
まともなWEBデザイナなら、テンプレートでループする箇所や、テンプレート変数となる箇所を意識してコーディングするわけで、
デザイナ(コーダー)=全くPGが解らないって考えは古いかと…
少なくとも自分の関わっているデザイナは、Smarty肯定派が多い。
テンプレートが素のPHPだと、毎回細かい仕様や制限を確認するのが面倒だけど、Smartyなら気楽だとさ。
レンタルブログのテンプレートいじる感覚で使えるんじゃないのかな
てゆーかね、デザイナーにテンプレートを触らせるということは
コードに手を入れさせるのと同じだよね。
そんな気味の悪いこと良くできますねってことだ。
デザイナーが触らないテンプレートならSmartyなんか使わなくても
生PHPで問題あるの?
継承がどうこう言ってる奴がいるが、Viewに継承て。
そんな複雑なテンプレート作るなよw
>>てゆーかね、デザイナーにテンプレートを触らせるということは
>>コードに手を入れさせるのと同じだよね。
違うよ。全然違うよ。
>>生PHPで問題あるの?
ロジックの混入を防げないよね。致命的なコード書かれたらどうするの?
>>継承がどうこう言ってる奴がいるが、Viewに継承て。
>>そんな複雑なテンプレート作るなよw
お前が作ってるサイトがしょぼい事だけはわかった。
今時のテンプレートは大抵継承機能を持ってるから、その意味を調べてから出直すといい。
>>31 >違うよ。全然違うよ。
デザイナーにテンプレート触らせる時点で
お前のやってる仕事の規模が伺えるな。
>ロジックの混入を防げないよね。致命的なコード書かれたらどうするの?
デザイナーにテンプレートは書かせないと言ってる。馬鹿か?
>お前が作ってるサイトがしょぼい事だけはわかった。
>今時のテンプレートは大抵継承機能を持ってるから、その意味を調べてから出直すといい。
テンプレートエンジンなんか今時使ってませんからw
その継承機能とやらを知ってるだけでそのはしゃぎっぷりw
テンプレートエンジンを使ってるという時点で
最新のFWを使ってないんだろうなというのがバレバレですよ?
お前が作ってるサイトがしょぼい事だけはわかったわw
最新のFW使ってないのバレバレ、キリッ。
かっこよすぎるw
是非その素晴らしい最新のFW構成を教えてもらいたいものだ
うちはCake、ZendFWと双方で使えるカスタムSmartyしか使ってないわ
あー、最新のFWつかいてーw
>>31 > ロジックの混入を防げないよね。致命的なコード書かれたらどうするの?
Smartyを与えても致命的なコードを書かれる可能性はあるわけですが・・・。
>>33 > Cake、ZendFWと双方で使えるカスタムSmarty
それを使わないでCakeとZFを使うのが最新のやり方だと思うよ・・・。
>>Smartyを与えても致命的なコードを書かれる可能性はあるわけですが・・・。
具体的にはどんな事を書かれてしまうんだい?
宣言のかかったSmartyテンプレートでDBに穴あけたり、サーバに穴あけたりする方法を教えておくれ。
>>それを使わないでCakeとZFを使うのが最新のやり方だと思うよ・・・。
CakeにしろZFにしろ中間となるViewクラスは作るのが一般的かと…
どこの誰が最新のやり方とやらを提唱して実践してるのか教えてくれ
うちでは一からViewクラスを作って仕様化するより、Smartyを導入する方が制作コスト、学習コストは低いと判断されている。
Smarty≧素のPHP>>>>独自仕様のPHP
×…宣言のかかった
○…制限のかかった
>>37 プラグインはPGが作成して配備しないと使えないよ
PHPタグ?それこそフィルタでどうとでもなるが?
>>自分の事情を「一般的」と決めつけて、それ以外を理解できない時点で、
そのまま君に返すよw
君の言う最新のFWのやり方ってやつのソースを出してくれ
君の中で「一般的」なだけかい?
Smartyスレまで来て否定してるんだ、さぞかし素晴らしい実績があるんだろ?
>>41 >>作成して設置すれば使えるってことだよね。
いやだから、デザイナにはプラグインを設置する権限なんて与えないが?
>>自分で調べてくれないかな・・・。
嫌だよww
君の頭の中にしかないソースじゃ調べようが無いだろw
>> 危険な実証コードも提出してくれると助かるな。
>>
>>37を読んでね。
プラグインは設置出来ないし、{php}タグも使えないよ?
他は無いんすかw
結局、君の思い込みだけでSmarty批判してただけか、残念だ。
Smarty信者は頭が固くなっちゃってて駄目だな。
自分のやり方に固執してそれ以外を受け入れることができなくなってる。
可哀相に。
もっと柔らかく考えような?
SmartyにはSmartyのメリットもあるんだ。
何も示さずに「Smartyスレ」で、Smarty否定されてもそりゃ誰も受け入れないだろう。
可哀想な僕らに君のその自信と根拠を示してよ(あるならね)
そもそも所詮は手段の一つに過ぎないライブラリを否定する事に意味があるのかは疑問だが…
要件に合わなければ使わなければいいんじゃないの?
手段と目的が逆になってないかい?
Smartyは好きで使ってたけど、今はほとんど使わなくなっちゃったな。
今時はフレームワークがキャッシュ作ってくれるからSmartyのキャッシュのありがたみが無いし、
どっちにしろforeachやifが入ってくると、テンプレートは思ってるほどすっきりしない。
<?php ?> と書くか {} のと書くか違いぐらいでしか無くなっちゃった。
フレームワークってそんなにいいんだ。
正直知らんかった。
というか Twig が気になってきた。
Smarty使えないヤツにいくら必要性をアピールしたところで無意味だよ
Smartyは「ロジックの混入を防ぐためのツール」では無いのだが、
それにも関わらず、Smartyを使えば絶対安全だと勘違いする人がいる。
最初から
> SmartyにはSmartyのメリットもあるんだ。
程度の柔らかい論調で語ればいいのに、
「Smarty以外にはメリットが無いからSmarty以外は認めない!」
みたいに意固地に主張するわけのわからない信者がいる。
そういうやつが極端な煽り発言を繰り返すから炎上して、
Smartyユーザが全員馬鹿にされて、このスレで有意義な話題が始まらない。
>>42 「制限すればいい」「権限を与えなければいい」と言うなら、
生のPHPだって、制限をかければ致命的な挙動は避けられるでしょ。
論破したつもりになりたいからどんどん変な条件を追加していって、
結局自分の言いたい根本の部分がおかしくなってるいい例だよ、あなたは。
で、君は何が言いたいんだい?
「最新のやり方と違う」とか言われてもさ、具体的に何がどう劣って、何がどう優れるのか示してあげなよ。
ここはあくまで「Smartyスレ」なんだよ。わかるかい?
>>生のPHPだって、制限をかければ致命的な挙動は避けられるでしょ。
コード規約上の制限は可能かもしれないが、実際に穴をふさぐのは相当難しいと思うよ?
もし可能だとしたら、それはSmarty以上に肥大化しちゃう気がするよ。
少なくともSmartyの開発思想には「権限管理」があり、それを実現するだけの「機能」がある。
それを求めて導入する人も多々いるって事さ。
論破も何も、君の意見は「最新」とやらを後ろ盾に上から目線で否定してるだけだよね?
釣れますか?
>>50 自分は34ですが32ではないです。
最新どうこうは31と32が言い出した事に過ぎないので、個人的には興味ありません。
「Smarty2はモダンではない」という意識が合っていればそれ以上の主張は無いです。
> 少なくともSmartyの開発思想には「権限管理」があり、それを実現するだけの「機能」がある。
自分の立場は、あなたのおっしゃるこの部分への反対の立場です。
> 実際に穴をふさぐのは相当難しいと思うよ?
DBアクセスさせたくなかったらモジュールをロードしなければいいんだし、
safe_modeという機能があるのもご存じでしょう。肥大化は一切しませんよね。
本質は「ガチガチに設定すれば安全にだってできるんだ!」じゃなくて、
「そもそもが安全であるかどうか」でしょ。
「生PHPは絶対に危険で、Smartyは絶対に安全なんだ」って主張は誤ってると思いますよ。
だから、その理由をもって生PHPのテンプレートを持つフレームワークを忌避しているなら、
考え方を柔軟にして、Smarty以外のものも触ってみたらいかがですか、というお話です。
>DBアクセスさせたくなかったらモジュールをロードしなければいいんだし、
>safe_modeという機能があるのもご存じでしょう。肥大化は一切しませんよね。
View側はそれでいいのかもしれませんが、実際にそのような設定でシステムを稼働させた事はありますか?
Controller側でDBアクセスが必要、View側では不要、という場面は多々あると思います。
>「生PHPは絶対に危険で、Smartyは絶対に安全なんだ」って主張は誤ってると思いますよ。
はい。そうは思いません。
ただView側に権限分離の安全策を施したい場合、Smartyに限らずテンプレートエンジンは有意義だと考えています。
ちなみにFW自体は積極的に導入していますよ。
View部分のみSmartyを採用する事で、それぞれのViewスクリプトの方言を統一する役割も担っています。
Twig等のモダンどころもテスト導入してみましたが、乗り換えるコストに対するメリットが少々薄いという印象ですね。
内部的にはSmartyより遙かに洗練されているとは思いますが。
そもそも隔離スレだったのに不要論を声高に叫ぶヤツが来るからこうなるんだろ
なんかわからんけどいなくならないのよね。
Smartyが必要な案件に参加できなかったとか具体的な恨みがあるんだろうけど
こんな人格じゃあニワンゴくらいしか入れないだろねぇ
便所の落書きで人格とか言われましても(^o^;
┏(^o^;)┓
┃┃
>Smartyが必要な案件に参加できなかったとか具体的な恨みがあるんだろうけど
そんなプロジェクトには参画したくありませんから〜
Smartyはいらない子だって分かって!
そうだね。
あなたと同じくらい、世間様からは必要とされていないのかもしれないね。
ごめんね・・・ごめんね・・・
カーチャンの教育が間違っていたね・・・ごめんね・・・J( 'ー`)し
スレの皆さんも本当に申し訳ありません。
うちの子も本当は仲間に入れて欲しいだけなんです。
素直になれなくて・・・ただ、それだけなんです。
ごめんね・・・ごめんね・・・
結局このスレで有意義な話題が出るわけじゃなく、
必死のSmarty擁護と煽りが交互に繰り返されるだけという所が、
Smartyの質の悪さを如実に現しているような気がする。
テンプレをHTMLとjavascriptが辛うじて出来ますくらいの奴にいじらせなきゃいけない時に有効。
それ以外じゃPHPにテンプレエンジンはいらん。
そりゃリプライがあるからだろ
どう見ても狼少年
てか、ポットかもw
頭悪くてSmartyのメリットを理解出来ない否定派がキーキー喚いてるだけだろ・・・
本当に不要だと思うなら、こんなスレ来ないだろうし。
無駄に煽るから来るんだと思うが・・・
煽られてるのはスレ住民側だと思うが
いちいち相手しなきゃいいじゃん
スルー出来ない奴も荒らし
69 :
nobodyさん:2010/04/21(水) 17:29:06 ID:HlbrRuJm
質問してもいいでしょうか
HTMLにSmartyタグを使って
<a href="test{$hoge}test">
こんなのがあった時に、
<a href={"test{$hoge}test"|urlchange}>
こんな感じのことをしたいのですが、Smartyがエラーを吐いてしまいます。
もちろん
<a href={"test"|cat:$hoge|cat:"test"|urlchange}>
ここまで書き換えればうまくいくいのですが…。
うまい解決方法はないでしょうか?
70 :
69:2010/04/21(水) 17:30:35 ID:HlbrRuJm
aタグの hrefの引数を{ |urlchange} で囲む。
というのを構文解析で自動化したいので、そのhrefの要素の中にSmartyタグが紛れていると厄介だな。
という状況です。
それこそアンチが言うようにPHP側で処理すればいい
SmartyはVer3系になって
あまりの迷走っぷりに皆に愛想つかされて消えて欲しいな☆
えー、Smartyタグを多重に囲うとエラーになるの?w
何それしょぼすぎるw
>>74 > HTMLにSmartyタグを使って
> <a href="test{$hoge}test">
> こんなのがあった時に、
詳しくを参照する前に、質問者のレスを読みましょう
必ずこうなってるなら話はべつだがな
<a href={"test`$hoge`test"}>
それに関数使ってた場合は絶対無理だし
<a href={"test"|komekome}>
<a href={{"test"|komekome}|urlchange}>
SmartyテンプレートをDreamweaverで編集している人いる?
Smartyタグを不可視エレメント表示できないかな
>>69-70 関数まで考慮するならpostfilter、outputfilterで実装出来るけども
やろうとしてる事自体の設計が間違ってると思う。
いや、設計は間違ってないだろ
手動でSmartyタグを書いたあとに、一括して全ての特定の何かを置換したい
そういったことはママあることだ
あと、実装するならprefilterだろう
postfilterで何する気だ
思想としてはありだろうけど、
>>69や
>>75みたいな状況になってしまう時点で実装方法の設計が間違ってるかと。
>>69の要件を実装したいならprefilter内で自前で構文解析するより、
postfilterもしくはoutputfilter内で必要部分をSmatyタグに置換して、再帰的にSmartyテンプレートとして実行すればいいんじゃないのかね。
prefilterで何する気?
追記
憶測だけども、
>>69は全てのリンク先に特定の処理を施したいって事だろうから、
簡単なoutputfilterで文字列置換してやるだけで実現出来ると思うよ。
無理矢理Smartyタグに置換し直す必要性があるのか?って事ね。
思想としてはありだから、できないのか質問に来たわけだろ?
結果は「できない」
自身の定義タグを再帰的に処理できないとか、Smartyのしょぼさがうかがえるわ
>>79 > postfilterもしくはoutputfilter内で必要部分をSmatyタグに置換して、再帰的にSmartyテンプレートとして実行すればいいんじゃないのかね。
これの意味がわからね
どういう動作させる気なの?
>>結果は「できない」
お前がそう思うんならそうなんだろうな・・・お前の中では。
再帰的に処理したいならフィルタ書くなり、再帰的にfetchする実装を行えばいいだけでさほど難しくないよ。
逆に再起処理は自前で実装して再起回数を制御しないと無限ループしてしまうと思うんだけど。
Smartyがしょぼいんじゃなくて、使いこなせてないだけだろw
>>82 <a href="test{$hoge}test">を実行する。
<a href="testHOGE_VALUEtest">という出力になる。
outputfilterで<a href="{"testHOGE_VALUEtest"|urlchange}">という風に置換して、再度実行する。
別にoutputfilterでなくてもいいけど、好きなタイミングで再起処理すればいいんじゃないかね。
どうしても自前で構文解析して、一度の実行で処理したいなら{capture}タグあたりへの置換を駆使すればいいと思うよ。
いくらなんでも、
Smartyの出力処理 → HTML構文解析処理 → Smartyタグを新たに自動挿入 → Smartyの出力処理
と、毎回のアクセスでやるのは動作が重すぎるので…
>逆に再起処理は自前で実装して再起回数を制御しないと無限ループしてしまうと思うんだけど。
それこそ無限ループさせる人間がしょぼいと思うんですが…
while文は無限ループする可能性があるので実装しない。みたいなもんで、本末転倒かと
{capture}を使うことで、狙った通りの挙動が可能なのを確認しました。
今件はこれで終わりにしたいと思います。
色々ありがとうございました。
まったく役に立ってないけどな
再起処理は自前で実装して再起回数を制御しないと無限ループしてしまう(キリッ
capture関数を見ていたところ、素直にオリジナルのブロック関数を作ればよいということがわかりました。
報告しておきます。
器の小さい話だけど1人でサイト作る時は、smarty便利じゃない?
またはデザインが先に出来てて、仕組みを後から作るときとかも。
会員サイト作る時はセッションセキュ考えるのめんどくさいからFWつかっちゃうけど、
joinの嵐サイト作る時は、smartyのみ使う。
2つのキャッシュ機能使いわけが便利ですし。
と俺のお婆ちゃんが言ってた。
>>85 >>逆に再起処理は自前で実装して再起回数を制御しないと無限ループしてしまうと思うんだけど。
>それこそ無限ループさせる人間がしょぼいと思うんですが…
>while文は無限ループする可能性があるので実装しない。みたいなもんで、本末転倒かと
Smarty自身が再帰機能を持っていた場合、ループ条件はどうやって決めるのって話だが、
自前でループ条件実装しなきゃ駄目だろ?どこに実装しないなんて書いてあるの?w
>Smartyの出力処理 → HTML構文解析処理 → Smartyタグを新たに自動挿入 → Smartyの出力処理
という流れを再帰処理って言うんだけど大丈夫?
再帰処理ってわかってる?w
>>87 なんだ、お前役に立ってないって自覚してたのか、案外偉いな。
結果は「できない」(キリッ
Smartyのしょぼさがうかがえる(キリッ
とか言ってる時点で気づいて欲しかったが・・・
「できない」wとか言った人が何反論してもむなしいぜ?
俺Smartyの仕様なんてしらねーもんw
少なくともここの連中的な結論は「できない」だっただろw
もしくは再帰的にSmartyを動かせ(キリッ
おいおいw
パフォーマンスガン無視ですかw
で、真実はSmartyにちゃんと対応できる機能がありました
あれあれ?Smartyを馬鹿にするやつは使いこなせてないからだ(キリッ とか言ってた人達、使いこなしてないですねー?w
>>90 え・・・smartyタグが全て無くなったら抜けるが分岐条件だろJK
>>92 開き直りカッコイイです。
どのレスが「できない」なんて言ってるの?お前のレスだけだよw
>で、真実はSmartyにちゃんと対応できる機能がありました
ねぇよw {capture}タグに置換、ブロックタグの作成で実装したって書いてあるだろ
素人だからレスの意味もわからんのだろうけど、これ、Smartyの機能じゃなくて独自拡張な。
>>93 Smartyタグが無くなったら?
それこそ最低2回は構文解析入ってパフォーマンスガタ落ちなんじゃないの?w
目先の論破にムキになって、自分にブーメランが返ってくる良い例だな君は。
>>93は俺じゃねーよw
対応できる機能「あった」じゃん。独自拡張機能っていう機能が
でもそれを質問者に教えてあげることができなかったんでちゅよねーw
使いこなせば便利なSmarty(キリッ
Smartyに不満があるのは使いこなせてないから(キリッ
>>95 {capture}もフィルタでの置換処理も、全部>>-84までで出てるけどw
言い返せなくて脳内変換しちゃったかな?かな?
「できない」とか「無い」とか言ってる人お前くらいだよw
71 名前:nobodyさん[sage] 投稿日:2010/04/21(水) 19:37:30 ID:???
それこそアンチが言うようにPHP側で処理すればいい
74 名前:nobodyさん[sage] 投稿日:2010/04/22(木) 15:25:41 ID:???
文法間違えればそりゃエラーになるだろw
77 名前:nobodyさん[sage] 投稿日:2010/04/22(木) 19:12:29 ID:???
>>69-70 関数まで考慮するならpostfilter、outputfilterで実装出来るけども
やろうとしてる事自体の設計が間違ってると思う。
80 名前:nobodyさん[sage] 投稿日:2010/04/22(木) 23:48:30 ID:???
追記
憶測だけども、
>>69は全てのリンク先に特定の処理を施したいって事だろうから、
簡単なoutputfilterで文字列置換してやるだけで実現出来ると思うよ。
captureなんてどこにもないが?
ブロック関数という言葉すらでてないな
もういじめてやるなよ
アドバイスできるほど理解のある人間が、たまたまその時間帯いなかっただけだろ
>>97 >>84 >どうしても自前で構文解析して、一度の実行で処理したいなら{capture}タグあたりへの置換を駆使すればいいと思うよ。
で、他に言いたいことは?
{capture}自体がブロックタグって事は理解してるかい?w
質問主は{capture}使ってみて、拡張したくなったから独自ブロックタグ作ったんだろ。
揚げ足取ろうと必死になってるけど、君の知識の無さを露呈してるだけになってるよw
>>69-70を実装したいなら、フィルタを使え(
>>79)
>>81再帰処理が必要?なら、フィルタやfetchで自前で再帰処理実装しろ(
>>83)
単純にリンク先を置換したいだけなら、outputfilterなり{capture}使え(
>>80 >>84)
という具合に結論とアドバイスが出てると思うんだが、何処に「出来ない」なんて書いてあるんだろう
>>97が素人過ぎてアドバイスの意味すら理解出来なかったんだろうけど
実用的かはともかく不可能じゃ無いよね
まぁ、誰も実装はしないだろうけど
>>100 なんだ。84「まで」って84も含むのか。明日までといった普通明日になる前を指すんだけどな。
俺が「結果はできない」って言ったのが81なのに、84を引き合いに出すあたりもなぁ・・・
あー、わかったわかった
81の「結果はできない」という言葉を
81「俺は、Smartyにそのような機能はない。できないと知っている」
と解釈したのか
単に
81「全然まともなアドバイスでないじゃんw 思想的におかしいとか逃げてるってことはできないってことかよw
思想は別にあってるだろw 69さん残念だね、できないみたいだよw Smartyしょぼいw」
というだけのレスだったんだが
別にいいじゃねーか。
とりあえず1人はcaptureタグを挙げられる人間がいたし、そのアドバイスに従って解決したんだから。
わざわざ荒らす必要ないだろ。
カスタムブロックタグなんてマイナーな機能だから、ほとんどの人間は使ったことないだけだよ。
Smartyの凄さはそういうことだけじゃない。
必死なのはわかるが、
>>81 >>思想としてはありだから、できないのか質問に来たわけだろ?
>> 結果は「できない」 自身の定義タグを再帰的に処理できないとか、Smartyのしょぼさがうかがえるわ
この文章を
>>81「全然まともなアドバイスでないじゃんw 思想的におかしいとか逃げてるってことはできないってことかよw
>>思想は別にあってるだろw 69さん残念だね、できないみたいだよw Smartyしょぼいw」
と解釈するのは無理がある。君はまず日本語の勉強からしたほうがいいな。
伝える力が無いとどんなコミュニティでも認めては貰えないよ。
仮にこの文章を君がそのような意図で書いたのであれば、
やはり「できない」と言っているのは君だけであり、このスレの住人は優秀。
>>104 少なくとも
>>69-70 の要件であれば
>>79 で完結している。
無駄に再帰が云々と要件を膨らますから
>>84まで話が拡大したんだろ。
「明日」の話なぞしていないし「まで」の例えも間違えているよ。
君は「84まで読め」と言われて、83までしか読まないのかい?
やはり日本語から再度勉強し直したほうが良いだろう。
>>107 伝える気があると期待してたの?
単に言い捨ててただけだから気にしなくていいよ
Smartyか、もしくは使っている人間がしょぼいんだろうなって思っただけだから
>>108 質問者の意図からはずれていたようだがな
>>79 84まで読めなんて書いてないだろ
84は質問者への正答だから、俺は「84さんは優秀で返答できた。84以外バカばっかりじゃん」と思った
それに対して「84さん以外でもちゃんと答え出せてたもん!84に至るまでにもう応えてたもん!」というあがきに見えたから「84に至るまでの間に、何も答えなんてだせてなかったじゃん」と煽った
OK?
「思想が間違ってる」だの「再帰処理は無限ループになっちゃう」だの、的外れなバカばかりがSmarty使ってるんですねって言ってるの
OK?
Smartyはすごい
Smartyは使いこなせばすばらしい
って色々な奴が言ってたけど、使いこなせてねーってのが露見したねー
まともに使えるのはほとんどいないのね
ってだけの話なのに、いつまでいいわけこいてるんだか
結局変数の埋め込み程度でしか使えない
というか「Smartyタグの埋め込みという下働き作業をさせられている側の人間」ばかりがこのスレにいるってことだろ?
一応Smarty使いこなしているつもりの人間として意見。
>>69の質問に対して、ブロック関数プラグイン作れって意見が即座に出ないのは確かにしょぼいと思う。
だが、だからといって煽っていいもんじゃない。
むしろPHP側で処理しろとか、再帰的にテンプレートとして実行しろとか、フィルタで解析しろとかは、むしろアンチの自演レスじゃないかと思える。
>>109 君がそう思うんならそうなんだろう・・・君のなかでな。
もう見苦しいからあきらめろ、な?
君がどんなに取り繕っても
>>79は
>>69-70への返答としては的を得ているし、
君が質問者の意図とは違う再帰等の要件を盛り込んでイチャモンつけただけにすぎない。
(それすら
>>84で返されちゃってるがww)
悔しいのはわかったが、君自身Smartyの知識が無いんだから、何言ったって負け犬の遠吠えだよ。
{capture}使ってどう実装するか君には理解できたかい?w
79が必死すぎるw
<a href={urlchange}"test{$hoge}test"{/urlchange}>
これで一瞬で終わる話題を、なぜテンプレートの再帰処理だの{capture}だの出すのか理解に苦しむ
少なくとも
>>79も、
>>84も、その他何もアドバイスできなかった連中も、Smartyを自慢げに語るのは恥ずかしいと思うぞ
俺の友達は世界的に有名なんだぜ!みたいな誇り方だと思う
俺はこの騒動でブロック関数の有効な使い方学べたからありがたかったよw
>112は煽りを煽ってる場合じゃないと思う
capture使ってどう実装するか理解できたかい?wって、capture使うのはどう考えても遠周りなのになんで誇ってるのw
>>115 ごめん、俺フィルタで考えてたw
outputfilterで<a href="">を一括置換すればいいかなとか思っていた
質問主はprefilter内で<a href="">を検索して{urlchange}というブロックタグに置換してるって事でOK?
118 :
nobodyさん:2010/04/24(土) 04:22:59 ID:1DRUZqeq
あのね、
Smartyを使うということは
PHP自体を否定してるのと同義なのね。
そこら辺分かっててつかってるのかなぁ〜
この雑魚共はぁああああああああああああああ!!!!!!!!!
>>117 outputfilterはコスト高いから、なるべくキャッシュに残る前の処理であるprefilterとかで済ませたほうがいい
嫌ないい方かもしれないけど、処理コストを考えてない人がテンプレートを再帰処理とかそういう妙な発想になるんだと思うな
良くも悪くも便利なせいで、内部的な動きを知らないで激重にしている人も多いのかも
ブロック関数すら、展開された後の書式を見ればかなりすごいことやってるし
ob_start系のバリバリ使ってるんだけど、あれってコスト軽いと考えていいのかなぁ?
このスレの住民は相手を問わず喧嘩するのが大好きなんだなw
かなり進んでいるので来てみたら・・・子供のケンカかよ。
自分の主張も良いけど、相手の主張も飲めよ。
じゃないと、論理的思考なんて無理だろ。PGに向いてない。
122 :
89:2010/04/24(土) 11:43:31 ID:???
ここまで俺のお婆ちゃんに同意なし。
2つのキャッシュ機能って、どれとどれ指してるの?
Smarty=カスの使うカスライブラリってことでFA?
そのカスライブラリのスレで煽ってるお前もカスでFA?
>>126 まぁそんなに自分を卑下するなよ。
カスなりに頑張れ。応援してるよ。
Smartyを単体で使ってもそりゃカスだよ
直接PHP埋め込んだほうが手っ取り早い
Smartyが威力を発揮するのは、他の解析エンジンと組み合わせた時。
それこそ
>>69みたいな使い方した時だよ
PHPで書くと自由度が高すぎて、解析がうまくいかなくなるからね
てか、デザインとプログラムを分離するためなんじゃねーの?
>>119 出力結果の文字列置換を行う場合、
outputfilterならpreg_replace一度の実行で済むと思うけどそんなにコスト違う?
書いてるようにブロックタグ自体、展開後の書式が無駄に重い気がするが・・・
ブロックタグで処理する場合、置換箇所が増えれば増えるほどオーバーヘッドでかくならね?
それともテンプレート全体をブロックタグで囲って疑似フィルタ的に扱うのかな?
[Smarty信者の主張]
・デザインとプログラムを分離を容易にできます。
→PHPでもデザインとプログラムは分離できます。
・デザイナーとプログラマーとの分業がしやすいです。
→デザイナーはテンプレートの元になるHTMLを作り
テンプレート自体はプログラマが作りますので
Smartyなんか無くても生PHPで十分分業可能ですね。
何か反論ありまでしょうか?
>>131 素晴らしいです。全く反論出来ません。
貴方が絶対的に全てにおいて正しく、
貴方のように聡明な方がこんな糞スレを読む時間は、
全人類にとって損失でしかありません。
しかし残念な事に、高尚な貴方の思考は、Smarty信者のような低俗な連中には理解できないのが現状です。
Smartyを駆逐する為に、比較実証コードを作成して公の場で発表するべきです。
それがSmartyワクチンとなり、PHP界のイノベーションとなる事でしょう。
期待しています。
>>131 デザイナーがもっとも使っているソフトはDreamweaverである
→PHPをそのまま埋め込んでプレビューすると、エラーになる
→エラーを出さないようにする為には、サーバが必要
→SmartyタグならPHPと認識されないので、エラーにならない
(ただし、デザインの崩れ等は発生するが
こういう反論はどうかな?
>>133 俺Smarty擁護派だけど、その理由だと <script language="php"></script> タグを使えばよくね?
>>130 preg_replace でも str_replaceでもなんでもいいが、正規表現を使った全文チェックが軽いと思えるのが凄い
>>135 あれ・・・上の例だと、prefilterで全文検索して、部分的にブロックタグに置換してるんだよね?
だったら出力時に一括の方が早いんじゃないかなと思っただけだよ。
prefilterは、キャッシュに残す前にやるから多少重くても問題ない
出力時は毎回アクセスでコスト発生するだろ
でも、ブロックタグの中身自体が文字列置換処理だよね?
ブロックタグが10個あれば内部的に10回置換処理が走ると思うけど、全文検索1回と比べてそんなに軽いもんなの?
置換処理の意味わかってるのか?
ブロックタグは、タグの間の文章を(通常と同じコストで)バッファに書き出し、それを引数として関数を動作させる。
置換処理なんて発生しない。
ob_stsrt(); 処理 $_tmp = ob_contents(); ob_clean();
ブロックの中身はこんな感じで取得する。通常の出力処理とコストは変わらん
それに比べ、str_replace系はHTML全文を”正規表現で”検索し、置換処理を行う。
正規表現がべらぼうに重いのは分かってるだろ?
また、一部のAタグだけ適用という方法を誤爆無くやるためには、色々細かい処理が必要。
prefilterならじっくり検証しても構わないが、outputfilterではじっくりやると毎アクセスでのレスポンスに響く。
>> ob_stsrt(); 処理 $_tmp = ob_contents(); ob_clean();
「処理」の部分で、引数に対して置換処理を行っているんじゃないの?
該当タグが増えただけ、上記処理を繰り返してしまうので結構なコストがかかる気がする。
またprefilterだとSmartyで動的に生成されるリンク(pagerとか)に対応できなくない?
ブロック関数内で正規表現かまして該当箇所を置換するとかになりそうな気がするけど・・・
Smartyの関数出力を「置換」と表現したら、Smartyで行うあらゆることが「置換」になって「置換」という言葉が意味をなさなくなるだろ…
言葉遊びしたいのか、ちゃんとした質問なのかはっきりしてくれ
>上記処理を繰り返してしまうので結構なコストがかかる気がする。
はい、ソースだしてね。obへの出力と、からの取得のコストがヘビーだっていうソースをね
>またprefilterだとSmartyで動的に生成されるリンク(pagerとか)に対応できなくない?
後付け条件出しすれば何にだって文句つけられるわ。あほくさい
質問です
バージョンは2.6.25です。
Smartyは、テンプレートを解釈した後キャッシュを生成してくれるようですが、
排他処理を行っていないように見えます
・tempnamで作ったテンポラリ名のファイルに解釈内容を出力
・キャッシュ名のファイルを削除
・テンポラリ名のファイルを、キャッシュ名にリネーム
とやっているようですが、キャッシュ名を削除した瞬間と、他プロセスでキャッシュを読んでいる瞬間が重なった場合に問題を引き起こすような気がするのですが…
気にするな
>>141 ごめん、言葉遊びじゃなくて
prefilter内で、
preg_replace('/xxxx/', '{urlchange}xxxx{/urlchange}', $source);
と変換した後にブロック関数内で
function smarty_block_urlchange($params, $content, &$smarty) {
return preg_replace("/xxxxxxx/", "xxxxx", $content);
}
という具合に何らかの文字列処理(置換)が行われるわけだよね?
preg_replaceを使うかは別として、ブロック数に比例してob_start含めたオーバーヘッドが発生するわけだが
一括処理と比較してどれだけコストが違うんだい?
>後付け条件出しすれば何にだって文句つけられるわ。あほくさい
後付けは申し訳なかったが、Aタグを書き換えたいって内容的に十分想定しうる事だと思うが・・・。
>>142 まともなOSならオープンしたファイルのi-nodeは閉じるまで変わらないよ
>>144 その後付けにも対応したくなれば、また質問しにくる。その時また考えればいい
ob_startを含めたオーバーヘッドってのがわからん。
アウトプットストリーム。
もっといえば単に文字列バッファをスタックに積むことがそんな重い処理だとはどうしても思えないな
>>146 >ob_startを含めたオーバーヘッドってのがわからん。
実際の処理では、ob_startのみじゃなくてブロック関数も実行されるでしょう?
ob_start();
smarty_block_urlchange();
$_tmp = ob_contents();
ob_clean();
仮に20カ所ブロックタグがあったら、20回上記一連の処理が実行されるわけで、
関数呼び出しのオーバーヘッドはタグ数に比例して拡大してしまう。
一括処理にすれば、1処理こそ重いものの実行コストはほぼ一定に保てる。
>もっといえば単に文字列バッファをスタックに積むことがそんな重い処理だとはどうしても思えないな
バッファ文字列に対してブロックタグ関数が実行される事を忘れてませんか?
はぁ
まぁ処理の回数の予想とかして、負荷の少ないほう選択すりゃーいいんじゃねーのー?
なんかもう、ブロック関数の呼び出しオーバーヘッドがどうのーとかまで言われ始めると
そんなレベルのオーバーヘッド気にするならPHP使うのやめたらー?とか思っちゃうんですけどー
Smartyも関数呼び出してんこもりだしさー?
>>133 本当にあなたの会社ではデザイナーにテンプレートを触らせるの?
俺の感覚ではテンプレートはプログラムの一部なので
デザイナーには絶対触らせたくないんだけど。
ちなみに今まで俺が参画してきたプロジェクトでは
最初に紙芝居のHTMLが作成されて、
その後プログラマがHTMLをテンプレートに変換しつつ実装
という流れしか無かったんだけど。
それはJavaでもPHPでも共通で。
>>149 >その後プログラマがHTMLをテンプレートに変換しつつ実装
>という流れしか無かったんだけど。
そしてシステムを納品した後に「デザイン変更して」と言われたらどうしてるの?
或いは、画像を追加してと言われたら?
CMSで構築しているサイトなら別だが、すべてそんな案件ばかりじゃないだろ。
>>150 大幅な変更ならテンプレートの元になったHTMLをデザイナーに修正依頼し
その後テンプレートに反映。小さな変更ならプログラマが修正。
WebプログラマならHTMLはもちろんCSSも分かるだろ?
>>148 ん?釣りかもしれんが負荷が云々言い出したのは
>>119 だよ。
個人的にはフィルタ処理のが軽いと予測したんだが、
完全に否定されたのでどんな処理を想定したのか聞きたかっただけ。
ケースバイケースってのは把握している。
他人に説明する時に造語を使うな
フィルタ処理って、prefilterの処理もフィルタ処理だし、outputfilterの処理もフィルタ処理だ
>>144 >>147で詳細に説明してますが・・・
結局一つのレスのみを抽出して揚げ足取りしか出来ないんですね。
>>151 つまり、二重に手間がかかってるわけだな。
Smartyテンプレートをデザイナーが修正して
プログラマに渡せば良いだけなのに。
>>151 プログラマならそれがどれだけ非効率かわかるだろ?
文言やデザイン修正なんて誰でも出来るんだから、プログラマのリソースを割くのは勿体ない。
他のプログラマーに自分が使う関数を書かせるのと
デザイナーにテンプレートを書かせるのと
どのぐらい違うのだろう
>>157 全然違うし、言いたいこともわからない。
>>154 ちょっと待て。
揚げ足取りしたいとは思わないが、お前の発言が
>>144や
>>147の続きであるというのはお前にしかわからんことだ。
関連レスも全てひっくるめて話したいなら、ID出すとかしてくれよ
>>159 >>152で関連レスとして
>>119を上げてる時点で、一連の流れに対するレスだと解ると思うが・・・すまん。
でも、お前スレの流れ自体読んでないだろw
ID出しても煽りが沸くだけなので出さんよ。
>>160 「>>○でお前が言ってたのと前提変わってるじゃねーか」
のように、勝手にこっちで推測して「関連レスだな」と判断すると
「そいつは俺じゃねーよ。勝手に行間読むな」
と返されるのは匿名掲示板。
基本的に「そのレス」の内容だけしか評価せんよ。
はぁ、そうですか。
>>152は君に対しての発言じゃないし、
>>153はスレを読む気も無い人が、1レスを拾って横やりいれてきただけって事だね。
やっぱりただの揚げ足取りじゃんw
どう読めばそうなるのか知らんが、まぁそう思いたいならそう思えばいいんじゃないか
とりあえず唐突な造語は使わんほうがいいよ
造語じゃなくて、outputもpreもpostも含めてフィルタ処理だろ・・・
お前職場でもそんな揚げ足取りばっかやってるん?
ひとつだけ言わせろ。つまらん事で結果するな。
あと、PGなら相手の主張も一旦受け止めて反論しろ。
結果 → 喧嘩
smartyスレってこういうのが宿命なんだな
>>164 >造語じゃなくて、outputもpreもpostも含めてフィルタ処理だろ・・・
↓
>>119 >output『filter』はコスト高いから、なるべくキャッシュに残る前の処理であるpre『filter』とかで済ませたほうがいい
人たたきをしてる方の論が間違ってるってのが、こういうスレでの常識。
>>168 あれ、都合悪い時だけ前後のレス読むんだ?w
119からの流れ読んでればブロック関数よりフィルタ(preにせよpostにせよ)で処理するほうが早いと思ったと伝わると思うんだが。
>>170 結局、自分の言い間違いを指摘されて逆切れしてただけかよ
勘弁してくれ
>>170 > フィルタ(preにせよpostにせよ)
釣りかよ。
質問主の要件満たせてねーじゃねーか。
で、結論としてフィルタとブロックのコストの違いは?
フィルタ(preにせよpostにせよ) と ブロック関数のコストの違いだったら、圧倒的にブロック関数の方が不利
ブロック関数は出力毎に作動するから
preとpostのフィルタは出力毎には動作しないからコストが無い
>>119 のやってるprefilterでブロック関数を生成と、outputfilterならどっちがコスト高い?
俺の認識でh
>>119 のやってるprefilterでブロック関数を生成と、outputfilterならどっちがコスト高い?
俺の認識ではブロック関数は、
ブロック内の出力にoutputfilterをかけるようなものなので、
さほどコストに違いなは無いと思うが。
実験してみた。
11個ほどAリンクがあるページで4800バイトの超軽いページ。
なにもしないと0.120秒程度。
ブロック関数で処理すると0.140秒程度
正規表現はめんどかったんで、ereg_replace("href=", "href2=", $content)
で、リンクの数だけとりあえず置換されるようにしてみた。
結果0.127秒程度
まあ正規表現は駄目だと思うね。ページ容量がこの程度で0.007秒も増加するし
全然細かいことができないから、urlchangeを呼んで色々やりたいという需要も満たせない
細かく事やり始めるとコストが膨大になるのも目に見えてる
むしろ、その程度なのに「駄目」だとするのはおかしくないか?
>>177 ブロック関数でereg処理すると 0.140
outputfilterでereg処理すると0.127
って事?
この差がどうでもいいレベルなら、正直どっち使ってもいいよw
質問主の需要はどちらでも満たせるし
>>179 そそ、そんな感じ。
実際はpreg_replace_callbackを使うことになるのかな?
Aタグの解釈はもっと厳密にやらないとなー
target属性とかもうまく避けないと
てか、正規表現で正確にやるのつらくね?
>>179 ブロック関数1回の呼び出しオーバーヘッドは 0.001秒ってところか
prefilterと組み合わせる手間も考えるとoutputfilterかなぁ・・・
Aタグ解釈の完璧な実装は難しいよね。
JavaScript使っていいならjQuery経由でクライアント側書き換えとかもありかもしれんね。
prefilterならsimple_html_domとかで厳密解釈できるから良いぜ
それはprefilterに限らないんじゃないか?
というか正規表現より重くなる気がすw
重い重くないの話しているやつで、outputfilterで正規表現置換を主張している人間は
なぜ何度注意されても「outputfilterの結果はキャッシュされない」「prefilter, postfilterの結果はキャッシュされるから、多少重くても問題ない」
という事実を無視してまぜっかえすの?
馬鹿なの?煽りなの?
今更蒸し返すお前も相当アレだと思うが、
prefilterでブロックタグに置換した後のコンパイル済テンプレートはキャッシュされるが、
ブロックタグ自体の実行コストが重いと
>>177で実証されている。
おわり。
テンプレートってよく使われてるものなの?
HTMLとPHPがごちゃごちゃになって読みにくくなる(書き方が下手なだけだけど)から
テンプレートはなんか便利そうだなって思うんだけど、
決定的な理由がないと何となく踏み出せないのれす・・
たぶん決定的な理由なんてないと思うよ
そうなの?
大規模なシステムを作る場合はみんな使ってる
みたいなことがあれば絶対覚えようと思うんだけど
>HTMLとPHPがごちゃごちゃになって読みにくくなる(書き方が下手なだけだけど)から
>テンプレートはなんか便利そうだなって思うんだけど、
多分テンプレートエンジンを導入した人の大半は同じ理由だと思う。
無くても大丈夫だけど、あれば便利な局面が結構あるよ。
楽天が使ってるとか使ってないとか
あまり例に出してほしくない名前だなw
よしっ、やってやるぅ!
>>189 Smarty慣れたら<? ?>で出たり入ったりなんてやってられんわ
>>155-156 普通は紙芝居の時点でデザインはある程度FIXするだろ?
開発に入って大幅な変更が入るようなことは今までなかったんだが。
お前らの開発現場では実装段階でそんなに何度もデザインが変わるのか?
もしそうなら上流工程のやり方を見直した方がいいぞ?
あとテンプレートっていうのはSmarty使ってようが生PHPだろうが
プログラムの一部だと思うんだけど、それをデザイナーに触らせるのって
気持ち悪くないの?
>>194 例えばブログ系システムとかテンプレート自体が増える事もある。
ユーザ別にデザインを振り分けたくなる事もある。
気持ち悪いとか、そんな個人的感情で誰でも出来るテンプレート編集にプログラマのリソースを割くのが当たり前だと思っているなら、
職業PGは向いていないと思うよ。気持ち悪くない分業方法を確立しなきゃ。
個人的には生PHPタグが混入しているテンプレートの方が気持ち悪い。
>>195 ブログ系システムみたいな揚げ足取りの例は無視な。
気持ち悪いと思うのはプログラマとして当然の思考。
例えビューでもコード(Smartyのタグでも)の入ってる時点で
プログラマの管理すべきソースだろ?
そこに勝手にデザイナーが手を入れていいのか?
素人の仕事じゃあるまいし。
HTMLからテンプレートへの変換って大した手間でもないだろう?
そんなことも面倒に思うほどどうしようもない人間なのか君は?
デザイナーだって汎用性のないSmartyの記述なんか覚えたくないと思うよ?
>個人的には生PHPタグが混入しているテンプレートの方が気持ち悪い。
CakePHPとかsymfonyとか触ったことないんですね。
そんな低レベルな人はレスしないでほしいな☆
おっちゃん何で怒ってんの?
ブログ系ってのは解りやすく例えただけだよ。
ユーザが好きなテンプレートを使えるサイトは多々あるよね。
SNS系、グリーティングカード系、携帯系、etc
揚げ足取りじゃなくて、君が携わった事ないだけだよ。経験不足。
それじゃなくともSI系や代理店系の仕事になると、大抵外部の人間がテンプレートを弄る事になるよ。
>例えビューでもコード(Smartyのタグでも)の入ってる時点でプログラマの管理すべきソースだろ?
それは貴方の視野が狭いだけ。
デザイナでも扱えるレベルの環境すら提供出来ない糞PGは大人しく自分でテンプレート書いてなw
>HTMLからテンプレートへの変換って大した手間でもないだろう?
貴方の作ってるサイトがしょぼいか、貴方がしょぼいからテンプレート編集振られてるだけだよ。
>CakePHPとかsymfonyとか触ったことないんですね。
触った事無いじゃなくて、触った上で気持ち悪いんだがw
>>198 ブログ系のシステムでテンプレートが増えたところで
そんなに何千もの数になるのか?ならんだろ?
そしてHTMLからテンプレートに変換する作業にどれだけの
時間がかかるんだ?そんなにかからんだろ?
プログラマのリソース云々言う程のことか?
>それじゃなくともSI系や代理店系の仕事になると、
>大抵外部の人間がテンプレートを弄る事になるよ。
大嘘つくなよ。
SIの仕事でテンプレートをデザイナーその他の人間に触らせるような
現場見たことねーよ。
>デザイナでも扱えるレベルの環境すら提供出来ない
何を訳の分からないこと言ってんだ?
頭おかしくなっちゃったの?
>貴方の作ってるサイトがしょぼいか、貴方がしょぼいからテンプレート編集振られてるだけだよ。
HTML→テンプレートの変換すらできないのか。
もうね・・・レベルが・・・低すぎる・・・。
>触った事無いじゃなくて、触った上で気持ち悪いんだがw
じゃあ、気持ち悪いからCakePHPもsymfonyも使わないんだ?
もしくはView改造して使ってるのかw
お前は一生Smarty使ってろwww
Smarty3の感想聞かせてくれやwww
なんかキモい人たちがいる・・・
>そんなに何千もの数になるのか?ならんだろ?
仕様で上限を決めてるならいいかもね。決まってないなら怠慢でしかないよ。
仮に30個程度だとしても恩恵は受けられるけどね。
>大嘘つくなよ。SIの仕事でテンプレートをデザイナーその他の人間に触らせるような
>現場見たことねーよ。
だからお前の経験不足なだけだよ。
俺が見たことない=一般的なのか?w
>HTML→テンプレートの変換すらできないのか。
いや、だから「誰でも出来る」って言ってるじゃんw何威張ってるのw
>>155の話では
1.デザイナがHTMLを納品
2.PGがHTMLをテンプレートに変換
3.修正はデザイナが行う
って話だろう。OK?
大幅な修正は1.の行程からやり直せばいいと思うが、
細かい修正はデザイナでも出来るようにしとけばいい。
PG不在の時に緊急対応入ったらお前はどうするんだ?w
24時間おまえが対応してくれるのか?
それとも「PGしか弄れないので後日対応します(キリッ」か?w
1、2をPGが何度も行うより、3のみをデザイナが行う方が、人為的ミスは減ると思うよ。
買収されちゃったとかで行われる著作権表記の変更をPGがやるの?
気まぐれな客の要望を満たすためにコンテンツの名称変更をPGがやるの?
コントローラーとモデルを流用した新コーナーの製作作業をデザインの調整までPGがやるの?
一度公開したら変更は想定出来ない部分までDBに格納しろっての?
デザイナに触らせるのが不安なんじゃなくて、
仕事取られるのが不安なんだよね。
PGを特別なアーティストか何かと勘違いしていて、
「自分にしか出来ない」とうステータスを保持したいんだよね。
PGなんて登竜門でしかない。
SEになれとは言わないが、若手PGやデザイナを上手く使えないようでは未来は無いよ。
少なくとも上流PGが「俺がテンプレートも編集する」とか言ってたら下流PGはついてこないw
>>199がSEで、PGに対して「数百個程度のテンプレならPGがやれ」と命令してるんだろうな
おまぃら2週間近くもよく同じ話が続けられるな
>>201 >だからお前の経験不足なだけだよ。
>俺が見たことない=一般的なのか?w
経験不足ですかw
確かに。いろいろな現場を見てきたけど
デザイナーがテンプレートに手を入れるようなしょぼい現場は
経験不足だわw
しかし大手・中小・BtoB・CtoCと色々な現場を見てきたけど
なんでお前の言うような現場を見たことが無いんだろうなぁ?
お前が経験不足だと知ることから始めたら?
>1.デザイナがHTMLを納品
>2.PGがHTMLをテンプレートに変換
>3.修正はデザイナが行う
だからなんでデザイナが修正を行うんだよ。
PGがテンプレートを作ったんだから修正もPGがやれよ。
その方が余程効率的だろ?
>細かい修正はデザイナでも出来るようにしとけばいい。
>PG不在の時に緊急対応入ったらお前はどうするんだ?w
>24時間おまえが対応してくれるのか?
>それとも「PGしか弄れないので後日対応します(キリッ」か?w
おいおい、PGが不在ってどんな状況だよ。
お前のやってる仕事なんてのはそんなしょぼい仕事なのか?
あと、デザイナーに保守やらせんなよw
こういう雑魚とは前提条件が違うから話すだけ無駄なんだな。
>1、2をPGが何度も行うより、3のみをデザイナが行う方が、人為的ミスは減ると思うよ。
このアホを誰かつまみ出せよ。
>>202 >買収されちゃったとかで行われる著作権表記の変更をPGがやるの?
>気まぐれな客の要望を満たすためにコンテンツの名称変更をPGがやるの?
著作権表記も名称変更も一括置換でできるだろ。
逆にデザインとまったく関係の無い業務をデザイナーにやらせるのは
非効率だし本質的ではないだろ?
>コントローラーとモデルを流用した新コーナーの製作作業をデザインの調整までPGがやるの?
新コーナーって・・・香ばしい言い回し(本当にプロなのか?)
既存のものと全然違うデザインならデザイナーにHTMLの作成依頼して
PGがテンプレートに変更しろよ。
じゃなければ既存のものを転用してビュー作れよ。
5分程度だろ。
>一度公開したら変更は想定出来ない部分までDBに格納しろっての?
何を訳の分からないことを・・・
>>203 >デザイナに触らせるのが不安なんじゃなくて、
>仕事取られるのが不安なんだよね。
ハァ・・・
なんという的外れなレス・・・
お前はネットばっかやってないで社会に出て仕事しろ。
>PGを特別なアーティストか何かと勘違いしていて、
>「自分にしか出来ない」とうステータスを保持したいんだよね。
ステータスw
ビューの作成をデザイナーにさせたくないのは「ステータス」の為www
これ笑うところでいいんだよね?
>PGなんて登竜門でしかない。
>SEになれとは言わないが、若手PGやデザイナを上手く使えないようでは未来は無いよ。
>少なくとも上流PGが「俺がテンプレートも編集する」とか言ってたら下流PGはついてこないw
設計も実装も出来てPGとして一人前だ。
僕は上流PGだから(何それw)テンプレートの編集はしないよ(キリッ
↑死ねw
長文野郎はキチガイと決まっている
箇条書きに>>を使うのやめれ
あー、箇条書きじゃなくて引用に>>を使ってるのか
アンカーになるから二重にするな
何らかの専ブラで>1が
>>1にでも変換されるようになってるとかじゃね?
なんか、呼称の問題な気がして来たw
>>208 Smartyの序文でも読んでごらん。
http://www.smarty.net/manual/ja/preface.php 例えば私たちの会社において、アプリケーション開発は次の順序で行われています。
アプリケーションの要求仕様書を作成した後、インタフェースデザイナーは ユーザーインタフェースのモデルを作成しプログラマに渡します。
プログラマーは PHP によってビジネスロジックを実装し、 ユーザーインタフェースのモデルを使ってテンプレートの骨組みを作成します。
その後、プロジェクトはとても素晴らしいテンプレートをもたらしてくれる HTML テンプレートデザイナー/レイアウトデザイナーに手渡されます。
このようにプロジェクトはプログラマー/デザイナーの間で あちこちに何度も行き来する可能性があります。
プログラマーは HTML を何も扱いたくないし、HTML デザイナーに PHP コードの箇所をいじられたくないので、有用なテンプレートの土台を持つ事は重要です。
デザイナーは設定ファイルやダイナミックブロックのサポートや 他のインタフェースの公開が必要ですが、彼らは複雑な PHP 言語を扱いたくありません。
君がどんな現場を見てきたのかしらんが、Smarty使う使わないに限らず上記のような思想で動いているプロジェクトは多い。
プロジェクトが大きくなればなるほどその確率は高くなるよ。
今まで遭遇した事が無いのであれば、よほどブラックな界隈か、しょぼい案件か、経験不足のどれかだと思うよ。
>>一度公開したら変更は想定出来ない部分までDBに格納しろっての?
>何を訳の分からないことを・・・
テンプレートが弄れないなら、あらかじめ変数なりにしておいてCMSで弄れるようにしろって事でしょ。
その程度の読み取れないのかぁ、完全に経験不足だよお前w
言い合ってる2人のやり取りをまとめると、
結局、商用のWebアプリにSmartyはよく使われてるってことだよね?
広く使われているが為に、理解力の無い輩も沸いちゃうんだよね。
>このようにプロジェクトはプログラマー/デザイナーの間で あちこちに何度も行き来する可能性があります。
>プログラマーは HTML を何も扱いたくないし、HTML デザイナーに PHP コードの箇所をいじられたくないので、有用なテンプレートの土台を持つ事は重要です。
>デザイナーは設定ファイルやダイナミックブロックのサポートや 他のインタフェースの公開が必要ですが、彼らは複雑な PHP 言語を扱いたくありません。
を解決したいという明確な設計思想があるのに、
テンプレートもプログラムの一部であり、デザイナに触らせるのは気持ち悪い。PGがテンプレートを弄るべき(キリッ
とか声荒げられてもなぁ・・・
おい…なんかキモいのが来たぞ…
∧,,∧ ∧,,∧キモ…
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` ) (^ν^) ……
| U ( ´・) (・` ) と ノ /l_l\
u-u (l ) ( ノu-u l <........
`u-u'. `u-u' なんだあいつ…
うぜぇ…
∧,,∧ 分業厨乙!! ∧,,∧ 無視しろ無視…
∧∧ (・` ) テンプレはPGが触るべき!!( ´・) ∧∧
(ω・` ) U ) \(^ν^)/ ( Uノ( ´・ω) キモいよー…
| U u-u l_l u-u (U ノ
u-u ∧,,∧ / \ ∧,,∧ u-u
(・ω・`) (´・ω・) なんなのあいつ…
(l U)市ねよ… (U ノ
`u-u'. `u-u'
つまらん言い合いは飽きた
有用なネタ頼む
CakePHPだとビューキャッシュ効かせても糞遅いんで、ビューにSmarty使ってSmartyのキャッシュで表示したい
生のCakeの速度を1として
生Cake 1
キャッシュCake 5
Smartyキャッシュ 500
Cake+Smartyキャッシュだとどれくらい?
Smarty3から生PHPテンプレートに対応するんだな。
速度はさほど改善されないっぽいけど、
継承や、新構文、リソース種類の増加で地味に使いやすくなってる気がする。
>>219 生Cakeのキャッシュでどんな実装してるかわからんから比較できないよ。
Smarty単体で速度計測してみれ・・・
Smartyには、軽くて速くて使いやすい方向に行って欲しかったんだがな・・・
複雑なことならPHP直接書くしさ
smartyって中身的にはsqliteとも違う構造ですか?
意味がわからない、何故sqliteが出てくるの?
PHP生テンプレート対応で、
「PHP自体がテンプレートエンジンなんだからSmartyなんていらん(`Д´)」
と言われなくなるのかと思うと胸が熱くなるな。
ビューにコードが入るのがイヤだからSmarty使ってたんじゃないの?どんな気持ち?
こうなるから安心しろ
>>214 Smartyを作った会社なんだから
そのような考え方・やり方の会社なんだろ。
こんな極端な例を見せて何悦に浸ってんだお前?
お前にそのまま返しますw
お前がどんな現場を見てきたのかしらんが、お前が主張するような思想で動いているプロジェクトは少ないんだよ。
プロジェクトが大きくなればなるほどその確率は低くなる。
今まで遭遇した事が有るのであれば、よほどブラックな界隈か、しょぼい案件か、経験不足のどれかだと思うよ。
>>215 お前って都合の悪いことは答えないで
揚げ足取りばかりなw
>>217 >広く使われているが為に、理解力の無い輩も沸いちゃうんだよね。
広く使われてないし、理解しようとも思ってませんからw
>を解決したいという明確な設計思想があるのに、
>テンプレートもプログラムの一部であり、デザイナに触らせるのは気持ち悪い。PGがテンプレートを弄るべき(キリッ
>とか声荒げられてもなぁ・・・
テンプレートを色んな人間が触るなんて糞みたいな設計思想だな。
だからお前ら馬鹿にされんだよ。
その糞みたいな設計思想を実現するために
デザイナーに汎用性の無い糞みたいなSmartyの記述を覚えさせ、
CVSやSVN等の使い方教えるのか。
デザインだけに専念したいだろうに可哀相。
CakeはRilsと同じくフルスタックを売りにしてるのに
勝手にSmartyみたいな屑ライブラリをくっつけるな。
フレームワークの思想が乱れる。
>>227 >>広く使われてないし、理解しようとも思ってませんからw
ん?では何のためにこのスレ来てるの?
君の周りでは誰も使っていない、自分も使う気が無いなら、全くもって時間の無駄だと思うがw
>>CVSやSVN等の使い方教えるのか。
・・・凄い人達と仕事してるんだなw
SVN使えないなんて、FTP使えないです!パーミッションって何ですか!?と同じレベルだぜ。
君のところはバージョン管理してないの?
それとも毎回手動でプログラマがコミット&マージを行ってるの?ww
言い返せなくて画面の前で真っ赤になってたんだろうよw プライドだけは高そうだからなw
1人ファビョっても誰も受け入れてくれないのにな。隣国の人なのかな。
言い合いウザい。
どっちも消えろ
> お前がどんな現場を見てきたのかしらんが、お前が主張するような思想で動いているプロジェクトは少ないんだよ。
[要出典]
> プロジェクトが大きくなればなるほどその確率は低くなる。
[要出典]
> 今まで遭遇した事が有るのであれば、よほどブラックな界隈か、しょぼい案件か、経験不足のどれかだと思うよ。
[要出典]
>>227 >テンプレートを色んな人間が触るなんて糞みたいな設計思想だな。
複数人がビューを弄る事と、Smartyの思想は別の話だよ。
生PHPテンプレートだとしても、複数人が安全に弄れるようバージョン管理は行う。
バージョン管理すら存在しないような最下層の開発現場じゃどうしようもないんだろうけどw
>デザイナーに汎用性の無い糞みたいなSmartyの記述を覚えさせ、
汎用性の無い糞みたいなPHPビュークラスや自作エスケープ関数を教えるの?w
>CVSやSVN等の使い方教えるのか。
>デザインだけに専念したいだろうに可哀相。
バージョン管理なんて最早基礎スキルだろw
デザインに専念したい?
なら尚更、煩わしい連携作業を効率化する為にもバージョン管理やテンプレート弄る権利は必要だろ。
PGにテンプレ反映依頼しないと動作確認すら確認出来ない環境でデザインに専念?笑わせるなw
>>229 >ん?では何のためにこのスレ来てるの?
>君の周りでは誰も使っていない、自分も使う気が無いなら、全くもって時間の無駄だと思うがw
いや、PHPでテンプレートエンジンを使うような奇特人間の観察でもと思ってな。
>・・・凄い人達と仕事してるんだなw
デザイナーなんて大抵外注だから知らねぇけど
SVNとか使えねぇんじゃねーの?
(だからこそテンプレートなんか触らせないわけだが)
>SVN使えないなんて、FTP使えないです!パーミッションって何ですか!?と同じレベルだぜ。
てゆーかお前のセリフっていちいち素人臭ぇんだよな。
お前、マジでショボイだろ?
>君のところはバージョン管理してないの?
>それとも毎回手動でプログラマがコミット&マージを行ってるの?ww
バージョン管理してるって文脈で分からん?アホなの?
デザイナーは外注だからHTMLを納品するだけでコミットなんかしねーよ。
ソースのコミット・マージってそんなに大変か?
お前はいちいち面倒くさがってるけど
そんなに程度が低いのか?
>>234 >複数人がビューを弄る事と、Smartyの思想は別の話だよ。
Smartyはそういう思想で作られたものだと
お前らが
>>214主張してた訳だが。知能指数低めか?
>汎用性の無い糞みたいなPHPビュークラスや自作エスケープ関数を教えるの?w
だからさーなんでお前はそんなに知能指数が低いんだよ。
デザイナーにテンプレートなんて触らせねって言ってんだろが。
>バージョン管理なんて最早基礎スキルだろw
>デザインに専念したい?
>なら尚更、煩わしい連携作業を効率化する為にもバージョン管理やテンプレート弄る権利は必要だろ。
バージョン管理のくだりにこだわるねぇ。
バージョン管理をとてもすごいことだと思ってるのか?
お前みたいな低スキルでも使えるくらい簡単なシステムだよw
デザインに専念できないって言ってるのはSmartyの糞みたいな記法だ。
>PGにテンプレ反映依頼しないと動作確認すら確認出来ない環境でデザインに専念?笑わせるなw
デザイナーにテンプレ反映依頼しないと動作確認すら出来ない環境で
プログラミングに専念?馬鹿かw
喧嘩するなよそでやってくれ
自演で喧嘩してるようにしか見えん
[要出典]タグでもつけときゃいいんだよ
smartyスレはいつもこんな感じだよなぁ、みんなストレス溜まってるようだ
みんなじゃ無いよ
一人だよ
おい…なんかキモいのが来たぞ…
∧,,∧ ∧,,∧キモ…
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` ) (^ν^)
>>235-236 | U ( ´・) (・` ) と ノ /l_l\
u-u (l ) ( ノu-u l <........
`u-u'. `u-u' なんだあいつ…
うぜぇ…
∧,,∧ 奇特人間乙!! ∧,,∧ 無視しろ無視…
∧∧ (・` ) テンプレはPGが触るべき!!( ´・) ∧∧
(ω・` ) U ) \(^ν^)/ ( Uノ( ´・ω) キモいよー…
| U u-u l_l u-u (U ノ
u-u ∧,,∧ / \ ∧,,∧ u-u
(・ω・`) (´・ω・) なんなのあいつ…
(l U)市ねよ… (U ノ
`u-u'. `u-u'
((⌒⌒))
((((( )))))
| | ファビョーン
∧_∧
∩#`Д´>") 奇特人間を観察してるだけニダ!
ヽ ノ
(_つ ノ
し"
AAか。
ま、Smarty厨にはお似合いだわw
彡川川川三三三ミ〜
川|川/ \|〜 プゥ〜ン
‖|‖ ◎---◎|〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
川川‖ 3 ヽ〜 < AAか。ま、Smarty厨にはお似合いだわw
川川 ∴)д(∴)〜 \_______________
川川 〜 /〜 カタカタカタ
川川‖ 〜 /‖ _____
川川川川___/‖ | | ̄ ̄\ \
/ \__| | | ̄ ̄|
/ \___ | | |__|
| \ |つ |__|__/ /
/  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
| | ̄
AA出しちゃった時点で負け
キリッ
彡川川川三三三ミ〜
川|川/ \|〜 プゥ〜ン
‖|‖ ◎---◎|〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
川川‖ 3 ヽ〜 < AA出しちゃった時点で負け
川川 ∴)д(∴)〜 \_______________
川川 〜 /〜 カタカタカタ
川川‖ 〜 /‖ _____
川川川川___/‖ | | ̄ ̄\ \
/ \__| | | ̄ ̄|
/ \___ | | |__|
| \ |つ |__|__/ /
/  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
| | ̄
日本語の読み書きが不自由な
>>235 の為にAAを用意しまんた。
>>240 のAAが全てだと思います。自分の巣へお帰り・・・。
AAでしか対抗できないSmarty厨
こんなスレAAで埋めてしまえよw
SmartyにAA出力機能でも付けろよw
お前らには必須の機能だろw
草が増えてきましたね
レスも分割しちゃって・・・ファビョル寸前ですね
「AA出力機能でも付けろよ」(キリッ
この嫌味にも皮肉にもならない煽り文句・・・
あれ、顔真っ赤ですよ?大丈夫ですか?
<pre>タグで実現できるだろ。
Smartyが何かも知らずに煽ってたのかw
>>249 お前って「キリッ」好きだよな?
お前みたいな能無しAA馬鹿はこの板に来なくていいんだよ。
嫌味にも皮肉にもならない煽り文句とか言ってる割には
必死で即レスつけてんのな。笑えるwww
>>250 preタグなんか付けたら逆にAAやりづらいんだが。
Smarty厨ってそんな当たり前のことも分からないのか・・・
デザイナーと分業(笑)とかしてるからHTML覚える必要ないんだっけ?
こういうどうしようも無い奴にWebプログラマを騙って欲しくないんだが。
Smartyどうこう言う前にお前の弱いオツムをなんとかしろやwww
ほらきた
>>251 また草が増えましたね。(キリッ
必死に即レス?そっくりそのまま返しますよ。(キリッ
僕はSmarty厨だからスレ見てるけど、君は何故このスレにいるんだい?(キリッ
時間の無駄じゃないかな?(キリッ
Smartyは君みたいな低級PGでも習得出来るくらい簡単なので軽く触ってごらんよ。(キリッ
>>251 彡川川川三三三ミ〜
川|川/ \|〜 プゥ〜ン
‖|‖ ◎---◎|〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
川川‖ 3 ヽ〜 < preタグなんか付けたら逆にAAやりづらいんだが。
川川 ∴)д(∴)〜 \_______________
川川 〜 /〜 カタカタカタ
川川‖ 〜 /‖ _____
川川川川___/‖ | | ̄ ̄\ \
/ \__| | | ̄ ̄|
/ \___ | | |__|
| \ |つ |__|__/ /
/  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
| | ̄
<pre>にfont-familyなり指定するだけだよ。何がやりづらいの?あほなの?
AAはフォントに依存するので、プロポーショナルフォントを使わないで等幅+<pre>タグで処理するのが一番楽だよ。
知ったか乙です。
>>253 趣味でWebやってるSmarty厨乙ですw
こんな糞スレに見てもお互い時間の無駄だよなぁ?
分かってるならさっさとこのスレ埋めてくれよ。
自慢の即レスでw
>>254 お前はpreタグとしか言ってなかったが?
font-familyはpreタグの属性ですらないだろ。
後出しで何言ってんだお前は。
>>255 font-familyがCSSプロパティって事くらい瞬時に理解できない程低脳とは思わなかったスマン。
>>250はpreタグとしか書かれていないが何がやりづらいんだい?どう書くのがやりやすいんだい?
white-space: pre 指定クラスを作るよりも手軽さでは上だと思うが。
あ、preだと正しいマークアップが云々の後出し条件はいらないからね。
>>256 >font-familyがCSSプロパティって事くらい瞬時に理解できない程低脳とは思わなかったスマン。
font-familyはpreタグの属性じゃないだろ。
cssのプロパティってわざわざ書かないといけないか?
くだらないことに突っ込むな低脳。
まともに日本語理解できないよな馬鹿がWebプログラミングとか笑わせてくれる。
>preタグとしか書かれていないが何がやりづらいんだい?どう書くのがやりやすいんだい?
preタグ内に一般的な掲示板で張り付けられてるようなAA書いたらずれるだろ。
マジで下らねぇことに突っ込むな低脳。
258 :
nobodyさん:2010/05/23(日) 01:56:42 ID:UAgciFgz
「ここ『する』から『します』に変えといて」
って依頼をPGが修正するのか・・・胸が熱くなるな
>>font-familyがCSSプロパティって事くらい瞬時に理解できない程低脳とは思わなかったスマン。
>font-familyはpreタグの属性じゃないだろ。
>cssのプロパティってわざわざ書かないといけないか?
「font-familyはpreタグの属性じゃないだろ。」って君が言うから、
「CSSのプロパティだよ。それすら説明しないと理解出来ないの?」って事だよ。
お前こそ日本語大丈夫?そもそもどこに「属性」なんて書いてあるの?
会話の中で「○○タグにfont-family指定して」って言われたら、
「font-familyは属性じゃありません!」って答えるのかお前は・・・低脳極まりねぇな・・・。
>preタグ内に一般的な掲示板で張り付けられてるようなAA書いたらずれるだろ。
AAは基本的にフォント依存でありpreタグで囲ったところでスペースと改行の扱いが変わる程度。
ずれるずれないはpreタグの問題では無いし、一般的にはwhite-space:pre; を指定する。
(お前の一般的が何を指しているかは知らんがw)
具体的には何がやりづらくなるのか書いてくれよ。
まともに反論出来なくなると「くだらないことに突っ込むな低脳。」しか言わないなお前。
「テンプレートもプログラムの一部」っていう時点でコンセンサスを得てないので
気持ち悪くないかと言われても・・・ってとこだな
>>261 「<pre>タグを使うと、具体的に何がやりづらいんですか?」
2ヶ月規制で書き込めない間もずっときめえ書き込みしかねえのかここはwwww
いい加減、プログラム関連の板は強制IDにしてほしいねぇ
煽りと反応する人を両方騙ればいくらでも荒らせてしまう
ここの人はマヂっぽいけどな
>>264 お前そんなこと書くならIP出せよクズか貴様
言い合ってる人たちは何のために戦ってるの?
それを264に言ってやれ
emobileのIP晒してIP出したと言い張るとはw
お前は何を言ってるんだ
お前は何を言ってるんだ(キリッ
実際、荒らす奴ってのは自分はまともな振りをしてる人が多いんだよな
とりあえずこのスレ書き込むときはIPなりコテハンとトリップつけてIDなり出して書き込んだほうがいいよ
274 :
こうですかわかりません:2010/05/25(火) 18:38:47 ID:9AThLUKM
トリップとは?
275 :
こうかなやっぱわかりません ◆r0p/Rg8RZU :2010/05/25(火) 18:39:38 ID:9AThLUKM
もう忘れたな
結論:本物のプロはSmartyなんて使わない。
Smartyつかわないとかありえない
あるかないかで全然違うのに
おれはこれを使ってここまで来たんだ
279 :
nobodyさん:2010/05/26(水) 00:03:12 ID:TMQUCua5
プロはこんな所でグダグダ言わない。
本物のプロはケースバイケースで考える。
Smartyは絶対じゃなく、所詮は手段の一つ。
使わない派の意見で、
「デザイナに汎用性の無いモノを覚えさせるのが不毛」というのがあるが、
既にSmarty知識を有しているデザイナは多い。
外部の制作会社と連携する時も、「Smarty使います」の一言である程度イメージ共有出来るのは強い。
モダンでは無いし、常に最適解とは言わないが、十二分に現役で扱えるスキルだと思う。
日本人が英語なんて話せなくても別に苦労はしない、日本国内で日本人としか関わらないならね
もっと広い世界の人と関わるには英語を話せたほうがいいんだよ
つっても韓国語が必要だったりフランス語が必要だったりする場合もあるから必ずしも英語が必要ってわけでもない
smartyを覚える意味はあとは言わなくても分かるよな
最適解を目指したいならそもそもPHP選ばない
その理屈だとjavaもpythonもperlもrubyも選ばないことになるな
CかC++で何でもやればいいと言ってるようなもの
いや開発コストとかメンテナンス性も加味したうえで。
昔 PHPの基礎→Pear + Smarty
今 PHPの基礎→フレームワーク
Smartyにこだわる必要はない。
HTMLテンプレートライブラリという概念を理解していれば問題ないでしょ。
出来るできない何てどっちでもいいけど、出来て損はない。そんなレベル。
Smartyもフレームワークも用途次第です←結論
Smartyなんか4〜5年前に流行っただけで
今使ってる奴なんかいるのか?
未だに使ってるとしたらヤバイだろ?
結論:Smartyは過去のもの。
過去のモノ=悪いとはならんからなぁ・・・
むしろ枯れた技術が進んで採用されるケースも多々ある。
>>288 何がどうヤバイのか具体的に書けるかな?
未だに古い技術にしがみついてるのがヤバイんじゃね?
じゃあCとかC++とかやってるやつはヤバイな
大手ポータル(ブログサイトなど)を見ると、
大抵Smarty使ってるけどな
何を見てSmarty使ってるって分かるの?
テンプレートの編集
結局ブログのテンプレートにしか使われてないんですね。
どこにもそんな事書いてないよ。頭大丈夫?
296にとってはテンプレート=ブログのテンプレートなんだよ
仕方ない
×・・・結局ブログのテンプレートにしか使われてないんですね。
○・・・結局ブログのテンプレートにも使われているんですね。
それだと結局の意味がわからん
つまり、テンプレートを他人に編集させるWebサービスには
Smartyが多く使われている、って解釈で良いだろ。
そう考えると、一概に無駄とは言えないぞ。
Smartyかどうかは分からないんじゃないの?
gooブログの有料版はパスにSmartyって入ってた(今は知らない)からSmarty使ってるんだろうけどさ
ここ荒らしてるアンチは自分が取り残されてて悔しいんだろう
>>303 MTはSmarty使ってるけど、MT系のブログって多いからなぁ
くやしいのうwwwくやしいのうwww
なにが?
アンチはSmartyだけじゃなく他のテンプレートエンジンもいらねーって考え方だから話にならない
だったら、PHPも使わなきゃいいのにな
なんだかんだ、ここまで周知された技術だと新たに学習するのは非常に楽だと思う。
Smarty3ではエラーメッセージのロケール対応とか出来たら嬉しかったなぁ、
「xxxx.tpl ××行目付近、{foreach}タグが閉じられていません → 参考リンク」
「xxxx.tpl ××行目付近、{$var|escpe}、 escpe修飾子は存在しません → 参考リンク」
とか出せたらデザイナ側からのくだらない質問は減ると思う
お前らみたいに趣味でPHPやってるような奴は
どうぞ勝手にSmartyとか使ってくれて構わないが
実際にプロの現場には持ち込まないでくれよ?
あくまでも趣味の範囲内でな?
|
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
>( c´_ゝ`) |
|
>( c´_ゝ`) J
>( c´_ゝ`)
|
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
| >( c´,_ゝ`)
|
J >( c´,_ゝ`)
>( c´,_ゝ`)
プロは言語もライブラリもケースバイケースに使い分ける。
手段の選択肢を、宗教じみた個人的感情で排除する輩は、プロというよりオナニストだな。
質問です。
本とか見るとSMARTYよく載ってるんでいちおう使ってみたんですけど
自分の場合デザインとかHTMLも自分でやるんですが
この場合あえてPHPとHTML分離させるSMARTYって使うメリットありますか?
まだ慣れてないってこともあると思いますが使ってみて
ファイルの管理面倒だなーとか、ちょっとこのまま使い続けていいものか
迷ったもので、同じようにデザインもやる人でSMARTY使ってる人っているでしょうか。
>>314 PHPとHTMLを分離させることは必要ですが、
Smartyを使うメリットは余り無いと思います。
Smarty自体はPHP4時代に結構流行りましたが、
今はCakePHPやsymfony等の有名どころのフレームワークが
ビューの部分は生PHPにしてますので
それに習うのが現在の主流です。
>>314 ファイル管理に関してはロジックとビュー分離する時点でさほど変わらないかと。
一番のメリットはテンプレートが読みやすいって事じゃないかな。
●Smartyで書いた場合
<ul>
{foreach from=$rows key=id item=row}
<li id="{$id|escape}">{$row|escape|default:"デフォルト"}</li>
{/foreach}
</ul>
●PHPで書いた場合
<ul>
<?php
foreach ($rows as $row) {
echo '<li id="' . htmlspecialchars($id) . '">' . (strlen($hoge) ? htmlspecialchars($hoge) : "デフォルト") . </li>;
}
?>
</li>
>>315 >今はCakePHPやsymfony等の有名どころのフレームワークが
>ビューの部分は生PHPにしてますので
>それに習うのが現在の主流です。
単にそれぞれのFWが独自ビュークラスを用意してくれているだけで、
「推奨」されているわけでも「主流」なわけでもありません。
逆にCakePHP/symfony/ZendFW等の標準のビュークラスを使ってしまうと、
フレームワーク移行時にビューの設定や構文の最習得が必要になりますし、
それは容易ではありません。
またフレームワークとビュー関係のクラスが密結合されている場合もあり、
フレームワークのバージョンアップでビュー側にもバージョンアップが必要になる、等の弊害もあります。
枯れ果てたSmartyが未だ解説書等に見られるのは、それなりの理由があるんですよ。
>>317 >単にそれぞれのFWが独自ビュークラスを用意してくれているだけで、
>「推奨」されているわけでも「主流」なわけでもありません。
CakePHPもsymfonyも独自ビュークラスなんて用意されてませんよ?
>逆にCakePHP/symfony/ZendFW等の標準のビュークラスを使ってしまうと、
>フレームワーク移行時にビューの設定や構文の最習得が必要になりますし、
>それは容易ではありません。
Smartyでビュークラスを作っても独自のライブラリに依存しているので
対して変わりありませんよ?
Smartyはスマートじゃないという矛盾
>318
>CakePHPもsymfonyも独自ビュークラスなんて用意されてませんよ?
Cake/symfonyで言えばヘルパーとう名でビューを扱う為のクラス/ユーティリティ群が用意されているよね。
用語の違いでしか無いよ。
>Smartyでビュークラスを作っても独自のライブラリに依存している
密結合と疎結合って言葉知ってる?
フレームワークに内包されるヘルパーは密結合。
アダプタパターンって知ってる?
Smarty本体がアダプタとして動いてくれるから、
フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。
で、お前らデリミタタグは何にしてるの?
322 :
314:2010/05/30(日) 12:59:55 ID:???
>>321 {{ }}やー。
>>315−319
ありがとうございます。
勉強になりました。。
フレームワークとSMARTY組み合わせてもいいわけなんですよねー。
SMARTYはざっくりですが覚えたんで実用でもせっかくなんで使ってみたいと思います。
とりあえず今度フォーム系でなんか機械があったら使ってみる。
>>320 >密結合と疎結合って言葉知ってる?
>フレームワークに内包されるヘルパーは密結合。
そんな密結合になっているフレームワークのヘルパーを
ワザワザ引き剥がしてまでSmartyを使う必要ってあるんですかねぇ。
>アダプタパターンって知ってる?
>Smarty本体がアダプタとして動いてくれるから、
>フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、
>ビュー側のスクリプトには何ら影響は無い。
アダプタパターンは使わないと思いますけど(笑
顔真っ赤になってレスしてるんだろ?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
自分だけsmarty使えないからって2ちゃんで同意を求めに来てるんだよなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
>>325 信者ならsmartyじゃなくてSmartyって書けよ。
>>324 >ワザワザ引き剥がしてまでSmartyを使う必要ってあるんですかねぇ。
上に書いてあるだろ、
・フレームワーク別にヘルパーを覚える必要がある
・フレームワーク自体のアップデートがビュー側に影響を与える恐れがある
というデメリットもあるってこった。
趣味プログラマにはいいかもしれんが、
開発人数が増えれば増えるほど、このデメリットは如実になる。
>アダプタパターンは使わないと思いますけど(笑
そりゃ君が無能だからだろ(笑)
Smarty使わないにしろ、ビュー用のインターフェースは別途用意しておいて、
各ビュースクリプトとのアダプタを作るのが、君の好きなモダンフレームワーク実装。
そもそも開発人数増えて規模が大きくなる前提なら
デザイナにテンプレート触らせるとかまずありえない。
>>327 >上に書いてあるだろ、
>・フレームワーク別にヘルパーを覚える必要がある
>・フレームワーク自体のアップデートがビュー側に影響を与える恐れがある
>というデメリットもあるってこった。
フルスタックのフレームワークに無理やり
外部のテンプレートエンジンをねじ込むんですか?
フレームワークの思想をまるっきり無視って訳ですね。
あと、フレームワークのビューには変更が入るかもしれないけど
Smartyのインターフェイスには変更が入らないという前提で
物を言ってません君?随分と都合のいい話ですね。
>趣味プログラマにはいいかもしれんが、
>開発人数が増えれば増えるほど、このデメリットは如実になる。
趣味でやってるのではないのなら尚更
Smartyなんていう外部ライブラリを使わない方がいいんじゃないですか?
君はSmartyは誰でも知っているみたいな言い方してますけど
誰もが知ってるわけじゃないし、人によっては好みもあるでしょ?
ま、私は全くもって好みじゃないですが。
>そりゃ君が無能だからだろ(笑)
>Smarty使わないにしろ、ビュー用のインターフェースは別途用意しておいて、
>各ビュースクリプトとのアダプタを作るのが、君の好きなモダンフレームワーク実装。
無能ですか?そうですか。
私が例にあげたCakePHPにもsymfonyにも
アダプタパターンは合わないと思いますけど。
そんなに自分が有能なのならコード書いてもらえません?
多分できないと思うけど(笑
>>328 ホントそうですよね。
普通の開発じゃ考えられないようなこと言ってますよねここの人達。
しかもそれを正当化。笑い話にもならないっつーの。
>君はSmartyは誰でも知っているみたいな言い方してますけど
>誰もが知ってるわけじゃないし、人によっては好みもあるでしょ?
ここがSmartyスレだって事忘れてない?w
好みの問題を持ち出すなら、それこそSmartyスレ見なければいいんじゃないの。
>フレームワークの思想をまるっきり無視って訳ですね。
思想?どこにそんな事書いてあるの?
ZF、symfony、cakeはなんら問題無く外部ビュースクリプトを載せられるようになっているし、
ZFに至っては疎結合をウリにしているけどな。
>あと、フレームワークのビューには変更が入るかもしれないけど
>Smartyのインターフェイスには変更が入らないという前提で
Smartyに機能追加があろうが、フレームワーク自体を変更しようが
テンプレート側がその変更を意識する必要は無い。
Smarty自体がアダプタの役割も担うから。
もちろん他のFWでも独自にビュークラスを作ってやれば吸収出来るんだろうけど、
それは車輪の再発明ってやつだ。
何でSmarty知らないと恥ずかしいの?
Smarty以外でもHTMLテンプレートエンジンは色々あるわけだし、
それにこだわる必要なんてないと思うけど。
Smartyの利点は枯れたライブラリで多くの使用実績があるのと、
>>332が言っている通りの知名度。
後発ライブラリはそれ以上のメリットもあったりするわけだから、
状況によって使い分けるべきで、フレームワーク云々の話がでるのは筋違い。
営業会議の場でも普通にSmartyって言葉が使われる程認知されているのに、
Smarty知らないんじゃ恥ずかしいだろうよ。
現役かどうかは知らんが、Smartyの普及率は相当なものだ。
もちろんSmarty以外を使うのも有りだと思うし、
その場合はSmartyと比較してこんなメリットがあるんですよ。
って言える方が賢いと思うのよ。
今の子達は、頭ごなしにSmartyが駄目駄目言ってるだけで、
具体的に何が駄目で、どう改善すればいいのか、って案も無いみたいだし。
話しすすまんなぁ
抜けちゃったけど、
Smatry牙城を崩したいのであれば、
とりあえずSmartyを覚えて、他の技術とのメリットデメリットを提示するべきだと思うよ。
俺個人としては、新しい何かは好きなので触る価値があると思えば乗り換えるよ。
>Smatry牙城を崩したいのであれば
最初からSmarty牙城なんてなかった
メリットデメリット言う前に、使われてないし、これからも使われることはない
それがアンチの考えだから
でもスレには来るという謎さ
アンチはコテハン付けてくれ
2006年か・・・
2006年の時点で既にメジャーだったって事でしょ。
それなのに知名度云々言ってるのは、素人としか思えない。
最近はPEARもFWに食われて目にしなくなったけど、
使えば便利なケースは多々あるし、手段として身につけておいても損は無い。
Smartyもそんな感じだと思うよ。
アンチうぜえなお前らPHPくだ質のチンピラかOCNだろ
>>331 面倒なので手短に・・
フルスタックのFWに無理やりビューという大きな外部ライブラリを
ねじ込まないで下さい。
あと、アダプタパターンは無いわ(笑
>>343 無いのはお前の頭だろw
興味無いならCakeスレでなれ合ってろよw
>>344 アダプタパターン最近覚えたのかな?
Gofの基礎中の基礎だからね。
でもアダプタパターンは無いわ(笑
>>345 君はフルスタックの意味とアダプタパターン(笑)の使いどころが
よく理解できてないみたいだからもう書き込まない方がいいよ。
能無しがバレますよ?
大人しくSmartyの勉強でもしてなさいっ!
別に他スレでしつこくSmartyの話をしている奴が
いるわけでもないと思うし
皆このスレで「大人しく」していると思うんだけど
なにをしにこのスレに?
>>346 アダプタパターンは基底パターンみたいなもんだが、
君はアダプタが全く適用されないコードを書いてるのかい?
フルスタックという言葉に拘りがあるみたいだけど、君こそ言葉遊びしたいだけじゃないの?(笑
Smartyすら理解できない頭じゃ無理も無いが、
大人しくCakeをBakeしてればいいんじゃないかな?
>>348 アダプタパターンっていうのはアダプティとなるクラス(Smarty)と
ターゲットとなるクラスが比較的近いインターフェイスでないと機能しないんけど、
SmartyのようなテンプレートエンジンとCakePHPやsymfonyのような
生PHP+ヘルパ関数のビューをどのようにアダプタパターンで繋げるんですか?
ま、デザパタ覚えたので言葉を使ってみたかっただけかもしれないけど、
言うほど経験も知識も無いんだから、もうちょっと頑張りなさい。
>>349 >生PHP+ヘルパ関数のビューをどのようにアダプタパターンで繋げるんですか?
ん?それは実装の前提が違くないかい?
フレームワークとSmartyを繋ぐ事が目的じゃなくて、フレームワークとテンプレートを繋ぐことが目的で、
共通のテンプレート構文を使う為のアダプタって事だよ。
CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
ZendFW > ZendSmartyAdapter > template
CakePHP / symfony / Zend等フレームワーク固有のViewやヘルパ関数を使うと、
templateがフレームワークに依存するよね(当然メリットもあるけど)
だから、疎結合なViewクラスを挟むのもいいんじゃね?って話だが。
>>350の言う事で決着じゃん。
テンプレートがフレームワーク依存するのが嫌ならSmarty使えばいい。
使い分けるってこと出来ないの?
Zend <?php echo $this->escape($val); ?>
Cake <?php echo h($val); ?>
Symfony <?php echo $sf_data->get('hoge'); ?>
テンプレートも弄る自分的には、エスケープ一つでここまで構文が違うのは辛い。
手放せないほど便利な固有ヘルパーがあるわけでもないから、FW固有の方言やノウハウを学ぶ意欲も続かない。
そんな理由でSmartyを手放せずにいる。
>>352 学習意欲も無いのに高性能なものを無理して使うことは無いな。
Smartyで済む人は騒ぎ立てずにSmartyを使い続ければいいと思う。
>>350 Smartyと生PHPを「構文の差」として解釈してる時点で頓珍漢だと思う。
hogeFW > hogeSmartyAdapter > smarty構文のtemplate
hogeFW > php構文のtemplate
だから、Apapterパターンにはなり得ない、という話だと思うけど。
>>353 >Smartyと生PHPを「構文の差」として解釈してる時点で頓珍漢だと思う。
論点が変わってるね。Smartyと生PHPの話じゃなくて、
>>352が書いているように「テンプレートとしての構文の差」を無くす為にアダプタをかまそうって話だよ。
生PHPのみで例えるなら、CakeのテンプレートをZendFWで使おうとした場合、
Cake・・・<?php echo h($val); ?>
ZendFW・・・<?php echo $this->escape($val); ?>
という「構文の差」が生まれるよね。
でもZendFW側に h() を $this->escape() に橋渡しするアダプタを作ってやれば、
テンプレート構文の差は埋まり、共通のテンプレートが使えるようになるね。
CakeのテンプレートをZendFWで使おうなんて考えは頓珍漢だと思うよね。
でも別にCakeのテンプレートをZendFWで使う事が目的じゃないからね。
「FWに依存しない共通のテンプレート」が使えればSmartyだろうが生PHPだろうが構わないんだ。
>>350 はtemplateに対するAdapterパターンでFA。
Smatyスレで必死にSmartyを批判してる君も十分頓珍漢だと思うよw
> 「FWに依存しない共通のテンプレート」が使えればSmartyだろうが生PHPだろうが構わないんだ。
論旨が意味不明だな。
だったらSmarty要らないじゃん。
> Smatyスレで必死にSmartyを批判してる君も十分頓珍漢だと思うよw
Smartyスレで必死に頓珍漢なフレームワーク叩きをして、
スレが荒れる原因を作っているほうがよっぽどスレには不利益だと思うけどな。
>>355 >>「FWに依存しない共通のテンプレート」が使えればSmartyだろうが生PHPだろうが構わないんだ。
>論旨が意味不明だな。だったらSmarty要らないじゃん。
うん。だからSmartyじゃなくてもいいんだよ。
何が意味不明なんだい?
君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?
俺は生PHPを使ってhtmlspecialchars()とか毎回書くのはだるいし、
変数を一括エスケープしたり、テンプレートディレクトリを精査したり等の機能が欲しいから、
何らかのライブラリは必要だと思うよ。
でも、そんなの作るの面倒だからSmartyを使うけどね。
>Smartyスレで必死に頓珍漢なフレームワーク叩きをして、
誰も叩いてないよw
フレームワーク至上主義者がSmarty批判してブーメラン浴びてるだけの話だろw
ここまでの流れ
Smarty(テンプレートエンジン)否定派が沸く
↓
Smarty派は使う事のメリットを提示する
↓
否定派はメリットを絶対に認めずデメリットのみを主張
↓
Smarty派は使わない事のデメリットも提示する
↓
否定派ファビョル
PythonとかRubyを使っているモダンオナニストがPHPを否定しているような状況に似ているな。
所詮は道具なのに、なぜ使い分けが出来ない?
>>355 >>354,
>>356←こいつは前から一貫して意味不明なことをホザくので
俺も対応に苦慮してる。
デザパタとかFWの理解がまったくもってなってないので
話がまったく通じない。
精神異常者と話すってこういうことなんだと思った。
>>355 認識の違いって怖いですよね。
否定派がSmartyを使うことのデメリットを提示する
↓
Smarty厨が必死に抵抗(しかも意味不明)
↓
否定派が冷静にツッコミを入れる。
↓
Smarty厨ファビョル
そんな複数人に見せかけなくても
>>356 > 君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?
フレームワークの仕様にあわせて導入するのが良いと思うけど。
> 何らかのライブラリは必要だと思うよ。
> でも、そんなの作るの面倒だからSmartyを使うけどね。
別にそれでもいいと思うけど。
それがどうして
>>350みたいなアダプタになるの?
> ここがSmartyスレだって事忘れてない?w
> Smarty自体がアダプタの役割も担うから。
> アダプタパターンって知ってる?
> Smarty本体がアダプタとして動いてくれるから、
> フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。
と言っていた過去の発言とも矛盾してるでしょ。
「Smartyにはアダプタとしての機能があるからフレームワークで提供されたテンプレートより良いんだ」
というのが君の主張だったんだから、しっかり責任を持って発言してくれないと。
>> 君は「FWに依存しない共通のテンプレート」を実現したい場合、どうするのが良いと思う?
>フレームワークの仕様にあわせて導入するのが良いと思うけど。
質問の答えになって無いよ。
ムキになって反論してるだけじゃないなら、簡潔でいいから具体案を出してくれよ?
例えばcakeとsymfonyで同じtemplateを使用するという要件を満たす場合どうするの?
>それがどうして
>>350みたいなアダプタになるの?
>「Smartyにはアダプタとしての機能があるからフレームワークで提供されたテンプレートより良い」
「FWに依存しない共通のテンプレート」という要件を踏まえた上で、
>>350では共通テンプレートとフレームワークを繋ぐ為のアダプタと主張してるわけだが、それは理解出来るかい?
フレームワークで提供されたテンプレートにもメリットは有ると書いてるけど、日本語は理解出来るかい?
>> 362
>> ここがSmartyスレだって事忘れてない?w
>> Smarty自体がアダプタの役割も担うから。
>> アダプタパターンって知ってる?
>> Smarty本体がアダプタとして動いてくれるから、
>> フレームワークのバージョンを変えようが、フレームワーク自体を変えようが、ビュー側のスクリプトには何ら影響は無い。
> と言っていた過去の発言とも矛盾してるでしょ。
何がどう矛盾してるの?
Smarty自体がアダプタとして動作するし、フレームワーク自体を変えようがビュー側のスクリプトには何ら影響は無いよ。
そういうメリットを得たいならフレームワークで提供されたテンプレートより良いと思うし、
そういうメリットを見いだせないなら別にSmartyはいらんよって話なんだが。
メリットを受ける為の前提となる要件を無視して、矛盾云々言われてもなぁ。
君の頭が固いだけだよ。それもフレームワーク依存脳かい?
実際のところフレームワークにSmartyをかませると、速さ的にどう?
やっぱり結構表示速度遅くなっちゃうかな?
>>364 また訳の分からないことを言い始めたよこのアホは。
デザパタのアダプタパターンのことを言ってるかと思ったら
Smarty自体がアダプタとか・・・
お前からみたらこのスレにはアホしかいないんだろうから
相手しなければいいのに
わざわざやって来て書き込むのをやめられないというのは
なんか精神的な病か?
フレームワーク使ってる時点で重くなってるから、影響はあまり考えなくて良いんじゃないかなぁ
Smartyと組み合わせるってのは考えた事も無いわ
フレームワーク側が持ってるキャッシュ機構とか使いにくくなるかもしれないし
ヘルパーも用意されてるし
誰かやった事ある?
>>366 フレームワークの基本処理に比べたら超が付くほど軽いよ。
ここ数年のサーバ+PHP5環境でSmartyに置き換えただけで、体感出来るような事はまず無い。
>>367 アダプタパターンでいう所のアダプタって意味だろ。
あとデザパタって略し方はアホっぽいからやめた方がいいよw
>>368 自分より格下だと思い込んだ相手には延々語る知ったかPGっているよね。
一種のメサイアコンプレックスだよ。
>>369 ZendFramework 1.9.x + PHP5.2 + xdebugで稼働中のシステムのステップ別ベンチを取ってみたよ
●DB接続(SELECT3回発行)、セッション管理を行った場合
Smartyのコストは全体処理の15%程
●加えて細かいモデル処理等の複雑な処理を行った場合
Smartyのコストは全体処理の8%程
Smartyのコストの内約70%がファイルI/Oに起因するもの(config_load()等のファイルアクセス系)で、
render()やoutput_filterによるCPUコストはSmarty内で見ても10%に至らず、
複雑なテンプレートを処理しても数値上はほぼ横ばい。
●Zend_Viewに置き換えて空のテンプレートを処理した場合、
コストは全体処理の5%程
こちらも同じくrequire_onceが重く、ヘルパを増やせば増やすほど重くなるとおもわれる。
●結論
一切チューニングをしていないVMWare上の環境なので実際の細かい数値は変わるだろうけど、
フレームワークのViewをSmartyに置き換えたところで体感速度は変わらないと思う
>>363-364 > 簡潔でいいから具体案を出してくれよ?
> 例えばcakeとsymfonyで同じtemplateを使用するという要件を満たす場合どうするの?
Smarty View Class と sfSmartyViewPlugin を使う。
フレームワークにあわせた個別の方法で、
Smarty本体以外のライブラリを導入して、Smartyを利用可能にするわけだ。
・これはアダプタパターンではない
・Smartyだけではフレームワークに組み込んで使う事ができない
という点で、お前の主張は間違っているから、
間違った主張から導き出そうとしている答えも間違っている。
> Smarty自体がアダプタとして動作する
きちんと説明したのだから、きちんとした反論をして貰うよ。
「cakeとsymfonyでSmarty自体をアダプタとして動作させる」方法を説明してくれ。
>>371 なんかベンチという割に説明や数値が曖昧だな。
経験則で言っていいなら、まともなアプリで最も重いのはORMだ。
次がDBとテンプレートで、その次が設定ファイル。
DBにセッションを入れてるとか、RDBで無茶なORMの使い方をしているとか、
アプリのつくりがまともじゃないケースでは、Viewの差は取るに足らないだろうね。
十分に適切なアプリなら、応答時間に占めるテンプレート処理の割合はもっと高いはず。
少なくとも1/3から半分くらいだ。
なので、「速さを求める時にはテンプレートエンジンは避けたほうが良い」というのは、
生PHPとSmartyの比較と同程度に考えておいたほうが安全だと思うけど、
「速さをさほど求めない場合に気になるほどの遅さでもない」と思う。
50ミリ秒が100ミリ秒になっても別に困らないというケースも往々にしてあるわけで。
>>372 >Smarty View Class と sfSmartyViewPlugin を使う。
>フレームワークにあわせた個別の方法で、
>Smarty本体以外のライブラリを導入して、Smartyを利用可能にするわけだ。
お前はその「Smarty本体以外のライブラリ」の実装を読んだか?
インスタンス又は継承によるアダプタパターンだろ。
クラス名が異なっているが
>>350 で書いてあるのと全く同じアプローチだよ。
継承によるアダプタパターン。
>・これはアダプタパターンではない
>・Smartyだけではフレームワークに組み込んで使う事ができない
という結論が間違ってるので論外です。
君はデザインパターンを応用する事が出来ない様ですね。
>「cakeとsymfonyでSmarty自体をアダプタとして動作させる」方法を説明してくれ。
>>350に書いてあるが?Smatyを継承したアダプタクラスを挟むだけですよ?
CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
>>373 経験則で言っていいのなら、
管理画面はまだしも表向き表示で重さを気にするシステムにORMは極力使わない。
良くてコントローラ&モデル処理が8割、ビューは2割ってとこだろ。
反論あるならお前さんも、ステップ単位で処理時間をベンチとってくれや。
そしたら俺のベンチも詳細上げてやるよ。
ケースバイケースな結果になると思うが、
俺は実際動かしてSmartyとZend_Viewは大差無いという結論を出したのみ。
比較対象が生PHPなら遅いかもしれんが、FWに組み込むという意味では体感はかわらん。
>>374 オープンソースライブラリの具体名を挙げてるんだから、
実際にソースを読んでみればいいのに。
それと、
「Smarty自体をアダプタとして動作させる」と
「Smatyを継承したアダプタクラスを挟む」って、意味がまったく違うだろ。
具体的にアダプタクラスとは何か、きちんと説明してみ。
自分の矛盾に気づくから。
>>372 >・これはアダプタパターンではない
sfSmartyViewPluginは委譲による実装のアダプタパターンだな。
http://d.hatena.ne.jp/shimooka/20080714/1216021170 Smarty View Class も委譲による実装のアダプタパターンだな。
http://cakeforge.org/snippet/detail.php?type=snippet&id=6 以下は全く同じだな、委譲か継承したアダプタパターンだ。
CakePHP > CakeSmartyAdapter > template
symfony > sfSmartyAdapter > template
ZendFW > ZendSmartyAdapter > template
やっぱりお前デザインパターンすらわかってないよ。
基礎中の基礎アダプタパターンw から再勉強してくればいいよ。
>・Smartyだけではフレームワークに組み込んで使う事ができない
ちなみにFramework間の差異を吸収しないのであれば、Smartyをそのまま適用できるよ。
CakePHP > Smarty > template
symfony > Smarty > template
ZendFW > Smarty > template
使えないのは君の知識量だな。
cakeとか言ってる時点で駄目なにおいはぷんぷんするが。
>>376 お前さ「Smartyをアダプタにすればテンプレート共通化出来るよね」って言われて
「Smarty自体をアダプタとして動作させるのと、Smatyを継承したアダプタクラスを挟むって意味が全く違うだろ」
とか見当違いのツッコミするん?w
Smartyをアダプタとして使うって時点で普通、継承なり委譲なりのラッパークラスを想像すると思うが
・・・
>>350の例を見ても理解出来ないレベルなんか?・・・あまりに知識が無いのか、発想が貧弱なのか
・・・なんとなく君のレベルが見えて来たよw
誰も救われないから、大人しくcakeスレでシコシコbakeして設定ファイル量産してろよw
いつまで不毛な争いしてるんだか…
Smartyは内部でrequireしまくってるからけっこう重たかったな。
拡張モジュールで作られてるsimplateってやつはめっちゃ速かった。当然そこまで高機能ではないけどね。
確かに不毛だな。
実行環境(CPU/ネットワーク)自体の高速化と、フレームワークの肥大化によって、Smarty自体は相対的に軽いものになってしまった。
メリットデメリットはケースバイケースなのでひとくくりには出来ないし、
現場の知識や、制作者の好みで導入すればいいよ。
FWとSmartyどっちが良いか?両方メリットはあるよ。
FWとSmartyどっちが悪いか?両方デメリットはあるよ。
終結
メリットデメリットとかじゃなくて、Smartyを根絶やしにしたいだけだから
だからどういう目に遭ったらそんな深い憎しみを抱くんだよw
>>378 それは後だしジャンケンだな。
その屁理屈が成り立つなら、
「symfonyのテンプレートエンジンはアダプタである」とも言えるわけで、
「symfonyのテンプレートエンジンをcakeで使う」事も、
「symfonyのテンプレートエンジン自身がアダプタとして動作する」から、
まったく問題ないことになるじゃん。
Smartyとフレームワーク内蔵のテンプレートエンジンを比較して、
Smartyが有利であると主張していたはずなのに、
その根拠が、自分の屁理屈によって無くなってしまっているんだよ。
だから、間違った主張から導き出された答えが間違ってるよ、と指摘したんだけどな。
議論に勝ちたいからか知らんけど、自分の主張をころころ変えるから、
まわりから見てまったく意味不明になるんだと思うよ。
あと、cakeじゃなくてCakePHPだろ、といいたいのかも知れないけど、
最初にcakeという表現をしたのは
>>363だろ・・・。
俺は別に意味が伝わってるからどっちでもいいけど、墓穴掘るのはだいぶ恥ずかしいぞ。
何言ってんだこいつ
このスレを見ていて思うことだが、
「Smarty否定論者がSmartyを叩く書き込みをする」のと、
「Smarty信者が特に優位性の無い部分でSmartyを絶賛する」のは、
同じくらいスレにとって害悪だよ。
極端に言えば、Smartyに利点がひとつも無くたっていいじゃん。
間違った理屈で絶賛しても否定されるだけなのは当然だよね。
それなのに、なんでわざわざ、絶賛して否定される流れを作り出してるの?
それが単に絶賛してる人の知識不足に過ぎなくて、
「それは間違っているよ」と指摘されたら受け止めるというならわかるけど、
意固地になっておかしな主張を続けるもんだからまったく意義が無い。
劣っていようがなんだろうが、Smartyは現存していて、
実際に使っているユーザがいるんだから、その情報交換をすればいいのに。
現に、少なくとも客観的な表現で、
「Smartyと別のもののどっちがいいだろう?」
と質問している場合は、スレは荒れてないじゃん。心がけの問題だと思う。
あまりにもアホすぎてかける言葉も見つからんわ。
ガキのケンカは他所でやれ。
>>383 主題を変えてるのはお前だよ(都合の悪い具体的な質問はスルーだし)
君こそ論破が目的になってないかい?
>「symfonyのテンプレートエンジンはアダプタである」とも言えるわけで、
>「symfonyのテンプレートエンジンをcakeで使う」事も、
>「symfonyのテンプレートエンジン自身がアダプタとして動作する」から、
「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
symfonyとテンプレート構文を繋ぐ為のアダプタである、という意味であれば間違いではないが、
異なるフレームワークとテンプレート構文を介するアダプタである、という意味では無理がある。
議論の発端は、
フレームワークに密結合されたテンプレートエンジンを、
他のフレームワークで使うのは困難だから疎結合のSmartyをって話だろ。
何で密結合のもので例えてるの?
symfonyじゃなくてTwigとかsimplateに置き換えれば問題無いよ。
>Smartyとフレームワーク内蔵のテンプレートエンジンを比較して、
>Smartyが有利であると主張していたはずなのに
何度も書いてるが「共通のテンプレート」という要件の下に、
Smartyのメリットを主張してるだけで、全てにおいてSmartyが勝ってる等誰も言ってないよ。
>あと、cakeじゃなくてCakePHPだろ、といいたいのかも知れないけど、
違うよw 必死にSmartyを過去のモノにしたり、無駄知識と認定したいらしいが、
cakeも所詮はPHP4実装のレガシーフレームワークな上に、
Smarty以上に無駄知識が必要な設定ファイルが必要だよね。必死にbakeってれば?って事
いいからマズイケーキでも焼いてろよ。
>>380 で結論出てるじゃん。プロならケースバイケースで使い分ける。
>>383 有益な情報を得たいならまだしも、Smartyに興味も無く批判したいだけなら、他のスレに行けばいい。ここはSmartyスレ。
ふと読み返してみた。
>>314 Smartyを使うメリットってありますか?
>>315 フレームワークが生PHPなので、生PHPが主流だよ
>>317 フレームワークに依存しないSmartyが有利な面もあるよ
>>318 >>317を否定
>>320 疎結合のメリットもあるよ
>>324 疎結合より、フレームワークなら密結合の方が良いよ
>>327 密結合にもデメリットはあるよ
>>329 フレームワークの方が優れているよ。Smartyなんて誰もが知ってるわけでは無いし、使わない方がいいよ。
以下ループ(不毛なので読み返してない)
>>329 がフレームワーク至上主義かつSmarty批判が目的だったのが発端だな。
Smartyを使うメリットは?って話だったのに、1人だけ議論がフレームワークの優位性の話になっている。
俺はSmartyの組み込まれたソフトも使って儲けてます。
>>387 > 「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
その根拠は?
疎結合なsfTemplateEngineなら成り立つって解釈ではないのか?
>>387-388 「Smartyマンセー発言にレスした奴はみんな工作員だ!」
みたいな物言いをして、やれレベルがどうだcakeの悪口だと下らん批判に終始して、
自分たちとSmartyは絶対に正義なんだ、みたいな主張をしていること自体が、
カルト宗教ばりの気持ち悪さを醸し出していて、
かえってよくない結果を生んでいる事に気づいたほうがいいと思うよ。
>>329 その説明も事実とは誤っていると思う。お前の自意識と解釈はわかったけど。
頼むから喧嘩するな
>>314-329に対しての意見も述べておこう。
フレームワークに搭載されているテンプレートエンジンには、
密結合なものだけではなく、疎結合なものもある。
すべて密結合だと断定するのは間違い。
Smartyをフレームワークで使うには、連携のための処理を追加する必要がある。
これらの処理はフレームワークに依存する。
Smarty自体が自動的に連携をおこなうわけではないし、
Smarty公式がフレームワーク毎の連携ライブラリを提供しているわけでもない。
なので、フレームワークのバージョンアップによって、
上記の追加処理に変更が必要になる場合も当然に存在する。
ゆえに、
「テンプレートとしての構文の差を無くす為にSmartyが優れている」
という根拠は存在しない。
昔Smartyを使っていた人が惰性でSmartyを使い続ける事に対しては俺は異論は無い。
特に昔有名になった定番アプリみたいなやつにはSmartyが使い続けられているよね。
これをわざわざ新しいものにリプレースする必要は、個人的には感じていない。
だけど、トンデモ信者がやってきて、フレームワークでSmartyを使えとのたまうのは嫌だ。
フレームワークとSmartyは、親和性がすこぶる悪いからね。
やったことも無い人が「Smarty自体がアダプタになります(キリッ」とか言うのを見たら、
さすがに突っ込みも入れたくなるというものだわ・・・。
>>390 > 「symfonyのテンプレートエンジンはアダプタである」が成り立たないよ。
>その根拠は?疎結合なsfTemplateEngineなら成り立つって解釈ではないのか?
symfony を sfTemplateEngine に書き換えればえれば成り立つんじゃない?
>> 324からずっとフレームワークと密結合に拘ってるし、
Twig もあるし symfony=sfTemplateEngine という意味での発言とは思えないが。
ここに今、Smarty信者の敗北が決定したのでした。
(第一部完)
>>392 >フレームワークのバージョンアップによって、
>上記の追加処理に変更が必要になる場合も当然に存在する。
>ゆえに、「テンプレートとしての構文の差を無くす為にSmartyが優れている」
>という根拠は存在しない。
テンプレートエンジンとフレームワークの連携に調整が入る事もあるかもしれないが、
テンプレート構文自体に変更が入るような場面ってどんな時?
テンプレートエンジンが故意にフレームワーク依存を注入しない限り、
テンプレートがフレームワークの影響を受けることはあり得ないと思うが。
>昔Smartyを使っていた人が惰性でSmartyを使い続ける事に対しては俺は異論は無い。
惰性というより、既存リソースを捨て、学習コストをかけてまでリプレースする対象か?
と問われれば絶対にYESでは無いと思うよ。
フレームワークの機能をMVC別に区切った場合、ModelとControllerの機能だけでも十二分に便利だ。
当然Viewも包括して導入すれば、より恩恵は増すと思う。
でも
>>352 にも書いた通りフレームワークと一緒に毎回Viewまで覚えるのは手間がかかる。
自分1人ならまだしも、自分以外がテンプレートを担当しているような現場では、
新しいテンプレートを周知させるのはコスト的に厳しい面もあると思う。
Smartyはアダプタです(キリッ
>>390 >自分たちとSmartyは絶対に正義なんだ、みたいな主張をしている
・・・被害妄想怖いなぁw
自分たちとフレームワークは絶対に正義なんだ、みたいな主張をしだした
>>329がブーメラン浴びた結果じゃないの?
あぁ、自演か。
>>392 >ゆえに、「テンプレートとしての構文の差を無くす為にSmartyが優れている」
>という根拠は存在しない。
わー、凄いね。
君にとって以下3パターンを各フレームワーク上で動かす事と、
Smartyなり外部テンプレートエンジンで書かれた構文を各フレームワーク上で動かす事の手間は同じなんだね。
Zend <?php echo $this->escape($val); ?>
Cake <?php echo h($val); ?>
Symfony <?php echo $sf_data->get('hoge'); ?>
あとさ、Smartyに限らず、
「フレームワーク+外部テンプレートエンジン」ってソリューションは多々あるけど、
外部テンプレートエンジンを使いつつ、フレームワークに依存しちゃう構文ってどんなの?
遭遇した事ないんだけど、どんなロジック混ぜちゃってるの?
それともSmartyって言葉が嫌だったかな・・・?
「テンプレート構文を吸収する為にTwigやsfTemplateEngineが優れている」とか言えば満足かな?
>「Smarty信者が特に優位性の無い部分でSmartyを絶賛する」
こんなことしてるやついるのか?
どのレスのこと指してるんだ?ベンチマークとかの部分か?
どうでもいい。
俺はSmartyを「使う」からこのスレに情報を求めにきてるんだ
「使うべきか、否か」という話は別のスレでやってくれ。
ここは「使う」としたらどう便利に使うかというスレなんだ。
Smartyを理解している、使っている人はいちいち反論とかせずスルーしてくれ。
そのうえで荒らすために、反論を装うレスを荒らしがつけるだろうが、中身を理解してないからすぐわかるんだし
フレームワークがどうのこうの、密結合とか疎結合とか、御託はいい。Smarty死滅しろ
Smartyはそれ自体がアダプタです(キリッ
水を得た魚のように得意げになってるけど、
残念ながらSmarty自体がアダプタになるってのは間違いでは無いよw
確かにアダプタ的な要素もあるわな。
※以下、Smartyに限った話では無い。他のテンプレートエンジンに置き換えてもOK。
優劣を付ける目的でもありませんのであしからず。
●Smartyをアダプタとして考える
Client(テンプレート)はInterface(Smarty構文)に合わせておけば、
Adapter(Smarty)が適切に処理してくれる。
(Client) {$hoge|escape}(テンプレート)
(Target) SmartyInterface(Smarty構文)
(Adapter) Smarty
(Adaptee) htmlspecialchars()
上の場合、escapeの実装が変更になったり、htmlspecialcharsが廃止されたとしても、
Adapterの委譲先を変えれば良く、Clientは何も意識する必要は無い。
Adapteeがフレームワークだろうが、PHP以外の言語だろうが、Clientからすれば関係無く
Interfaceに従っておけばAdapterが対応してくれる。
フレームワーク独自のテンプレートエンジンも、上記パターンにあてはめる事が出来るが、
InterfaceがAdapteeを前提とした設計である事が多く、
Interfaceを維持したままAdapteeを変える事は現実的では無い。
当然、その設計による恩恵も多々ある。
しかし、デザインとロジックがきっちり分別されている場合、、
Interfaceに「変数処理、条件分岐、ループ、インクルード、フォーム系ヘルパ」程度があれば、
大抵のClientは実装出来てしまう場面も多々あると思う。
そんな場合はフレームワークから独立したテンプレートエンジンを採用する事で、
学習コストを減らし共通の構文が使える等のメリットを受けられる場合もある。
Smartyはそれ自体がアダプタです(キリッ
>>405 は Interface=Target と思ってください。
普通に考えてSmartyがAdaptee
でも識者はこう言うのだ。
「Smartyはそれ自体がアダプタです(キリッ 」
論点はそこじゃない。
意見ひとつまともに出来ないなら他へ行け池沼。
>普通に考えてSmartyがAdaptee
普通に考えてそれは無い・・・どんな図になるんだ?w
>>409-410 AdapterクラスがAdapteeであるSmartyを継承もしくは
Smartyに処理を委譲すると考えるのが普通。
能無し低級PGは何も考えずにガリガリ君のように実装してればいいんだよ。
>>411 テンプレートをClientとした場合、Smartyが構文差を埋めるAdapterになるよね。
って話なのに、普通はAdapterとして使わないとか言われても・・・
仮にClient=フレームワーク、Adaptee=Smartyとしても
>>405のパターンは適用される。
もう少し理解力と応用力を身につけような?
君の基準では普通なのかもしれないが、普通の考え方しか出来ない様では一生低級PGのままだよ。
A君「Client=1、Adapter=2とした場合、Client + Adapter = 3 だよ」
B君「Client=3、Adapter=4とした場合、Client + Adapter = 7 だな」
>>411君「普通Adapterは0だよね?能無し低級PG共めw」
A君・B君( ・・・なにこいつ(´Д`; )
一人で何やってんの・・?
自演するにしても文章の癖くらい消せよ・・
いい加減いつまでやってるんだ?
フレームワークやデザパタの話なんて興味ないんだよ。
隔離スレだった頃も、わざわざSmartyスレに来てSmarty批判ばっかり繰り返してたヤツもいたしな
自分の意見を通さないと気が済まないんだろうけど、そういうのは他でやってくれよな
ここはSmartyスレだからさ
池沼はコテハン付けてID表示して書き込めっての
NG登録できないだろ
池沼相手にそんなこと言ってもな
で、Smartyの優位性って結局なんなの?
>>419 用途次第で優位にも不利にもなる
解らないなら無理に使う必要は無い。
そんなことよりSmartyをアダプタとか言ってる時点でアレだよな。
>>405とかすげートンチンカンで笑える。
>>419 PHPにおいてテンプレートエンジンの優位性はほとんどない。
速度を犠牲にしてまで使う代物ではないと断言できる。
すべての場面に置いて使うべきでない限り使う道はあるからな
使い道が無いんじゃなくて使いこなせていないだけの間違いだろう。
未だに速度が云々言ってる奴は、ベンチマークすら取ったことの無い情弱。
Smarty使いはすぐキレる。
ゆとりかよw
Smartyはそれ自体がアダプタです(キリッ
Smartyはそれ自体がアダプタです(キリッ
Smartyはそれ自体がアダプタです(キリッ
Smartyはそれ自体がアダプタです(キリッ
Smartyはそれ自体がアダプタです(キリッ
>>421 >>405 の意味が理解出来ないのは自分が低級PGだと露見させているようなもの・・・ハズカチィ///
>>405 理解してるよ。
「Smartyはそれ自体がアダプタです(キリッ」ってことだろ?
デザインパターンなんて理解出来ない低級PGなんだなーと思った。
「smarty アダプタ」で検索したらこのスレしか出ねーw
>>405は自分がポンコツ低級PGであることを理解し、
泣きながら一生このスレで謝り続けるべき。
>>405 を 「Smartyはそれ自体がアダプタです」と読み取ったのであれば、もう少し日本語の勉強をした方が良い
正しくは「Smartyはそれ自体がアダプタにもなりえる」だ。
あと、検索するなら「Smarty Adapter」「Smarty Adaptor」が適切だよ
そもそも議題の趣旨を調べたいなら「Smarty フレームワーク」とかでね
調べ方すら知らない低級PGは2chスレ見てる場合ではないです(^o^
出ました、Smarty=フレームワーク発言。
フレームワークの意味分かってないだろ?
Smartyはライブラリであって呼び出される側。
OKかな?低級PG!
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
Smartyはそれ自体がアダプタにもなりえる
Smartyはそれ自体がアダプタにもなりえる
Smartyはそれ自体がアダプタにもなりえる
Smartyはそれ自体がアダプタにもなりえる
Smartyはそれ自体がアダプタにもなりえる
痛い発言の総合商社だなw
何でSmarty厨って厚顔無恥なんだろう。
Smartyがアダプタ?フレームワーク?
死ねよ雑魚。
言い返せないからってムキになってファビョルなよ・・・顔真っ赤だよ?
>出ました、Smarty=フレームワーク発言。
そのイコールはどこから出てきたんだい。まずは日本語から勉強しような?
Smartyをフレームワークで使うメリットっとは?て話からアダプタって話に派生してるんだ、
関連記事調べるなら「Smarty フレームワーク」で検索しろってことだ・・・アホに合わせてレスするのは大変だね。
>>435 お前上の方でデザイナにテンプレートはさわらせないとか騒いでた奴だろw
統合失調症か?一度精神科医に行った方がいいよ。
>>436 「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
「Smarty フレームワーク」とかでね
Smartyがフレームワークとは知らなかったよ。
ただのテンプレートエンジンだと思ってた。
凄いなぁSmarty馬鹿ってwww
Smartyはフレームワーク
そして何よりアダプター
これ、Smarty界隈の常識ですよ?
Smartyはフレームワークでありアダプターです。
Smartyとフレームワークの関係を調べる場合は、とりあえず「Smarty フレームワーク」で検索しないか?
そうでないと
>>429で「Smarty アダプタ」を検索した意図がわからんのだが、
検索エンジンすらまともに使えない池沼って事でOK?
自分以外全員迷子に見える人につける薬はないのか
ちょっと前まではまだ会話は成立していたような気がしたんだが
>>432-433みたいになっちゃったらもう病院行ってもらうしか…
Smartyはフレームワークでありアダプターにもなる。
これって素晴らしくね?
軽く煽るつもりが反論出来なくなって荒らしになる典型的パターンだな
次スレは池沼出入り禁止だからそれは無理だお(^ω^)
次スレのタイトルは
【フレームワークであり】Smartyスレ第3章【アダプターにもなる】
で決まりだな。
保存できないとかチラシの裏以下じゃね?
チラシの裏以上に使い道のない発言など保存する必要無いって事だろう
まあ、そうだなw
自演するならもうちょっと投稿時間考えてくれ
連投制限ちょうどの40秒間隔で罵りあいとか、もう見てて憐れで
また妄想で都合の悪いレスは受け流す・・・すか・・・
まじで病院行った方がいいよ。池沼。
うん。都合の悪いレスは受け流しちゃうんだ
だって都合の悪いレスに真っ向からぶつかっても、得るものないんだもの
久しぶりにここ見たけど、まだやってたw
この辺境の地ですげえな。
むしろこのスレで得るものあったのか?w
昔、よく質問に答えてもらって助かりましたので。
やっと使いこなす側になれたので、初心者がきたら(分かる所は)教えてあげられるかなと思って常駐してます。
ん?上の方で揉めてた人とは別人かい?
メンドクセーの相手にしないでよ。
持論を展開したいなら、自分のblogなりでやれば良いのに、相手にするからやり込めたくなったり、議論の為の議論にしちゃうんだからさ。
そうだな、じゃあSmarty3 RC2 の話でもするか。
各プロパティやメソッドが camelCaseや setter / getter になったのは嬉しいね。
今から勉強するならSmarty2系よりもSmarty3がいいですか?
勉強したいなら3でいいんじゃない?
業務で使うなら2のほうが枯れてて良いと思うけど
>>463 ありがとうございます
Smarty3はRCとのことですが、業務で使われるようになるのはいつごろになると思われますか?
>>465 Smarty2使ってる人はある程度自作プラグイン活用してるだろうし、乗り換えまでは少し時間かかるかもね。
全く初めてなら、ドキュメントやサンプルの揃ってる2から勉強するのもありかと。
ありがとうございます、2から触ってみます
3にする利点て何でしょう??
Smarty3はphp5.3に完全対応してますか?
していますん
Smartyなんて使ってる奴まだいたんだな。
COBOLやBASICすら現役なのに、プログラマの台詞とは思えないですぞw
釣られるなよ
本当のプロはSmartyなんて使わない。
まぁ趣味でやる分にはいいんじゃない?
本当のプロは依頼主の要望に合わせる
まぁ趣味でやる分には何を嫌おうがいいじゃない?
Smartyは激重だから使わない方がいい
比べればわかるSmartyは超高速。
for ($i=1 ; $i<100000000;$i++ ) {
$smarty->display('hello world.tpl');
}
for ($i=1;$i<1000000000;$i++) {
echo 'hello world';
}
そのふたつって同じ結果になる処理なのか?
Smartyが激重とか言ってる奴は、5年くらい前から知識とハードウェア構成が止まってるんだろうよw
お前ら、ちょっと相談ですけど、
CMSサイトをSmartyで作るとして、管理画面はSmarty使わずに
公開画面はSmartyを使ってるんですが、変ですかね?
管理画面は編集する必要ないと思っているので、使ってないのですが。
変じゃないけど、テンプレートを共有出来た方が楽な気はしないでも無い。
DreamweaverでSmartyの編集している人いる?
includeを反映させる方法「Dreamweaver Smarty でググると出てくる方法」
で反映させる事は出来たんだけど、デリミタタグを{{ }}に変更したら出来ない。
やり方知ってる人がいたら教えて下さい。
>>487 ぐぐって見たけど、複数のエクステンションがあるっぽいね。
どの方法でやってるか書かないと誰も答えられないと思うよ。
>>488 そんなに複数のエクステンションはないと思いますよ。
自分が試したのは「Dreamweaver Smarty」でググって一番上の方法と、
そのエクステンションの/transrator/SmartyInclude.htm(タグ置換ファイル)
の編集ですね。デリミタタグを{ }から{{ }}に変えるという。
なんでそんなぼかした言い方するんだ
どの方法で、どこで躓いているのかが解らないので答えようが無い
自作のMVCフレームワーク作ってるんだけど、
VをSmarty使うかどうか悩む。
Smartyにはエスケープとか日付フォーマットの変更とか使えるから、
Viewで表示を変える事は出来る。
でも、アクセス毎にコンパイルファイルが生成されるのが気になる。
サイト構造のディレクトリ分けの時とかさ。
意外とPHPフレームワークでSmarty使ってるって少ないんだよね。
Ethnaぐらいか?
>>492 コンパイルは最初の1回だけでは?毎回ソースをparseするよりは早くなるんだししょうがないっしょ。
あとはキャッシュ使うなりの運用じゃね?
Smartyって大抵のレンタルサーバーだと元から入ってるもんなの?
>>493 そうじゃなくて、templates_cとかcacheとかの置き場所に困るんだよ。
サイト構造的に、場面展開する時とかね。
あと、単純にコントローラーにSmarty変数を書いていくと
コントローラーが肥大化してしまうと言う悩みもある。
テンプレートファイルにPHP直書きだとそうでもないからね。
>>495 置き場所に困る意味がわからないのだが・・・適当な場所にディレクトリ作るだけじゃないの?
あとControllerにSmarty変数を書いてしまって肥大化ってのは、assignが面倒って事?
適当な場所に作るんだけど、
サイトが大きくなるとその管理・分け方が難しく感じる時があるんだよ。
あと、assignが面倒ってのは大きいね。
モデルからコントローラーに何らかの処理が渡って、
その結果をビュー(テンプレート)に渡すのが流れだけど、
ビュー内のSmarty変数に対してすべてassingするのが面倒。
もちろん、配列でassignして、テンプレでは
{$data.name}みたいな書き方も出来るけど。
>適当な場所に作るんだけど、
>サイトが大きくなるとその管理・分け方が難しく感じる時があるんだよ。
参考までに現在のプロジェクトディレクトリの構成教えてくれない?
俺はプロジェクリディレクトリ以下に templates/ templates_c/ chache/ を作ってる。
>あと、assignが面倒ってのは大きいね。
>モデルからコントローラーに何らかの処理が渡って、
>その結果をビュー(テンプレート)に渡すのが流れだけど、
>ビュー内のSmarty変数に対してすべてassingするのが面倒。
コントローラからビューに結果を渡す必要があるのだから、Smartyに限らずassignは発生すると思うよ
もし面倒ならコントローラに定義された変数を、自動で全てassignする機能を持たせればよいかと
その場合、コントローラ側で変数名変えたり、増やしたり、振る舞いを変えたりするとテンプレートにまで影響が出る可能性があるので注意だけど
自分用フレームワークなら、自分が使いやすい方で作るのが良いかと思う。
>>498 単純に「公開用」「会員用」「管理者用」の画面があった場合、
/templates_c
/html、/member、/admin(長くなるから横書きにした)
みたいな感じにするか
/admin
/templates
/templates_c
/cache
とするかそれぞれの好みに寄るだろうけど、
サーバにアップする時、ディレクトリ作ってパーミッションを777にして
とかいう作業が少し面倒に感じてね。
>自分用フレームワークなら、自分が使いやすい方で作るのが良いかと思う。
自分用フレームワークを他人が見ても分かる形にしたいからさ。
その時に、テンプレファイルで{$name}とするのと、<?php echo $name;?>
とするのと、一緒だと思って。
どこかで「ビューで表示を変える」というのを見たから
Smartyを使おうと思ったんだけどね。いまいち、使い方で悩むわけよ。
>>499 自分だったら
/templates/public/
/templates/member/
/templates/admin/
/templates_c/
/cache/
かな・・・ここらへんはプロジェクトディレクトリの構成によるから、
他のフレームワークを参考に決めればいいと思う。
>>自分用フレームワークを他人が見ても分かる形にしたいからさ。
で、あればView用Interfaceを作っておいて、
好きなテンプレートエンジンを組み込めるようにしておけばいいと思うよ。
実際に他のフレームワークとかビュークラスを触ってみれば良いよ
View用Interfaceを作ると結局、Smartyを使った方が良いよね
ってなるからな。
Viewとなるテンプレファイルはコントローラーで指定したいから
Interface作ると柔軟性に欠けるんだよな。俺の経験では。
フレームワークはEthnaとZendとCakeを少しかじっただけだから
まだ利点が理解できてないかも知れないけど。
ま、Smartyスレで「フレームワークのビューにSmarty使うってどうよ?」
って問いかける事自体おかしいのかもしれないがw
>>501 普通はフレームワークに柔軟性と自由度を与える為にInterface化するんだけど・・・Interface自体を思い違いしてない?
もしくはViewじゃなくてSmartyに依存しすぎたInterface設計をしてないかい?
横だけど、それぞれのモジュールの関連の深さによって、templates/templates_c分けた方が良いと思うな。
ディレクトリごと別のプロジェクトに移しても動くように。
ある意味、オブジェクト思考的なカプセル化というか、粗結合というか。
>>502 Interfaceを小一時間ほど勉強したけど、完全に勘違いしてた・・・
ただ、あまり利点(使い方)が思い浮かばない。
>で、あればView用Interfaceを作っておいて、
>好きなテンプレートエンジンを組み込めるようにしておけばいいと思うよ。
と言うのが想像出来ん。もう少し勉強してみるよ。
PHP5時代の今、まだSmartyなんか使ってるのがいたとはな
驚愕の事実だぜ。
そもそもテンプレートにPHPのコード書けば終いだもんな
キャッシュもob_get_contents使って自作すればいいし。
>キャッシュもob_get_contents使って自作すればいいし。
この一行で頭の悪さが露呈しているなw
いまだにPHP4.4.0なんだが
smartyのページキャッシュを使いたがらない人がいるんだけど、なんで?
PEARのキャッシュを使いたがるんだ。
いや、オレはSmartyのキャッシュ使ってるよ、超便利じゃん
PEARのキャッシュ使う人はSmarty使うページと使わないページがあって、それを統一したいとかじゃね?
>>507 Smarty自体がob_get_contents使ってるんだが。
キャッシュのグループ機能とか便利だよね
Smarty使うってことは
フレームワークの大部分はPHP5で記述して
ViewだけPHP4で書くのか?
ダサすぎなんだがw
フレームワークの大部分www全部じゃないの?PHP4混ざってんの?w
Smarty3はPHP5なわけだが・・・
>>516 日本語は正しく使おうね。
曖昧なままに書くから誤解されるんだ。
それから、冷やかし、煽り、中傷、その他他人が不快に思う言動は他でやってくれたまえ。
そんなことよりSmartyはアダプタですよ?
おい、cakePHPさんの悪口はそこまでにしとけよ!!
Smartyはそれ自体がアダプタです(キリッ
テンプレートはデザイナーにも自由に触らせます(キリッ
ほらcakeさんを馬鹿にしたから、厨が沸いちゃったでしょ!
誤って!cakeさんに誤って!PHP4でも凄いですね!って言って!!ほら!!
Smartyのprefilterで質問です。
prefilterには$tpl_sourceでテンプレートの中身(文字列)と、&$smartyが渡されるのですが
テンプレートのファイルパスを取得する方法はないでしょうか?
通常ならばセットしたテンプレートのパスがそのままなので問題ないのですが
{include}を使った場合に、インクルード「された」テンプレートのパスが分からないので困っています。
テンプレートのパスによってフィルタの挙動を変えたいと思っているもので…
スレチ失礼。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
まともな質問にレスすらつかないスレに宣伝されてもな
Smartyと何の関係もない宣伝ってどうなのよ
RC3来たよ。
RCいつ取れんだよ
そのうちとれんだろ
Smartyってそれ自体がアダプタなんだろ?
すげーw
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
Smarty それ自体 アダプタ
>>530 すごいよねw
何ていってもアダプタだしw
キーワード:Smarty アダプタ
compileとcacheの違いが分かりません!
実際のファイル見ればいいじゃない
compile ・・・ テンプレートをPHPコードにコンパイルしたファイル
cache ・・・ PHPコードを実行した出力結果のキャッシュ
>>536 >cache ・・・ PHPコードを実行した出力結果のキャッシュ
htmlということで宜しいか?
>>537 そう考えていいけど、キャッシュしない部分はそのままphpコードが残るはず。
教えてください。
$smarty->assign('arr',array(
'2010-07' => '7月のデータ',
'2010-08' => '8月のデータ',
));
の様にキーに-記号が含まれてる場合に
{$arr.2010-07}とすると
$arr[2010]-7みたいなパースになってしまうのですが
どのように書けばいいのでしょうか?
バッククォートでくくる
541 :
nobodyさん:2010/07/21(水) 04:35:28 ID: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です)
542 :
541:2010/07/21(水) 04:38:29 ID:giVfeoMU
Firefoxでの検証は「選択部分のソース表示」で
<div>
&gt;
<table class="tableH">〜〜
です。 すみません、半角で書いたら>に変換されたので全角に書き直しました
Smarty関係なさそうだけど。
テンプレートじゃないなら、変数確認したら。
Smarty アダプタパターン
Smarty アダプタパターン
Smarty アダプタパターン
Smarty アダプタパターン
Smarty アダプタパターン
それにしてもアダプタパターンは無いわw
蒸し返すなよ
土曜の夜に相手してくれる人がいなくて、よほど暇なんだろうよ。
「Smarty アダプタパターン」でググると・・・w
池沼の笑いのツボは理解できないぜ・・・w
眠い
552 :
nobodyさん:2010/09/01(水) 11:43:21 ID:13m9QA4U
/home/test/public_html/page/index.php
にSmartyコードが書いてあり、
/home/test/public_html/page/templates/
のテンプレートを参照しているとします。
相対パスで
/home/test/public_html/include/header.tpl
のファイルをSmartyテンプレート内で読み込みたいと思い、
{include file='../include/header.tpl'}
としたのですが、読み込めません。
上記を絶対パスで
{include file='/home/test/public_html/include/header.tpl'}
とすれば読み込めます。
相対パスで指定したいのですが、テンプレート内を修正するだけで
includeする方法はないでしょうか?
{include file='../../include/header.tpl'}
だとダメなの?
それか、templates/に入れてしまうとか
554 :
552:2010/09/01(水) 13:26:42 ID:13m9QA4U
>>553 はい。それだと「 Smarty error: unable to read resource」というエラーになります。
templatesに入れないのは、Smartyを使わない箇所でも読み込ませたいからです。
なので、相対パスで指定できるのがベストだと思い、質問しました。
パーミッション?
556 :
552:2010/09/01(水) 15:57:34 ID:13m9QA4U
開発しているのはWindowsXP上ですので、パーミッションではないと思います。
>>554 http://www.smarty.net/manual/ja/template.resources.php $template_dir の外に置かれたテンプレートを使うには、リソースの種類 file: を指定しなければなりません。 その後にテンプレートへの絶対パスを続けます。
とあるのでセキュリティ的な仕様かと。
絶対パスが嫌ならpublic_htmlをテンプレートディレクトリに含めるか、
テンプレートリソースを作るなりすればいいと思うよ。
$template_dir = array(
"/home/test/public_html/page/templates/",
"/home/test/public_html/"
);
{include file='include/header.tpl'}
558 :
552:2010/09/02(木) 10:21:12 ID:???
>>557 こういう、2つの領域を指定する方法もあるんですね。勉強になります。
出来れば、実行ファイルを修正するのは嫌だったのですが、
この方法を試してみます。ありがとうございました。
PHPのincludeは絶対パスのほうが早いらしいから、絶対パスにする癖をつけるのも悪くないんじゃない?
自分は設定ファイルにテンプレートディレクトリ、includeディレクトリなんかのパスを書いといて呼び出す時にそれプラスファイルまでのパスを呼んでる。
smartyなんて時代遅れですよ
今はdwooの時代ですよ
ドゥヲォォォ
DWOOが素晴らしいのは同意だが、いかんせん知名度が・・・('A`
せめて日本語ドキュメントがあれば推し進められるんだがねぇ
smartyが使えればそのまま移行できるから問題ない
smartyのドキュメントがdwooのドキュメントでもあるからね
564 :
しますよ:2010/09/16(木) 10:06:49 ID:???
一応日本語訳も作りましたからスレ立つぐらいになれば翻訳データ公開
dwooってどれくらい素晴らしいの?
dwooはsmartyの後継という立場で互換性と高速が売り
そんなにスゴいんならSmartyと入れ替えるよ
dwooでわからない事があるんですけどどこで聞いたらいいですか?
>>568 筋でいえば作者でしょ。
プログラマで英語できないとけっこう致命的じゃない?
聞くのは2ちゃんでです
Smartyと互換性があるって、もしかしてSmartyAdapter使った場合ってこと?
>>568 スレ立ててもいいんじゃない?
このスレと対立しそうだけど。
過疎ると思うけどここはsmartyスレだし別スレ立ててください
そもそもSmartyもdwooも導入しちゃえばそこまでじゃないの?
前スレも大した情報交換もなかったしね
よーし、ドゥオー導入しちゃうぞ
Smarty作ったやつも使う奴もセンスがどうかしてる
Dwoo作ったヤツのセンスは?
たかだが道具に目くじら立ててる方がどうかしてるw
DWOOはAdapter機構が良い感じだね、
フレームワークのViewHelperを活かしつつSmarty風に構文書ける。
ただし、2月から更新停滞しているのが怖い。
>>579 新しいものを導入したい気持ちはわかるが、
せめてSmartyと比較するなり、詳しく紹介してくれないとスレ違いというか、
誰もまともに見てくれないかと・・・
個人的にはDWOOの構造は好みなんだが、
安定性、ベンチマーク、導入実績のレビューが無い時点で本格導入には躊躇している(Smarty3も同様だが)
ベンチマークなんて自分で取ればいいだろ
信用たるベンチマークはそう簡単に取れるものでは無いけどな
ちゃんとしたベンチマークを取る知識もないなら気にせず使いたいものを使え
今時PHPでテンプレートエンジンてw
どれだけ情弱だよw
じゃあ今どきの流行は何なんだ
今どきの流行
<html>
<head><title>ほげ</title></head>
<body>
<h1>ほげテーブル</h1>
<?php
$conn = mysql_connect('hostname', 'username', 'password');
mysql_select_db('dbname');
$res = mysql_query('SELECT * from table_hoge');
while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
echo $row[0] . "<br>\n";
}
?>
</body>
</html>
HTMLにコード入れ込むもキモ
相手にするなよw
PHP自体がテンプレートエンジンですとか言いたいんだろw
Smartyに興味があるんですけど、目的があまり理解できないので教えてください。
HTML内で<?= ?>を使うのとSmartyの{ }を使うのは、意味合いが違うんでしょうか?
そっちで悩むのか
興味があるならググるなりスレを読むなりすればいい
592 :
589:2010/09/27(月) 23:16:47 ID:???
先日から、Smartyが使われたソースをいじってるところなんです。
最初は「何だか良さそう!」って思ったんですが、だんだん良さがわからなくなってきました。
デリミタを<{ }>にしてたが最近打ち辛さを感じてきた
キーをカスタマイズするソフトを導入すりゃあいいじゃん
[と]をタイプすると{ }が入力されるようなのをAutoItかAHKで作るといい実際俺はアンダースコアで利用してる
>>592 ここは偏った意見しか貰えないから、おとなしくググった方がいい。
安心しろggっても同じだから
dwooのプチ日本語訳載せたいんだけどここに書いていい?
いいよ
assign テンプレート変数を割り当てる
capitalize 変数内の全ての単語の先頭を大文字にする
cat 与えられた変数に値を連結する
count_characters 文字数をカウントする
count_paragraphs 段落数をカウントする
count_sentences 文の数をカウント(日本語の「。」は未対応なのでcount_sentences.phpをカスタマイズする必要がある)
count_words 単語数をカウントする
counter カウントした回数を表示する
cycle 値の設定に従って循環する
date_format 与えられた フォーマット文字列によりフォーマットし、日付文字列を返す
default 変数のデフォルト値を設定
do
dump 変数に関する情報をダンプする
escape 文字列をエスケープする
eval 文字列をコードとして評価する
extends
fetch 指定したファイルを取得し、表示する
include 現在のテンプレートに他のテンプレートを挿入する
indent 各行で文字列をインデントする
isset 変数がセットされていること、そして NULL でないことを検査する
load_templates
lower 文字列を小文字に変換する
mailto メールアドレスのリンクを作成する
math 数学の計算を実行する
nl2br 改行文字の前にHTMLの改行タグを挿入する
optional 割り当てられてない変数が呼び出されたときにエラーを出さない (独自解釈)
regex_replace 正規表現による検索・置換
replace 文字列を置換する
reverse 逆順に並べる
safe optionalと同じ? (独自解釈)
spacify 文字間に特定の文字を挿入 (第一引数string $valueに日本語を含めると文字化けする)
string_format フォーマットされた文字列を返す
strip_tags 文字列からHTMLおよびPHPタグを取り除く
tif 三項演算子で評価する (独自解釈)
truncate 指定した長さで文字列を切り捨てる
upper 文字列を大文字に変換する
whitespace (strip) 全ての空白文字を指定した文字列に置き換える
wordwrap 指定した長さでワードラップする
■Blocks
auto_escape ブロック内をエスケープする
block
capture タグの間のテンプレートの出力を集め、 それをブラウザに表示する代わりに変数に受け渡す
{* comments *} コメントの書式
dynamic
else
elseif
for
foreach
foreachelse
forelse
if
literal タグに囲まれたデータのブロックをリテラルとして認識させる
loop
strip 各行の最後にある空白文字・改行を削除する
template
textformat テキストを整形する
with
509-601までどぉおおおおお
ちなみに和訳じゃないので
おれがどぉおおおしても直したいのは↓
・出力時に行の終わりに半角スペースが入る
・spacifyの第一引数を日本語対応させる
・stripで全角スペースにも対応させる
safeの解釈がまったくあってないぞ。
>>604 じゃあ正しい解釈をここに書いて
どうぞ↓
セイフ
>>605 safe = 文字列の場合のみエスケープする
英語が理解出来ないなら、独自解釈する前にソースコードくらい読めよ・・・
>>605 引数への auto-escape を無効にする
翻訳してもらっといて、
間違うくらいならするな、っていうのは、ほんと日本人の粗探し大好き性格やわ。
プラス評価はしない。やって当たり前だから。
マイナスは3倍評価。ちょっとの間違いでもこれでもか、というくらいこき下ろす。
翻訳者乙。
>>599-601 が意味のある翻訳とは思えないが?何を評価して欲しいの?
構文の概要だけ(憶測で)翻訳されても、とっかかりにもなりゃしないよ。
国のトップがあれじゃあ国民もこうなるわなw
日本語は分からないけどソースには
* Marks the variable as safe and removes the auto-escape function, only useful if you turned auto-escaping on
* <pre>
* * var : the variable to pass through untouched
* </pre>
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from the use of this software.
と書かれている
>>607と
>>609は正しいの?
>>607 >>609 >>613 function Dwoo_Plugin_safe_compile(Dwoo_Compiler $compiler, $var)
{
return preg_replace('#\(is_string\(\$tmp=(.+)\) \? htmlspecialchars\(\$tmp, ENT_QUOTES, \$this->charset\) : \$tmp\)#', '$1', $var);
}
コード見た限りではオートエスケープを削除でOKかと。
・・・にしても酷いコードだなコレw
Smartyってそれ自体がデザインパターンのアダプタらしいね。
そ い つ は す げ ぇ !
>>615 このスレがお前のくだらない人生の拠り所になってるということだけは分かった
何かツライことがあったらいつでも来ていいんだよ
良く他人に対してそんな言い分出来るな。どんな性格してるんだ
>>615 Smarty自体がアダプタとかまだ言ってんのか。
そんなわけねーだろ。バカじゃねーの?
アダプタ派とアダプタじゃない派の2つの意見を誰か分かりやすくまとめて
>>620 捕らえ方が違うだけ。
テンプレート構文とPHP(フレームワーク)を仲介する為のアダプタと考える事も出来るよね派(
>>320)
と、それを否定する派がいる。
623 :
nobodyさん:2010/10/07(木) 00:00:19 ID:7XdpeleK
■C:/Apache/htdocs/templates/index.tpl
{$test}
■C:/Apache/htdocs/index.php
<?php
require('C:/Apache/htdocs/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = 'C:/Apache/htdocs/templates/';
$smarty->compile_dir = 'C:/Apache/htdocs/templates_c/';
$smarty->config_dir = 'C:/Apache/htdocs/configs/';
$smarty->cache_dir = 'C:/Apache/htdocs/cache/';
$smarty->assign('test', 'Smarty Test');
$smarty->display('index.tpl');
?>
は表示できましたが
http://www.smarty.net/manual/ja/installing.smarty.extended.php を参考に
>>624のように書き直すとindex.tplが読み込まれなくてエラーになります
624 :
623 つづき:2010/10/07(木) 00:01:02 ID:7XdpeleK
index.phpの$smarty->displayを絶対パスで指定すると問題なく表示できます
setup.phpの$this->template_dirに設定した絶対パスは何度も確認したのですが合ってます
どなたかご教示お願いします。
■C:/Apache/htdocs/setup.php
<?php
require('C:/Apache/htdocs/libs/Smarty.class.php');
class Smarty_Test extends Smarty {
function Smarty_Test() {
$this->Smarty();
$this->template_dir = 'C:/Apache/htdocs/templates/';
$this->compile_dir = 'C:/Apache/htdocs/templates_c/';
$this->config_dir = 'C:/Apache/htdocs/configs/';
$this->cache_dir = 'C:/Apache/htdocs/cache/';
}
}
?>
■C:/Apache/htdocs/index.php
<?php
require('setup.php');
$smarty = new Smarty_Test();
$smarty->display('index.tpl');
?>
625 :
nobodyさん:2010/10/07(木) 00:01:58 ID:7XdpeleK
バージョンはsmarty3β4です
エラーメッセージは?
Smarty使う人って、基本的にフレームワーク使わないよね?
そもそもFWのビューがテンプレートエンジンっぽいし。
オレオレフレームワークにSmartyを取り込んだ。
それは俺もしてる。やっぱ、オレオレ向きだよな。
631 :
623:2010/10/10(日) 21:55:42 ID:???
解決できなかったので正式版になってからにしました
>>631 623-624の質問自体釣りだと思ってたwww
エラーメッセージくらいだしたらどうだ?
633 :
623:2010/10/11(月) 10:00:47 ID:???
PHP5.3
エラーはこうなりました
Fatal error: Uncaught exception 'SmartyException' with message 'Please use parent::__construct()
to call parent constuctor' in C:/Apache/htdocs/libs/Smarty.class.php:730
Stack trace: #0 C:/Apache/htdocs/setup.php(5): Smarty->__call('Smarty', Array)
#1 C:/Apache/htdocs/setup.php(5): Smarty_Test->Smarty() #2
C:/Apache/htdocs/index.php(1): Smarty_Test->Smarty_Test()
#3 {main} thrown in C:/Apache/htdocs/libs/Smarty.class.php on line 730
634 :
623:2010/10/11(月) 10:08:56 ID:???
コンストラクタを使うことで解決しました
PHP5.3の場合のみなのかわかりませんがこう書くといいみたいでした
$this->Smarty();を
↓
parent::__construct();に書き直す
Windowsなんかでよくやるなぁ。
本番はどうせlinuxだろ?なら、開発もそっちでやったほうがいいような。
自分はPCのときはcoLinux使ってたが。
UnixなMacは生ローカルでできていい。
Mac(笑)
デスクトップ買ったらVPC上にLinuxを動かしたいのだ
テスト用に1個さくらvps借りとけばいい気がしてる
さくらvpsはガチ本番用です
レンタルサーバをテストに使うなクズ
物理サーバに対して2〜3なら暴走しても他に影響しないって言ってるし、なんか問題あるんだっけ?
暴走してもマジで影響ないのかな?
自宅鯖ですら影響あるのに。
テストはローカルでやるのが常識だろクズ
>>632 クラスやオブジェクトは苦手な人かな?
どうみても釣りには見えなかったが・・・
思った、PHP5のオブジェクト指向を分かってない人が多いよね
smartyの解説サイトがphp4の書き方で書いてるのが多いから
解説サイトはSmarty2が対象だからな
smartyの古い解説サイトは滅びるべき
いや、情報をまともに扱えない素人が滅びるべき
古い解説があるからまともに扱えないわけで
古いっつってもSmarty2を使いたい人には必要な情報だから・・・
Google検索で過去1年とか期間していすればいいんじゃないかね?
解説のせいにしてるのはただの情弱だよ。
くだらねー話題で顔真っ赤になってんじゃねーぞ
PHPのオブジェクト指向ってオブジェクト指向に徹しきれてないよね。
C#とかJavaと比べると
徹すると初心者が近寄れなくなるからな
で、Smartyと何の関係が?
いや、
>>646がPHPのオブジェクト指向が分かってないねって
オブジェクト指向勉強するなら、Javaとかのほうがいいじゃんと思った
徹しても、徹してない今の状況でも初心者はオブジェクト指向でコード書かないっしょ
Smartyの話はしてない
OOPを理解出来るかどうかは、言語とはあまり関係無いかな。
Java使っても理解出来てない人はOOP出来ないから。
まぁそうなんだけどさ、
やるならって話だとC#とかの方が良くない?
理解できなきゃ、ってかオブジェクト指向の存在、ありがたさ知らなきゃ
できないし初心者PHPに必要ないだろうよ。
例えばJava,C#でOOPできてたらPHPでもそれなりに出来るじゃん。
PHPのOOPでコード書けても、Javaでは戸惑ったりするんじゃないか。
Smarty関係なくなっちゃったけど、
Smarty使うことによって.NETっぽくコーディング書けるじゃね
あんまりSmartyのことしらんけど。
JavaとC#はIDEが優秀ってのもあるよね。
綺麗なコードを書けば書くほど開発効率上がるし、IDEがエラーを検出して教えてくれる
PHPは未だにテキストエディタで書いて、手動でサーバにアップロードして、動作テストとかしてる人多いからなぁ
そうだね
Visual Studioはすごく使いやすいし、IISとかSQLServerとかがガッチリ肩組してるね。
PHPもEclipseで開発してるけど、VSには勝てないなぁ。
logicは共通でテンプレ内で使う変数も共通なんだけど
サイトごとにデザインが違うためにコーダーによって組み方が全然違っているせいで
テンプレ内の条件分岐なんかをサイトごとにファイル開いて手動修正してるんですが
何か良い方法ないですかね・・・
(デザインの固定はお客さんの要望に柔軟に答えられなくなるので難しいです
具体的にどんな条件分岐?
基本はログインしているかどうかなんですが
そこから商品の内容に応じたテーブルの生成やタグの出力、
表示内容の追加に伴う変数の追加といったところです
難しいところだね。
その条件分岐がViewロジックとして適切なのであれば、
コーディング規約決めて統一するしかない。
サイトごとに、デザインが異なるのであればコードが変わるのは必然・・・・
やっぱり難しいですよね・・
ちょっと呼び出す変数を変えるだけでも
数十あるクライアントをひとつひとつFTPで入って修正していくのが大変で・・
とはいえご回答ありがとうございました!
修正してからUPすれw
>>665 何がしたいのかよくわからんが、
独自プラグインを作るなりで対応出来そうな臭いがする。
668 :
nobodyさん:2010/11/03(水) 12:26:10 ID:2+LMcIpA
DBからのselectの結果、値が入ったときに以下の形になる配列があります
$ary=array(
array('name'=>"A", 'age'=>1),
array('name'=>"B", 'age'=>2),
array('name'=>"C", 'age'=>3)
)
もしDBにデータがない時は、要素を全部NULLで初期化して以下のようにしています
$ary = array(NULL, NULL, NULL);
この条件で
{foreach from=$ary item="item"}
名前:{$item.name|default:"名無し"}さん
年齢:{$item.age|default:0}歳
{/foreach}
としても「名無しさん 0歳」と出力されず困っています。
$ary = array(array('name'=>NULL, 'age'=>NULL), …);の形で初期化&assignするしかないんでしょうか?
カラの配列をitemに指定されたとしても($ary自体がNULLだとしても)上記のように
default値をセットして出力出来たら最高なんですが。
ご意見お願いします。
default修飾子は以下の実装になってるから、修正するか新しい修飾子作っちゃえばいいんじゃないかな。
function smarty_modifier_default($string, $default = '')
{
if (!isset($string) || $string === '')
return $default;
else
return $string;
}
・{%if $item}{%/if%}で囲う
・assignする段階で不要な要素を$aryから取り除く
・assignする段階でNULLを空文字列に置換する
とかでも。
671 :
nobodyさん:2010/11/03(水) 12:51:43 ID:2+LMcIpA
>>669 ホントありがとうございます。なるほど、default修飾子の実装内容を確認すれば良かったのかー
もう一つすみません。sectionでmaxっていう機能がありますけど、
アレって配列の要素が10個あったとして最大で5回しかループさせたくない時に使うんですよね?
10個の配列に対して15回ループさせて該当要素のない5個分はデフォルト値を割り当てると
したかったんですがムリですか? 実際に試してみたら10回しか出力しませんでしたが。。
というか、テンプレートの記述内容を単純にループ処理させるsmartyタグってないんでしょうか?
ループする回数はloop属性じゃないかね
673 :
nobodyさん:2010/11/03(水) 12:54:12 ID:2+LMcIpA
>>670 やっぱりifを使うのが単純ですよね〜
なんか美しくないなんて思ってしまう…
どうもありがとうございました
675 :
nobodyさん:2010/11/03(水) 13:05:28 ID:2+LMcIpA
>>672 え! loopってassignした配列を割り当てるんですよね?
…と、調べたらわかりました
{section name="hoge" loop=10}
{assign var="idx" value=$smarty.section.hoge.index}
{if $dbResult.$idx}
<input type="text" name="name" value="{$dbResult.$idx.name}" />さん
<input type="text" name="age" value="{$dbResult.$idx.age}" />歳
{else}
<input type="text" name="name" />さん
<input type="text" name="age" />歳
{/if}
{/section}
ってやり方でOKだ
>>671 ちょうどそれの使い道理解出来たとこでした。ありがとうございます!
(上にあるような10件くらいの一括登録/編集フォームをつくりたかったんです)
foreachとsectionの違いも何となく理解出来ました。ありがとうございました!
676 :
nobodyさん:2010/11/14(日) 06:59:06 ID:JLmGfYbT
Smarry3リリースされたんだな
677 :
nobodyさん:2010/11/14(日) 07:01:14 ID:JLmGfYbT
>>676 打ち間違い
×Smarry3
○Smarty3
かなり前にね。
でもうちはまだ2.6
新規開発でもしない限り乗り換えるほどのメリットは感じないしな
無理に乗り換える必要性は無いが、
math構文とかforeach構文とか地味に使いやすそうでウズウズするのが制作者ってもんよ。
新規案件あったら乗り換えたいが、安定性だけが怖い。
Smarty3でclearCacheしたあとにdisplayさせると
assignさせてもうまくいかないな…
Smarty3では、Javascriptを、{literal}で囲まなくても
良くなったの?
(当方英語が苦手なので英文読んでも合ってるか自信がない)
PHPフレームワークの学習をしようとしています。
今までのスキルを活かすため、ビューにはSmartyを使いたいのですが、
Smartyを1番無理なく使えるフレームワークは何でしょうか?
今の所、CakePHPかZendFrameworkを考えています。
本質的にはMVCは独立しているべきでありまともなFWであれば何を使っても無理なく導入できるはずでありうんたらかんたら
コントローラやモデルはルールが多いCakeを主体にして統一感を持たせて
足りない機能はZendをユーティリティとして使い
ビューは好きなの(今回ならSmarty)選ぶ
smartyの利点を余すことなく使えるかどうか
>>682 Zendに一票。
覚える方言が少ないので、比較的学びやすいと思う。
その後で他のフレームワークを触ってみればいい。
Smarty3.0.5で、テンプレ内に、
{$foo = array("k"=>"v")}
と書くと、エラーになってしまいます。
これ(エラーになること)は仕様でしょうか?
{$foo["k"] = "v"}
ならOKなので、上述の書き方が許されても良い気がするのですが・・・
688 :
682:2010/12/05(日) 06:54:26 ID:???
>>683, 684, 685, 686
まずは686さんのアドバイスに従い、Zendでやっていこうと思います。
皆様、アドバイスありがとうございました。
>>687 配列の要素への代入が=で可能になったというだけであって
{}内にPHPの文法をそのまま使えるようになったわけじゃないからな。
Smarty2.xの自作テンプレートがたくさんあるのだが、
Smarty3用に書き換えようか、悩む・・・
$a['id'] = xx;
$a['name'] = yy;
である変数$aをテンプレートに渡すと、
{foreach $a as $key => $value}
と書けばキーと値を順次取り出せますが、
$a->id = xx;
$a->name = yy;
である変数$aをテンプレートに渡す場合、プロパティ(id, name)と値 を
順次取り出す方法はあるのでしょうか?
{foreach $a as $key => $value}
693 :
691:2011/01/03(月) 14:31:48 ID:???
>>692 出来ました!
ありがとうございますっ!
echo date("Y")
をSmartyで確認はどうすればいいですか?
{date("Y")}
このスレッドにはSmarty布教者がいるようですね。
俺みたいな駆け出し若輩ド素人には、大変心強いデス。
ありがとうございます。
マニュアルくらい読めよ
馬鹿発見。
あ、697のことね。
そりゃお前だろw
smartyのスレなんだからスマートにいこうぜ
アニキぼすけて
{$test[$k].sample1} {$test[$k].sample2} {$test[$k].sample3}・・・と出力したいのですがどうしてもうまくいきません
{assign var="x" value=1}
{foreach from=$test key=k item=val }
{$test[$k].sample{$x}}
{assign var="x" value=$x+1}
{/foreach}
>>701 Foreachの中の最初に assign で sample2 とかいう値を別の変数にいれて
それをキーに使えや。
{$test[$k][`sample$x`] とかで出来なかったっけ。
>>702 神様ありがとう
配列用の配列というのが考えつかんでした
>>703 やってみたけどだめだったざます
$test[$k][`sample{$x}`]とか$test[$k][`sample.$x`]とか
"sample$x"
>>705 残念な結果に終わりましたが助言ありがたきしわわせです。
Smarty error: [in test.tpl line 31]: syntax error: unrecognized tag: $test[$k]."sumple$x" (Smarty_Compiler.class.php, line 436) 以下省略
$test[$k].["sumple$x"]でもエラーでした。
配列の配列を作るのが無難ぽいですね
連レスご容赦くださいまし。
×Smarty error: [in test.tpl line 31]: syntax error: unrecognized tag: $test[$k]."sumple$x" (Smarty_Compiler.class.php, line 436) 以下省略
○Smarty error: [in test.tpl line 31]: syntax error: unrecognized tag: $test[$k]."sample$x" (Smarty_Compiler.class.php, line 436) 以下省略
$test[$k]["sample$x"]
>>709 おこらりましたが助言ありがたうございます
Smarty error: [in test.tpl line 27]: syntax error: unrecognized tag: $test[$k]["sample'$x'"] (Smarty_Compiler.class.php, line 436)以下省略
というか[]を使うと変数を使う前からだめっぽいです
$tast[$k].sample1 → もちろん問題なく表示される
$tast[$k][sample1] → 何も表示されない。@debugでemptyが帰ってくる
$tast[$k]['sample1'] → エラー
$tast[$k]["sample1"] → エラー
アァンバッククォートでした大変失礼いたし
しかしバッククォートでもエラーでした
Fatal error: Smarty error: [in test.tpl line 27]: syntax error: unrecognized tag: $test[$k]["sample`$x`"] (Smarty_Compiler.class.php, line 436)
Smarty3にしてsmarty.class.phpをインクルードしたら
オートローディングできなくなった。
解決できなかったのでSmarty2にもどしたよ><
Smarty2から3にするメリットってあるのかな・・・?
よくわからん。
ありまくり
テンプレートエンジンにそこまでの機能いるのかって気もするので2系と3系で分岐したらいいかも・・・
>>715 ありまくり?
Javascript内で {literal} が不要になったことくらいだと思うけどなぁ・・・
あ、あと、foreach の構文がPHPと同じになったことだな。
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
でいけるのはちょっと嬉しい。
あ、あとテンプレートの継承ができるのが便利
結構、便利な事あるじゃんw
記述がスマートになったのはでかい
2.xはちょっとした計算が必要なだけなのにassignが必要だったりするからな・・・
フレームワークにSmarty組み込む例をよく見るんだけど、重くならないか?
素のPHP+Smartyなら分かるんだが
別にZFにSmarty組み込むのもありだし
マルチスレッドなApacheで、コンパイル済みのテンプレ処理するだけなら
そんなに遅くならないんじゃねぇの?
それでも遅さが気になるなら、DBのチューニングが先だと思うぞ。
>>725 散々言われているが今のハードウェア環境なら微々たる差しか出ない。
キャッシュとか駆使するのであればむしろ軽くなる事だってある。
>>726 俺もオレオレに組み込んでるなw
>>728-729 散々言われてない気がするけど、xdebugとかで内部処理見たか?
FM×Smartyの処理が重なって凄い処理時間になってるぞ。
キャッシュ使っても動的なサイトだとあまり意味無いと思うし。
CakePHPに組み込んだけど、Cakeの書き方になるから
Smarty本来の使い勝手も失われるし。
(Cakeは配列中心だから、そのままSmartyで使うのは難がある
そう言うわけで、「重い」ってのは動作だけじゃなくて、
制作コストが通常よりかかる=重い(遅い)というのが言いたかった。
せっかくフレームワーク使ってるのに、
余計な処理を加えて開発が遅くなるなら意味無いなってね。
>>730 FMって何か分からんけど、動的なサイトだと意味ないって具体的にどんな場合?
>>731 製作コストが通常よりかかる?FWは開発効率を上げるために使うものだと思うが。
>>730 CPUリソースなんて0.001%の負荷が0.005%になった程度じゃね?
一般的にはDB、ネットワークリ、ファイルI/Oが主なネックになるから、
Smarty導入した程度で悲鳴上げるサーバなんて今時無いだろうよ。
>>731 >制作コストが通常よりかかる=重い(遅い)というのが言いたかった。
これは逆もしかりだろ、
フレームワークに依存しないテンプレート構文が使える事で、
導入コストも制作コストも下げられるって人達もいるわけだ。
要は君がSmarty使いこなせてないから、手間がかかると感じているだけだろう。
自演乙
自演認定というキモい流れを作った
>>735がいちばん悪い
>>732 すまん。FWの打ち間違いだった・・・
ちなみに動的サイトというのは、トップページやサイドバーで
情報が変わるポータルサイトだな。ブログはキャッシュが効くから違うと思う。
>>734 前者はもちろんデバッグして検証した上での意見だよね?
リソースは別にしても実行速度には明らかに違うが出るよ。秒単位で。
そりゃ、多重鯖構造にして負荷分散したら鯖自体の負荷を下げられるだろうけど。
後者は俺が使っているCakePHPの問題なのか、FWに依存した書き方になるんだが。
Cake+Smartyの書き方を覚えなければ行けないから、通常より時間がかかる。
どちらか一方だけの取得では無理。使いこなす・こなせないの問題じゃないだろ。
Zend Framework + Smartyでやってるが、Frameworkに依存した書き方になると感じた事は無いな。
Smartyって
{}
になってるけど、
これって変更できんの?
できる。それは「デリミタ」と言うのでググるときに使ってください。
ちなみに俺は<{}>してる
>>744 さんくす!
<smarty />で使ってみたけど見やすくなるね
<smarty $test />とか
sectionしてみたら
<smarty section name=cnt loop=10 />
a
<smarty /section />
閉じタグ変になってワロタwwwww
これって<smarty :section />みたいに変更できないのかな・・・?
>>746 信じられないかもしれないが、実はSmartyはPHPで書かれている。
つまり・・・PHPが書ければ自分の好きなように改造し放題ってことさ!
>>741 >リソースは別にしても実行速度には明らかに違うが出るよ。秒単位で。
Smartyが原因で、秒単位で動作が変わる事はありえない。
そんなサーバでSmartyより大規模なcakeが動くとは思えない。
確実にどこかで設計ミスしてるでしょ。
>後者は俺が使っているCakePHPの問題なのか、FWに依存した書き方になるんだが。
設計ミス。
普通はSmarty側からは、Cakeを意識しないように変数なりをassignしてやる。
>>741 >>FM×Smartyの処理が重なって凄い処理時間になってるぞ。
>>キャッシュ使っても動的なサイトだとあまり意味無いと思うし。
>ちなみに動的サイトというのは、トップページやサイドバーで
>情報が変わるポータルサイトだな。ブログはキャッシュが効くから違うと思う。
トップページやサイドバーが情報変わるからキャッシュ使っても意味ないというのは、
FW使わなくても重さは同じでは?
SmartyのキャッシュはSmarty記法のパース結果をキャッシュしてくれるものだと思うけど。
FW/Smarty関係なくない?
>>748 「ありえない」っていうけど、もちろん実際に試した上での意見だよね?
俺にはあんたが机上の空論で「そんなわけない!」って
現実見ようとしていないだけにしか受け取れないんだけど。
>>749 PHP→Cake→Smarty と PHP→Cake
と、どちらの方が処理が少なくなるかを考えたら、違いが出て当然だと思うけど。
俺が言う事に対して批判する奴は実際に試した事あるのか?
xdebugなり、Apacheのベンチなり試す方法はいくらでもあるだろ。
確かに設計は悪いかも知れないが、自分の作業した範囲・経験でしか話せないし、
他のみんなはどうか?と思ってググれば「重い」と出る。
ならやっぱり重いよなーと思って書いたまでに過ぎない。
別にFWもSmartyも批判するつもりはないよ。
ただ、重くなるよねって言いたいだけで。
>>750 いやだから、
@FW×Smartyは処理が遅い→Aキャッシュを使えば解決する→Bしかし動的な部分についてキャッシュは効果ない
という君の話に対して
C動的な部分はFW使おうが使わまいが毎度動的に生成するんだからFW関係ないんじゃないの?
(FW使わないときに「動的な部分が速くなる」なら話は別だけど)
と疑問に思っただけなんだが、どうなのよ。
俺が何か勘違いしてたら申し訳ないが。
>>750 実際に試した上で
>>734の結論なんだが。
xdebugのプロファイラログを検証した事もあるし、
APC切って単純なPHP単体でのベンチもした事ある。
Smarty導入が負荷になる事は認めるが、負荷で言うならCakeの方が数倍高い。
それなのにSmarty導入するだけで「秒単位」で遅くなる、
ってのは他の部分に何らかの欠陥があるとしか・・・
もし本当ならxdebugのプロファイルログ出してみ?
具体的にどのメソッドに時間かかってて、それがシステム全体の何%の負荷になってる?
>>750 とりあえず参考までに俺のベンチ結果あげとくな、
糞みたいなサーバのxdebugプロファイルログを、
WinCacheGrindで閲覧して調べた結果。
・環境
ZendFW(MVC、DB、Session)使用
APCやMemcachedは無効
Smartyでは文字コード変換フィルタかまし、
ヘッダフッタを別ファイルからincludeする。
・結果
トータル処理に846msかかる
その内、Smarty全体の処理が75msを閉めており、
その内、18msがテンプレートコンパイル、12msがinclude処理となっている。
コール数ではassign、modifiler系が多いが、トータルでも5ms以下となっている。
どんなに複雑なコード書いてもSmartyで1000ms越えるのは難しいな・・・
もしかしてテンプレート内にDBに接続してデータ取得するようなコード書いてね?w
ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい
>>750 「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
>>750 他人が『重い』って書いてたからそれを真に受けたの?
その『重い』にもレベルがあるでしょ
『●●っていうケータイ重いよ』というのを聞いて、1kgくらいあると本気で思い込むようなものだよ
それ説明書とか充電器とか合わせた重量測ってるだろwwwそんな感じ
秒単位で遅くなるんなら誰も使ってません、まずそこに気付こうよ
はい、次の患者さん、どうぞ。
WindowsXPも出た当初は重い重い言われていたなぁ('ー`)
今そんな事言ったら逆に笑われそうだよね
>>756 引数を「いんすう」と読んでいた俺に一言
>>758 影で同僚達に「インスウwwキタww」とか言われてるよ。
>>757 VistaなんてSP1で軽量化に成功したのに重い重い言われてるよ。
SP1で改善されたと言っても笑われるだけ。
>>760 例え話なのに論点ズレてる。誰もVistaの話なんてしていない。
>>751 そういう意味なら俺の解釈が間違ってた。すまん。
>>752-753 そりゃ、最小構成でベンチとっても秒単位で差なんて出ないだろ。
俺は例で「ポータルサイト(動的サイト)」って出したけど、
そこまでの規模についての話をしてるんだよ。
>>755 >>750を読んでくれ。自分で「重くね?」って思ってググったら他人の投稿もあった。
だから俺の印象は間違ってなかったなと思ったに過ぎない。
もちろん、お前らの環境と俺の環境は違うから、コード時代に問題があるという
のもわかる。だが、頭ごなしに「FW+Smartyが重いはずはない!」って
解釈するのはいかがな物かと言いたいだけだ。
なぜか自分が大好きな物を批判されるとそれを認めたくない奴がいるが、
俺もSmartyは使ってるし、別に批判したいわけじゃない。
メリット・デメリット理解した上での使い分けが必要だと思ってるだけ。
あと、自分の意見が100%正しいとも思ってない。だから議論してるわけで。
突っ込まれる前に誤字修正
コード時代に問題が → コード自体に問題が
あと、コードの書き方やサーバの設定(環境)によって重さを感じさせない
ように出来るって意見もあるだろうけど、
チューニングしたら重くないというのはまた別の話な気がするけどな。
ま、俺がCakePHPで書いてる書き方をいくら変えたところで
ビューにSmarty使って重いという印象は変わらないと思うよ。
Zend使えばまた別なのかも知れないけど。
日本語でおk
CakePHPってViewを処理する機構が用意されてるの?
だったらそちらを使った方が親和性が高く、処理は減る→軽くなる可能性はあるね
0.1秒の差でも100回リクエストでトータル10秒だから馬鹿に出来ない
秒単位の差が出ないから問題無いとの判断は違うと思う
最近はモデル部分の肥大化が激しくて、ビューなんざ何使っても関係ねー!って感じ
動的部分を極力JavaScriptにお任せして、ベースのHTMLもキャッシュサーバーに格納される様にしてるw
>>762 意見受け入れてないのはお前じゃね?
「自分が間違った計測の仕方してる」って可能性は一切無視ですか?
>そりゃ、最小構成でベンチとっても秒単位で差なんて出ないだろ。
>俺は例で「ポータルサイト(動的サイト)」って出したけど、
>そこまでの規模についての話をしてるんだよ。
それは無い。
プロジェクトの規模が上がっても、Smartyにかかるコストはほぼ普遍的だから、
全体が重くなればなるほど、相対的にSmartyのコストは下がる。
トータル5000msのページだろうが、10000msのページだろうが、Smartyは100ms以下でしかない。
全体処理とSmartyの処理負荷が比例しているのであれば、
それは上にも書いたようにテンプレートやプラグイン内に、
DB接続等の極端に重い処理が含まれていると考えられる。
それらは本来Smarty内に含めるべきでは無いし、
それをSmartyの実行性能として含めるべきでも無い。
ご自慢の「俺の検証結果」とやらを調べて、どのメソッドが負荷になってるか教えてくれよ。
皆で問題と解決策を見いだそうぜ。
>>765 補足
「それは無い」なんてありえないって言われそうけど、
>>753は君の言うポータルサイトのホーム画面だから。
DB数回叩いて、セッション確立して、Smartyで画面表示する程度だけど、
機能が増えても、DB叩く回数やデータを処理するロジックが複雑になるだけで、
Smartyが重くなる事は無い。
異論は君のベンチマーク結果を提示された時だけ認める。
おまいら仲いいな
俺もまぜてくれ
1回目のmsと2回目以降ののmsは?
>>768 Smartyのコンパイルキャッシュを有効にすれば2回目以降は更に軽くなる。
>>753は全く最適化も行わず、force_compile=trueにしたSmartyでの計測値。
コンパイルキャッシュ有効にして、APC等も導入すれば、
一番重い処理であるテンプレートコンパイルとinclude処理が劇的に軽くなる。
まぁ、smartyを使うのと使わないのとでは、そりゃ使ったほうが重いわな。
FW+SmartyがFWのみより重いのは当然だ。
それでも、他の人が言ってるように、全体からみれば、その重さも微々たるもので、
便利なテンプレートエンジン使えるメリットは大きい。
使わないで済むならつかわなくていいし、かといって使ってる人に"重いのによく使うな"っていうのはナンセンスってことだ。
Smarty使った場合、template_cにあるコンパイル済みPHPをincludeして
実行する分だけ遅くなると思うのだが。
それが1秒もかかるってことは・・・template_cディレクトリを
フロッピーディスクに指定してたりして。
多分使い方が下手なんだろうな
smarty単品だけ使うのってメジャーですか?
フレームワークとあわせてつかうものですか?
>なぜか自分が大好きな物を批判されるとそれを認めたくない奴がいるが、
え?そういう次元の低い話してたの?
だからsmartyはもう終わったの
dwooの時代なの
何度かdwooの話は出てきたが、すぐに消えていったな
マニュアルか何かを日本語に訳した人がいたけど、何か訳がおかしいとか言われてたっけな
導入例がないものを使うのは気が引けるという人もいたし
俺は新しい物好きだけどテンプレート書くのは別のhtml職人だからなぁ。
なかなかすぐに導入って難しいよね。
DWOO、TWIG、Smarty3と比較して、
Smarty3を実践導入したんだけど、Smarty2で不満に思っていた点はほぼ全て解消されてたわ。
プラグインも2のをそのまま使えるし、今のところ不具合も見あたらない。
乗り換え推奨したいところ。
たしか、smartyはLGPLでdwooはMITだっけ。
この違いはちょっと気になる。まぁ前者はリンクするだけならオープンにしなくていいけど、後者はほぼ何も考えなくてもいいし。
__autoload使ってる状態でsmarty3にしたら動かなかったから2に戻した
spl_autoload_registerしなきゃいけないようだ
>>778 乗り換え躊躇していただけに、心強いデス。
サンキゅ。
ZendFrameworkでいうレイアウト機能(Layout)って、Smartyに
あるのでしょうか?
(Document読みましたが見つかりませんでした・・・)
include, foreach, if くらいしか使わないのがかっこいいと思ってる。
そのぶんPHP側でやるわけだが、労力の差し引きがゼロなら
テンプレートがシンプルなほうがエライ(`・ω・´)キリッ
>>782 悪いことは言わないがsmartyでレイアウトなんてやるな
キャッシュを手動で消さないといけないからトラブルの元になるぞ
Smarty3の{function}って地味に便利だね
今まで細々と{include}で対応していた細かいパーツ群が綺麗に纏まった。
Smarty2
{include file="/include/navigation.tpl" current="top"}
↓
Smarty3
{call show_navigation current="top"}
そのうちPHP並みに便利になりそうだな・・・
Smarty3で便利だなと俺が思ったのは継承だな。
楽になってシンプルになる。
{$array = [1,2,3]} と書ける時点である意味PHPより便利かもw
IDEの色分け(&コード補完)が浸透してくれれば、もう何も文句は無い。
・array.php
$array=[1,2,3];
・a.php
$file=file_get_contents('array.php');
eval($file);
みなさん、smartyがバージョンアップしましたよ
Smarty2 から Smarty3 に、何も変更なしでいけた。
こりゃいいわ。
3じゃ動かなかった
SmartyがあればCakePHPがいらないことに気づいたわ
今までCakeを勉強していた時間ってなんだったんだろう・・・
何でいらないって思ったの?
何で必要だと思うの?
何でそんなに擁護に必死なの?
まずCakePHPが必要な理由を述べるべきだな
テンプレートとフレームワークの違いを認識してない初心者
>>798 かまってちゃん乙
自分の日記で書きなさい
は?
テンプレートでフレームワークの代用は効きますよね?
自分でフレームワークが作れれば必要ないわな
>>798 そもそもcakephpって時点で終わってるだっよ
あれは開発現場で実際ただ飯食いを製造するだけ
コンパイルフォルダーにある中身は
ポストフィルターを通った後、アウトプットフィルター適用前という認識でいいんだろうか??
なんでこのスレは伸びないんだろうね
まあ俺も聞くことがないんだけども
すでに枯れてるからじゃない?
それにフレームワークと違って、そんな複雑なものでもないし。
でも、初心者が一度は通りそうなものだと思うが、最近の初心者はどうしてんだろ。
最近の初心者
1. if for get postなどを覚える
2. 関数を覚える
3. クラスを覚える
4. フレームワークに突入
変数は覚えないの?
むしろフレームワークの方が初心者が使うものかと
>なんでこのスレは伸びないんだろうね
Smartyのマニュアルが充実していて、質問することが
ないからでは。
>もそもcakephpって時点で終わってるだっよ
>あれは開発現場で実際ただ飯食いを製造するだけ
cakephpに興味ありありなので、「cakephpはただ飯食いを製造する」
という理由を教えてください。
816 :
nobodyさん:2011/03/22(火) 06:23:02.17 ID:8oP+/2xe
質問です。
aaaaa.php
<?php
require_once("*******/Smarty.class.php");
$smarty = new Smarty();
$smarty -> display("tmp_b/index.tpl");
$smarty -> assign("page","aaaaa");
?>
index.tpl
{include file="tmp_b/header.tpl"}
{include file="$page.tpl"}
{include file="tmp_b/footer.tpl"}
$pageの部分に各ページのHTMLが入るんですが、
そのHTMLの量が少ないと、ちゃんと表示されるんですが、
HTMLの量が多いと、そのpage部分全てが表示されなくなります。
何が原因なんでしょうか?
マルチ注意
>>816 えっと、たぶんそれカルシウム不足だよ。
>>816 $smarty -> display
$smarty -> assign
の順番が逆。
assignしてからdisplayしてごらん。
>>819 $smarty -> display
$smarty -> assign
を逆にしてみましたけど、まったく変化ありません。
疑問なのはHTMLの行数によってassignされたり、されなかったりすることです。
>>820 ちゃんとすべてのリクエストで $page に値が入ってるのは確認したのか?
それが問題ないなら提示したソースじゃなく、呼ばれたtpl側の問題じゃね?
修行が足りません(Lv=1)。しばらくたってから投稿してください。
>>816 全く表示されない状態というのは、表示もされずHTMLソースコードも
白紙ってこと?
または、テンプレ内で{debug}を入れてデバッグ情報を表示するとか、
templates_cの中身を確認してみるとか。
824 :
nobodyさん:2011/04/21(木) 17:49:23.58 ID:EKlJgMf+
質問させて下さい。
{$user->getName()|default:''}
上記のような書き方をしているのですが
$userが未定義だったりnullだったりする場合にdefaultで
指定している文字列を表示させるように設定する事は可能でしょうか?
このまま表示させると、このソースの部分でHTMLの表示が
止まって以降、真っ白になってしまいます。
なにか解決策があればご教授ください
>>824 defaultは、変数の値がない場合であり、
エラー処理までできんだろ。
自分で関数作るのが早いんじゃね?
そもそもphpエラーで止まって以降真っ白になってんだろ。エラー解決しないとどうしようもねぇ。
ていうか、エラー表示しとらんのか?
826 :
nobodyさん:2011/04/29(金) 18:31:05.23 ID:RGJxTFjk
{php} {/php} でテンプレート内でPHPを直接書けるけれど、
キャッシュされずに毎回動的に実行させるものはないですか?
テンプレートじゃなくてフレームワーク使えよ
最近その類はJavaScriptで処理してら
Smarty3なら部分キャッシュができるんじゃね?
デザイナー分業のためにSmartyやってみようと思ったんですが、
ぱっとみてこれデザイナー向けじゃないですよね?
すごいプログラマーよりな感じがします。
自前の作るしかないかなぁ・・・
自前で作ったらsmartyの意味がないじゃん
何のためにsmarty使うのかを理解しろよ
{$var}{include}{if}{foreach}しか使わなきゃだいじょぶだろ。
むしろそのくらいの設計にできないようじゃプログラマ側がアレだと思ってる。
{* 配列の利用 *}
{foreach from=$data item=value name=loop01}
<li>値は「{$value|escape}」</li>
{foreachelse}
表示させるデータがありません。
{/foreach}
だってこんなんだよ・・・
デザイナー無理だってこれ
仮にもいまどきのhtmlとcssを理解できるレベルのデザイナーなら、
さすがにそのくらい理解できるのでは。
>>833 デザイナには{}の中は無視しろって言えばおk
{}の中だけSmartyの世界で他はhtmlの世界だ
簡単だろ?
>>835 変数オンリーかなー
制御構造は入ったらマズイね
>>833の例だと
{$data}
で
if (!$data) {
echo "表示させるデータがありません";
}
foreach ($data as $key => $value) {
echo "<li>".htmlspecialchars($value,ENT_QUOTES)."</li>"
}
を呼び出すようにしないといけない
問題はタグがliに固定されることだね
{$data orderby=id limit=5}
<tr><td>{$data.key}</td><td>{$data.value}</td></tr>
{/$data}
みたいにできたらいいんだけどね
>>836 タグリファレンスみたいな感じで仕様書だけ用意して
デザイナーに書いてもらうつもりだったんだけど
プログラマーが書くものなの?
{include}{if}{foreach}も理解できないようなデザイナって、
構造的/SEO的にまともなマークアップできるの?
DOMに沿ったCSSが書けるの?
>>838 そりゃそうだろ
デザイナが分岐なんてわかんねーだろ?
最初は適当に値を出力させるテンプレートを作って渡せばいいんだよ
あとはデザイナが力を発揮してhtmlをコーディングしてくれる
>>840 それじゃMVCの分業という概念から離れるじゃん・・・
Smartyマニュアルの
テンプレートデザイナのためのSmarty
プログラマのためのSmarty
どっちもプログラマ向けに見えるわ・・・
ヘ(^o^)ヘ いいぜ
|∧
/ /
(^o^)/ てめえがMVCの分業という概念
/( ) って物があるってなら
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三
( /
/ く まずはそのふざけた
幻想をぶち殺す
結局、デザイナーってバカなの?
>>843 それ言わせれば、
「デザインに合わせてプログラミングできない。PGは馬鹿なの?」
ってなるぞ。
デザインにあわせてプログラミングって何だ?
俺にはこの質問をしてるやつが馬鹿に見えるが。
デザイナが主ならデザインに合わせる事になる
プログラマが主ならプログラムに合わせる事になる
「こういうデザインにしたいからこう出力してくれ」
って言われた事無いか?
それをするのはロジック的に負荷がかかったり、
技術的に無理な事もあるだろ。
>>845 俺が現状抱えている問題で、「カテゴリをパンくずにしてくれ」
ってのがあった。
DBからカテゴリ情報を取得して再帰してパンくず化するんだが、
それが凄く難しい。1行だけならともかく、複数行あるから。
出来る奴は出来ると思うけど、今の俺には無理だ
>>848 それのどの部分がデザインにあわせてプログラミングしてるの?
デザインに合わせてプログラミングできないから、
デザイナーから文句言われても仕方ないって話しだろ?
なんで合わせるって言葉が出るんだよ
デザイナのレベルに合わせて、加工済変数をassignするなり、プラグインを作るなりすればいい。
WordPressやMTのテンプレートに比べれば、Smartyの基礎なんて超簡単な部類だろう。
近年ではクライアントサイド(JS)で動的にページを生成する手法がメジャーになっているので、
変数や制御構文を理解出来ないデザイナは、完全に時代遅れだし、
それに合わせて設計するのが当たり前だとは思わない方が良い。
制御構造が理解できれば
そもそもテンプレートエンジンなんて使う必要ないじゃん
>>853 無知を晒す前に5000回くらいテンプレートエンジンの意義と、
Smartyの思想を読んでから出直した方がいい。
<table>
<tr>
<td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td>
</tr>
<tr>
<td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td>
</tr>
<tr>
<td>$db['img'][N]<br>$db['img_name'][N]</td><td colspan="2">$db['img'][N]<br>$db['img_name'][N]</td>
</tr>
</table>
こんなソースを吐くにはどのようにデザインしたらいいですか?
Nはインデックスでforeachでまわします。
assign側をどうしてテンプレート側ではどうしたらいいのでしょうか?
>>855 colspan="2" とする条件次第。
普通に{foreach}ループの中で{if}分岐書けばいい。
あまり複雑になるようならPHP側で配列を整理してからassignすればいい。
> 以下のようなPHPコードが
> echo '<html>';
> echo '<body>';
> echo "<p>$msg</p>";
> echo '</body>';
> echo '</html>';
> このように書けます
> <html>
> <body>
> <p>{$msg}</p>
> </body>
> </html>
こういうアホな説明を最初にされると使う気も起きなくなるな
<html>
<body>
<p><?=$msg;></p>
</body>
</html>
でおkってなってSmartyはやっぱいらないなとお帰りになるわけだ
<?=$msg;>より{$msg}のほうがいいじゃん。
でも予約語に{}を選ぶのはやっぱ良くないと思うわ
なぜ<$>にしなかったし
やっぱxml形式のほうがコードが綺麗に見える
書き直せば<>に出来るよ
まぁそうなんですけどね
デザイナーてもピンキリだからな
ビジュアルプロデュースだけからHTMLとCSSゴリゴリ
目の前の戦力を最大限利用する努力、調整をするしかあるまい
俺は<{$}>してるけど、こう言うのは特殊か?
Smarty2までは<%%>とか<{}>とかにしてたけど、
Smarty3からは{}で使ってる。全く問題無い。
>>862 それ言ったらキリが無いが、
それ程低レベルなデザイナならPHPよりSmarty使わせる方が楽だし、なにより安全じゃね?w
みんなSMARTY3使ってるの?
2から3にしたらトラブったとかない?
俺もそれが心配で2から移行してない
新規は3にしてるよ。特に問題ない。
PHP5系なら選ばない理由は特に無いな。
869 :
nobodyさん:2011/07/23(土) 08:38:49.59 ID:k0EfwZvh
smarty2を使っています
修飾子プラグインを作ったんですが、テンプレートファイル内で
以下のようにプラグインに渡す引数にNULLを指定したらそのNULLが文字列として処理されます
{$value|myplugin:NULL}
というか、引数が''で囲まなくても文字列として処理されてしまいます
これが正常な処理なんでしょうか?
tes
PHP自体テンプレート言語なのに、Smartyの思想ってよくわからん。
主流なフレームワークは簡易テンプレートを含むはずだし、
デザイン優先の単純なページでも、今はAJAXでJavaScriptくらい使うんだろ?
874 :
869:2011/07/23(土) 13:23:19.85 ID:k0EfwZvh
ありがとうございます、NULLに関しては null と小文字じゃないとダメなんですね
小文字にしたら上手くいきました
もう一個だけ聞いていいですか?
phpで作った配列をjavascriptで処理したいです。現在以下のようにしていますが
上手く動きません
//PHP
$myary = array('a','b','c');
$this->view->myary = $myary;
//テンプレート
<script type="text/javascript">
var myary = {$myary};
{literal}
for(var i in myary){
alert(i);
}
{/literal}
</script>
どうやってjavascriptで使えるように割り当てるんでしょうか?
javascriptの文法わかってる?
876 :
869:2011/07/23(土) 17:30:01.88 ID:k0EfwZvh
>>875 ありがとうございます
すみません、var jsAry = new Array();でした。
それで、この中にphpからassignした $myAry を割り当てれば良いんだと思うんですが、
どうやったら良いんでしょうか
foreachで$myAryをループして代入していけば良いのかと思ったんですが
<script type="text/javascript">
var jsAry = new Array();
foreach(from=$myAry key="k" item="i"){
jsAry[$k]=$i;
}
</script>
こんなことやってもうまくいきません
どういう形で{literal}したらいいのか、わかりません。どうやるべきなんでしょうか
というか、皆さんどうやってJSに配列を渡してるんですか?すみませんが教えてください。よろしくお願いします
サーバサイド言語とクライアントサイド言語分かってる?
とりあえず、phpとJavaScriptは別として評価しろ。
Phpの文法が合っててもjavascriptがあってるとは限らん。
まず、生成されたhtmlソースをみろ。
879 :
869:2011/07/23(土) 20:02:21.45 ID:k0EfwZvh
そっか、ちょっとボケてました
もう少し考えてみます、スレ汚しすみませんでした
880 :
869:2011/07/23(土) 20:28:39.69 ID:???
解決しました。が、凄く低レベルな気がします
jsでの配列の定義部分を丸ごとPHPで記述して変数化&assignし、
それを<script></script>の中に入れるという方法です
//php
$myAry = "new Array('a','b','c');";
$this->view->myAry = urlencode($myAry);
//テンプレート
<script type="text/javascript">
jsAry = {$myAry|urldecode}
{literal}
for(var i in jsAry){
alert(jsAry[i]);
}
{/literal}
</script>
こんな感じです。正直、もっとマシな方法があるのではと思います
引っ張って申し訳ないのですが、自分はこうやってるという方法があれば
良かったら教えてください。よろしくお願いします
「マシ」の基準は?
882 :
869:2011/07/23(土) 22:51:27.33 ID:???
>>881 配列を配列のまま渡して処理したいんです
(そうすることで解決する緊急の課題があるわけじゃないんですが)
上で書いたやり方は何か力技過ぎて美しくないような
たとえばDBへのクエリの返り値をテンプレートに表示する場合
名前は{$rs.name}です って感じにやるけど、同じ$rsをjavascriptで処理する時だけ
PHPでああいう形に整形して渡さざるを得ないというのはすっきりしないというか
わがまま言ってすみません
一番手っ取り早いのはjsonかな。
一番スマートなのはAjaxかな
885 :
869:2011/07/24(日) 03:50:48.95 ID:???
>>883,884
ありがとうございました
やっぱりそのへんの技術を使うことになるんですね
勉強してみます。ありがとうございました
多次元配列を登録してテンプレートでforeachネストや条件分岐って不親切ですかね?
出力する数が固定なら登録する段階で単体の変数にわけてしまったほうがいいんでしょうか?
そりゃ君の設計次第
変数に関連性があるなら配列、
それほど関連性が無いなら独立したdefine変数かな
defineって定数じゃ・・・
PHPのdefine()は関数だ
>>889 ああ、まあ意味的には定数ですね。すんません。
はぁ?意味的でなくとも定数でしかないわボケ
893 :
nobodyさん:2011/07/29(金) 12:36:57.48 ID:Q3BOppda
すみません、変な質問ですが、
使ってるsmarty2からsmarty3に更新しようと思ってるんですが、yumとかで更新する方法はなくて
ftpでアップロードするしかないんですっけ?
yum使える環境ならwgetでも取ってこれるさ
>>894 どうもです、結局ftpしてしまいましたがwgetてのも試してみます
rootとってるなら出来た方が得ですね
896 :
nobodyさん:2011/08/02(火) 03:04:44.18 ID:nQxK873/
smarty3にしたら、やたらと以下のエラーが出るようになりました
PHP Warning: Invalid argument supplied for foreach() in
/usr/lib/php/Smarty/sysplugins/smarty_internal_compile_private_print_expression.php on line 57
テンプレートファイルの{$var}を一つ消してページリロードしたら消す前よりも
出力エラーの数が一つ減ったので値の処理なのかなとは思ったんですが、その先がわかりません
smarty_internal_compile_private_print_expression.phpも見たんですが恥ずかしながらわかりませんでした
これは一体何が原因なんでしょうか?解決方法があれば教えてください、お願いします
>>896 エラーから見ると、foreachの引数が不正ってことじゃね。
とりあえず、テンプレートに渡してる変数全部確認すれ。
2では@が付いていたとかいうオチだったりして
>>897 いやー、でもsmartyのforeachに渡してる変数の数よりエラーの数が多いんですよね
どうやらsmarty_internal_compile_private_print_expression.phpの内部処理からたどっていくしかないか。。
>>898 そうなのかな、いちおうそのへんも確認してみます
ありがとうございました
確認してからレスすれ
$config_overwriteを無効にして配列変数を生成できるけどなんでこんな設計にしてるんだろう
array相当の構文を実装するのは難しいのだろうか
904 :
nobodyさん:2011/08/29(月) 14:58:11.36 ID:I91Mc7xA
質問させてください。
templates_cのパーミッションを書き換えて
書き込み可能にしたいのですが、レンタルサーバにteraterm
から接続してもtemplates_cのフォルダが見れません。
templatesフォルダやphpファイルは見えます。
どのようにしたらパーミッションを変更できるのでしょうか?
存在しないんじゃないの??
いえ、他のフォルダからtemplates_cをコピーしてきました。
GITで管理しているのでコピーはローカルで行いました。
filezillaからなら見えますがパーミッションの変更は拒否されてできません。
suすればいーやん
908 :
nobodyさん:2011/08/29(月) 21:28:20.53 ID:I91Mc7xA
suするとはどういうことでしょうか?
filezillaからですか?
ローカルのパーミッション775してgit push
リモートでgit pullでいーんじゃね?
gitはできてるみたいだし
質問です
smarty3を使いはじめたら
PHP Notice: function call 'get_template_vars' is unknown or deprecated. in
/usr/lib/php/Smarty/sysplugins/smarty_internal_wrapper.php on line 57, referer:
ってエラーが出てきました
これは何が原因なんでしょうか
/usr/lib/php/Smarty/plugins
/usr/lib/php/Smarty/sysplugins
の中を見てみたもののそれを実行していそうなプラグインは見つかりませんでした
911 :
nobodyさん:2011/09/02(金) 23:59:43.86 ID:ao5DUxKx
あ、すみません
うっかり下げてしまいました。あげさせてください
そのままの意味。get_template_varsは非推奨になった。
getTemplateVarsを使うといいよ。
Smarty upgrade notesも読むとよさげ。
>>912 ありがとうございます!
解決できました
phpの論理記号は数学から激しく逸脱してていつみても気持ち悪い・・・
どちらかといえばperlのほうが・・っていうかスレチ
Smarty3にしてみたのですが、{$var|smarty:nodefaults}のような構文はもはや不可能になったのでしょうか?
"{$content|smarty:nodefaults}" unknown modifier "smarty"' in〜
とエラーが出たもので
Smarty2と3の変更点を検索したのですが見つけられませんでした
連投ごめんなさい
説明不足だと思ったもので
エラーの表示ではsmartyという修飾子がunknownと書いているようなので、|smarty:を使った書き方全般が駄目なのか、それともnodefaultsの方が駄目なのか分かりませんで質問させてもらいました
まずVer2.xで通るか検証してみよう。
正常に表示されてた.tplファイルをftpでGetしてきて、
そのまま手を加えずftpでupしたら白紙ページに
なったです・・・なんでだろ・・?????
こんな経験ありませんか?
ひとまずcompileディレクトリの中身を消してみよう
出ました!ありがとうございます。
キャッシュが更新されたんですね。
精進します。
926 :
nobodyさん:2011/10/09(日) 19:10:40.79 ID:s8jfJMra
上にも書いてあるようですが、自分もSmarty3.0.9を使用すると
Warning: Invalid argument supplied for foreach() in
~/Smarty3/sysplugins/smarty_internal_compile_private_print_expression.php on line 57
という警告が出ます
どのように解決させればいいのか分かりません
Webで検索しても、殆ど出てきません
出てくるのはこの2chのスレばかりです(苦笑)
海外サイト見ても解決策は見当たりませんでした
どのようにすればいいのかアドバイスいただけませんでしょうか?
>>926 Foreachに渡す変数がちゃんと配列か確認したよな?
Smarty3でdefault_modifiresで自分の環境ではどうも色々と問題があるようですが、
このパラメータはまだ有効なのでしょうか?
Manualにはまだarray('escape:"htmlall"')と書いてあるようですが、配列で渡すと
SmartyCompilerException、配列抜きで渡すとforeach()エラーになります
ネットで検索して、register_variablefilterというのを見つけたのですが、英語なのでよく分からないのと
Manualに載っていないようなのでどうなのかと思いまして
>>926 ではないのですが、私もそのエラーが出て困ってました。
>>927,928
助言ありがとうございます。言われるように、
default_modifiers = array('escape:"html"');
としたらいけました。
すみません、ド素人なものでつまらない質問だと思うのですが教えてください
Smartyにて上にも書かれてあるようにdefault_modifiers=array('escape:"htmlall"')とした場合、
文字列を.phpファイル上にてassign()によって変数hogeに割り当てたとします
その場合、テンプレートファイル(.tpl)の出力時に文字列が本当にエスケープされているかを確認したいのですがどのようにすればいいのでしょうか?
普通に出力して比較すれば良いんでね?
エスケープされるはずの文字列を。
上にあるescapeのhtmlとhtmlallの違いが分かりません
具体的にはどのような文字をエスケープするのでしょうか?
933 :
932:2011/10/19(水) 20:57:09.49 ID:???
934 :
nobodyさん:2011/10/23(日) 05:25:39.09 ID:XgYAMZND
smarty3で質問します
phpで 変数animalに「犬」とassignされてて
テンプレートファイルの<script>タグ内でそのsmarty変数を受け取って利用したいとき
どう処理したら良いんでしょうか?
<script>
animal = {$animal};
alert(animal+"を飼っています");
</script>
という形で「犬を飼っています」と表示させたいのですが
{}の処理がわかりません
935 :
934:2011/10/23(日) 06:28:57.04 ID:???
すみません、変な勘違いしてました
上の質問は無視してください
936 :
nobodyさん:2011/10/26(水) 15:36:49.28 ID:JKF2j1ik
smarty3に対応したvimのsyntax fileってないかなぁ。vim.orgでは
古いのしか見つけられなかった。
938 :
nobodyさん:2011/11/15(火) 14:37:54.73 ID:hT8eAUMs
Smartyのテンプレートの中に {#AAAAA#} みたいな記述があったんだけど、どういう意味?
940 :
nobodyさん:2011/11/15(火) 16:43:57.31 ID:hT8eAUMs
ありがとう
941 :
nobodyさん:2011/11/21(月) 22:03:04.64 ID:+dtlHn11
質問です。
以前までは普通にtplファイルをviでごりごり弄ってても、ちゃんとブラウザで表示できたのに
急に真っ白な画面しか出なくなってうまく表示されません
文字コード、改行コードなどは正しいです
簡単なコード(<h2>test</h2>)だけで試しても表示されません
ちなみにApacheのログには何も出ません
原因は恐らくコンパイルされなくなった事にあると思いますが、理由がわかりません
同じような症状になった人とかいますか?
よろしくお願いします
942 :
nobodyさん:2011/11/21(月) 22:27:40.35 ID:+dtlHn11
941です。書き忘れてました
templatesディレクトリの中身を消してもダメでしたし、cacheは利用していません
PHPのコードでエラー出て止まってるんじゃね?
httpdだけじゃなくてphpもエラーログ出せるよ
開発環境なら出力してチェックすべし
945 :
sage:2011/11/22(火) 06:24:40.86 ID:rTYRxhVU
今まで正常に動いていたphpを使用しているためphpに問題はありません
不思議なのは更新日が新しくなるとダメだという事
(mvで名前変更はアウト、cpは-aを付けないとアウト)
Smartyの処理の流れは正確にはわからないのですが、
tplファイルを編集→tplファイルが以前の日付よりも新しくなっていたらコンパイルファイルを更新 と認識しています
したがってコンパイルが出来なくなっているのが原因ではないかと書きました
下がってない。寝起きスマソ
templates_cのパーミッションは大丈夫?
諸事情により767になってるから問題ない。ユーザー、グループはApacheです
ちなみに、SELinuxはEnforcingだけどDocumentRootのコンテキストタイプはディレクトリ、ファイルともにhttpd_sys_content_tになってる
949 :
941:2011/11/22(火) 11:32:32.97 ID:???
自己解決しました
Smarty.class.phpに不要なメソッドが追加されていたのが原因でした
削除したところ無事動きました
お騒がせしました
カスタマイズされたのは別物だぁな
>>949 >不要なメソッドが追加されていたのが原因でした
"追加していたのが" or "追加されていたのが(本人の意図しないところで)"
そもそも、不要なメソッドを追加したのが、ご自身ならばコーディングミス。
そうではなくて意図しない所でメソッドが変更されていたなら危機感を感じた方が良いよ。
まあまあ、良いじゃねーか。
原因分かった後にどうするのかはSmartyとは関係ないんだし。
>>951 簡単に言うと開発環境と実環境が同期されていなかった事が原因です
色々な事情により開発環境と実環境の同期は手作業なため、その部分でミスがありました
html_checkboxesでselected指定をarrayにすると、
Warning: htmlspecialchars() expects parameter 1 to be string, array given in 〜
となるのですが、原因がどうしてもわかりません。
Stringにすると通ります。
すみませんが教えていただけますと幸いです。
よろしくおねがいしますm(_ _)m
そのまんまだ
ていうか自己解決してるじゃないか
配列を引数で渡しちゃいけない
って、エラーは"htmlspecialchars()"かー
selectedは checked="checked"になるわけで
その値をhtmlspecialchars()するとは考えにくいので
>html_checkboxesでselected指定をarrayにすると
が原因じゃなくて、他の指定がおかしいんじゃないだろかと予想してみる
どう指定してるかを貼り付けたほうがよさそう
958 :
nobodyさん:2012/01/05(木) 17:15:17.69 ID:fe3IZupl
質問させてください。
smartyに渡したオブジェクトの変数から、
smarty内でそのオブジェクトのメソッドを呼びたいのですが、
どのように書けばいいのでしょうか?
もしかして無理なのでしょうか。
教えていただけると幸いです
959 :
nobodyさん:2012/01/05(木) 18:08:21.78 ID:fe3IZupl
すみません解決しました。
普通に->()が使えるのですね。失礼しました
960 :
nobodyさん:2012/01/12(木) 09:23:32.21 ID:iHCFQcsC
キャッシュのことで質問させてください。
$smarty = new MySmarty();
$smarty->setCaching(NugiSmarty::CACHING_LIFETIME_SAVED);
$smarty->setCacheLifetime(60); // 60秒間キャッシュ
$smarty->setCompileCheck(false);
このような設定で、キャッシュが60秒ごとに更新されるまでは確認できたのですが
templates_cディレクトリの解析済みキャッシュが更新されておらず、
cacheディレクトリのキャッシュのみが更新されるため、
実質、表示上は更新されないという状況になっています。
(template_cのファイルが更新されないことには、それをもとに更新されるcacheのファイルの内容に変化はない)
どういう指定が必要なんでしょうか。
961 :
nobodyさん:2012/01/12(木) 09:38:27.74 ID:iHCFQcsC
960追記
Smartyのver3.1.3です
キャッシュはテンプレートに入れるデータをキャッシュ
テンプレートはテンプレートをPHPフォーマットにしたものをキャッシュ
テンプレートに変更がなければテンプレートは更新されない
もっと良くマニュアル読んで
963 :
960:2012/01/12(木) 10:54:47.62 ID:iHCFQcsC
>>962 どもです。そういえば意識してなかったんですが、
>>960はテンプレートの変更で試していました。
一応今、次のようなコードでとりあえず更新されるようになりました。
if (!$smarty->isCached($tmpl,$cache_id)) {
//コンパイル済みのファイルがチェックされ、結果的に更新される
$smarty->setCompileCheck(true);
//以下は効かなかった(cacheの更新のみ)
//$smarty->clearCache($master_tmpl,$master_cache_id);
//$smarty->clearAllCache();
}
なんか変は気はするけど、おそらく
>>962で説明していただいた違いなんですよね。
つまり最初の設定で
$smarty->setCompileCheck(false);
としているため、再コンパイルの可能性は考慮されない、と。
解決したならいいけど、そんな度々再コンパイルするような使い方だとしたら
キャッシュもテンプレートエンジンもあまり意味ないんじゃないの
965 :
960:2012/01/12(木) 11:20:02.82 ID:iHCFQcsC
>>964 60秒はあくまでテストです。
定期的に更新される外部ファイルを1日1回
全ページ共通のメインテンプレートに埋め込む感じなので。
もちろん、他の実装も可能でしょうけど、
埋め込んでしまえばその都度のinclude分、節約できるかと。
普通は
# 1.キャッシュがあるか
あればキャッシュから出力して終了
# 2.キャッシュが無かったのでデータ作成
キャッシュさせて出力
こんな順序で、テンプレートのコンパイルは特に意識しない
テンプレートのコンパイルが必要なのはテンプレートを書き換えた時のみ
共通テンプレートを使うことはよくあるのでテンプレートIDをそれぞれのアクセスに対して付ける
多くの場合はアクセスURLをIDにしておくと事足りる
$tplid = md5($_SERVER['REQUEST_URI']);
とか
967 :
960:2012/01/12(木) 12:01:23.53 ID:iHCFQcsC
>>966 >テンプレートのコンパイルは特に意識しない
たしかにそうですよね・・・ちょっと組み合わせ方がよくないかもです。
結局今だと、Smartyにデータ(外部ファイル)を再取得するかどうかを判断させちゃっているし
それも再コンパイルが必要な操作なわけだから、それはプログラムのコードの方での判定と、
再コンパイルではなくキャッシュの更新で対応すべきということですよね。
再考してみますm(_ _)m
968 :
nobodyさん:2012/01/12(木) 21:58:31.95 ID:enIWBzTv
$smarty->template_dir = "aaaaa";
とかでtemplate_dir、compile_dirを変更しようとしてもデフォルトのとこしかみてくれないんですが、
これだけじゃ変更できないんでしょうか・・。
new Smarty()からdisplay()までのソースを貼れ
970 :
nobodyさん:2012/01/13(金) 01:18:12.35 ID:IZyFHZTp
test
htmlspecialchars()の第一引数に日本語だけを指定すると文字が表示されなくて困ってるんですがどうしてなんでしょうか?
とんちんかんなこと聞いているかもしれませんがエスパーの方いらしたらお願いします
文字コードちゃんと指定してる?
実質必須だよ
文字コードで困ったらutf-8で統一すると、楽。
>>972, 973
ありがとうございます
ロケールを指定したら解決しました!
fopen()の第一引数に変数を指定したいんですがどうすればいいですか?
たとえば
fopen('$x .txt', 'r')
のように変数(x)と文字(.txt)を結合したいです
fopen()の第一引数に変数を指定したいんですがどうすればいいですか?
たとえば
fopen('$x .txt', 'r')
のように変数(x)と文字(.txt)を結合したいです
すみません
エラーが出たので連投してしまいました
smarty関係ねーし
"{$x.txt}"
つーか、クォートくらい覚えろよ
つーか間違えたしw
"{$x}.txt"