【PHP】 Smarty 【テンプレートエンジン】 第2章
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/29(月) 14:41:04ID:???具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
0558552
2010/09/02(木) 10:21:12ID:???こういう、2つの領域を指定する方法もあるんですね。勉強になります。
出来れば、実行ファイルを修正するのは嫌だったのですが、
この方法を試してみます。ありがとうございました。
0559nobodyさん
2010/09/13(月) 05:38:22ID:???自分は設定ファイルにテンプレートディレクトリ、includeディレクトリなんかのパスを書いといて呼び出す時にそれプラスファイルまでのパスを呼んでる。
0560nobodyさん
2010/09/14(火) 14:06:28ID:???今はdwooの時代ですよ
0561nobodyさん
2010/09/14(火) 14:41:32ID:???0562nobodyさん
2010/09/16(木) 09:23:10ID:???せめて日本語ドキュメントがあれば推し進められるんだがねぇ
0563nobodyさん
2010/09/16(木) 09:56:08ID:???smartyのドキュメントがdwooのドキュメントでもあるからね
0564しますよ
2010/09/16(木) 10:06:49ID:???0565nobodyさん
2010/09/16(木) 10:15:18ID:???0566nobodyさん
2010/09/16(木) 15:07:19ID:???0567nobodyさん
2010/09/16(木) 19:56:26ID:???0568nobodyさん
2010/09/16(木) 20:00:37ID:???0570nobodyさん
2010/09/16(木) 20:16:16ID:???0571nobodyさん
2010/09/16(木) 20:40:06ID:???0573nobodyさん
2010/09/17(金) 12:22:32ID:???0574nobodyさん
2010/09/17(金) 14:12:42ID:???前スレも大した情報交換もなかったしね
0575nobodyさん
2010/09/17(金) 20:29:00ID:???0576nobodyさん
2010/09/17(金) 22:21:37ID:???0577nobodyさん
2010/09/17(金) 22:34:12ID:???0578nobodyさん
2010/09/18(土) 00:19:23ID:???DWOOはAdapter機構が良い感じだね、
フレームワークのViewHelperを活かしつつSmarty風に構文書ける。
ただし、2月から更新停滞しているのが怖い。
0579nobodyさん
2010/09/18(土) 09:46:34ID:???ttp://devzone.zend.com/article/12366
>>578
ttp://github.com/Seldaek/Dwoo
0580nobodyさん
2010/09/19(日) 03:40:35ID:???新しいものを導入したい気持ちはわかるが、
せめてSmartyと比較するなり、詳しく紹介してくれないとスレ違いというか、
誰もまともに見てくれないかと・・・
個人的にはDWOOの構造は好みなんだが、
安定性、ベンチマーク、導入実績のレビューが無い時点で本格導入には躊躇している(Smarty3も同様だが)
0581nobodyさん
2010/09/19(日) 09:41:02ID:???0582nobodyさん
2010/09/20(月) 04:52:19ID:???0583nobodyさん
2010/09/20(月) 09:47:00ID:???0584nobodyさん
2010/09/21(火) 01:44:32ID:???どれだけ情弱だよw
0585nobodyさん
2010/09/27(月) 04:06:51ID:???0586nobodyさん
2010/09/27(月) 11:19:29ID:???<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>
0587nobodyさん
2010/09/27(月) 11:36:12ID:???0588nobodyさん
2010/09/27(月) 13:09:57ID:???PHP自体がテンプレートエンジンですとか言いたいんだろw
0589nobodyさん
2010/09/27(月) 22:33:10ID:???HTML内で<?= ?>を使うのとSmartyの{ }を使うのは、意味合いが違うんでしょうか?
0590nobodyさん
2010/09/27(月) 22:45:48ID:???0591nobodyさん
2010/09/27(月) 22:54:18ID:???0592589
2010/09/27(月) 23:16:47ID:???最初は「何だか良さそう!」って思ったんですが、だんだん良さがわからなくなってきました。
0593nobodyさん
2010/09/27(月) 23:48:37ID:???0594nobodyさん
2010/09/28(火) 00:01:37ID:???[と]をタイプすると{ }が入力されるようなのをAutoItかAHKで作るといい実際俺はアンダースコアで利用してる
0596nobodyさん
2010/09/28(火) 10:30:27ID:???0597nobodyさん
2010/09/29(水) 14:31:00ID:???0598nobodyさん
2010/09/29(水) 14:48:53ID:???0599nobodyさん
2010/09/30(木) 00:12:24ID:???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 でないことを検査する
0600nobodyさん
2010/09/30(木) 00:13:05ID:???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 指定した長さでワードラップする
0601nobodyさん
2010/09/30(木) 00:13:46ID:???auto_escape ブロック内をエスケープする
block
capture タグの間のテンプレートの出力を集め、 それをブラウザに表示する代わりに変数に受け渡す
{* comments *} コメントの書式
dynamic
else
elseif
for
foreach
foreachelse
forelse
if
literal タグに囲まれたデータのブロックをリテラルとして認識させる
loop
strip 各行の最後にある空白文字・改行を削除する
template
textformat テキストを整形する
with
0602nobodyさん
2010/09/30(木) 00:15:13ID:???ちなみに和訳じゃないので
0603nobodyさん
2010/09/30(木) 00:16:34ID:???・出力時に行の終わりに半角スペースが入る
・spacifyの第一引数を日本語対応させる
・stripで全角スペースにも対応させる
0604nobodyさん
2010/10/01(金) 15:55:38ID:???0606nobodyさん
2010/10/01(金) 16:22:32ID:???0607nobodyさん
2010/10/01(金) 16:29:32ID:???safe = 文字列の場合のみエスケープする
英語が理解出来ないなら、独自解釈する前にソースコードくらい読めよ・・・
0610nobodyさん
2010/10/01(金) 16:52:58ID:???間違うくらいならするな、っていうのは、ほんと日本人の粗探し大好き性格やわ。
プラス評価はしない。やって当たり前だから。
マイナスは3倍評価。ちょっとの間違いでもこれでもか、というくらいこき下ろす。
翻訳者乙。
0611nobodyさん
2010/10/01(金) 16:58:28ID:???構文の概要だけ(憶測で)翻訳されても、とっかかりにもなりゃしないよ。
0612nobodyさん
2010/10/01(金) 17:03:13ID:???0613nobodyさん
2010/10/01(金) 17:12:51ID:???* 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は正しいの?
0614nobodyさん
2010/10/01(金) 17:21:48ID:???>>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
0615nobodyさん
2010/10/05(火) 00:55:13ID:???そ い つ は す げ ぇ !
0616nobodyさん
2010/10/05(火) 10:08:28ID:???このスレがお前のくだらない人生の拠り所になってるということだけは分かった
何かツライことがあったらいつでも来ていいんだよ
0617nobodyさん
2010/10/05(火) 18:16:04ID:???0620nobodyさん
2010/10/05(火) 23:52:51ID:???0621nobodyさん
2010/10/06(水) 00:33:09ID:???捕らえ方が違うだけ。
テンプレート構文とPHP(フレームワーク)を仲介する為のアダプタと考える事も出来るよね派(>>320)
と、それを否定する派がいる。
0622nobodyさん
2010/10/06(水) 19:04:36ID:???0623nobodyさん
2010/10/07(木) 00:00:19ID:7XdpeleK{$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が読み込まれなくてエラーになります
0624623 つづき
2010/10/07(木) 00:01:02ID:7XdpeleKsetup.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');
?>
0625nobodyさん
2010/10/07(木) 00:01:58ID:7XdpeleK0626nobodyさん
2010/10/07(木) 00:54:54ID:???0627nobodyさん
2010/10/07(木) 08:46:48ID:???そもそもFWのビューがテンプレートエンジンっぽいし。
0628nobodyさん
2010/10/07(木) 08:56:57ID:???0629nobodyさん
2010/10/07(木) 10:03:34ID:???0631623
2010/10/10(日) 21:55:42ID:???0633623
2010/10/11(月) 10:00:47ID:???エラーはこうなりました
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
0634623
2010/10/11(月) 10:08:56ID:???PHP5.3の場合のみなのかわかりませんがこう書くといいみたいでした
$this->Smarty();を
↓
parent::__construct();に書き直す
0635nobodyさん
2010/10/11(月) 17:02:13ID:???本番はどうせlinuxだろ?なら、開発もそっちでやったほうがいいような。
自分はPCのときはcoLinux使ってたが。
UnixなMacは生ローカルでできていい。
0636nobodyさん
2010/10/11(月) 21:12:37ID:???0637nobodyさん
2010/10/11(月) 23:32:00ID:???0638nobodyさん
2010/10/12(火) 04:24:47ID:???0639nobodyさん
2010/10/12(火) 10:43:18ID:???0640nobodyさん
2010/10/12(火) 10:50:08ID:???0641nobodyさん
2010/10/12(火) 11:24:13ID:???0642nobodyさん
2010/10/12(火) 13:14:45ID:???自宅鯖ですら影響あるのに。
0643nobodyさん
2010/10/12(火) 13:15:45ID:???0646nobodyさん
2010/10/12(火) 14:39:50ID:???0647nobodyさん
2010/10/12(火) 14:50:25ID:???0648nobodyさん
2010/10/12(火) 16:41:46ID:???0649nobodyさん
2010/10/12(火) 16:45:52ID:???0650nobodyさん
2010/10/12(火) 19:26:46ID:???0651nobodyさん
2010/10/12(火) 19:39:41ID:???0652nobodyさん
2010/10/12(火) 20:51:06ID:???Google検索で過去1年とか期間していすればいいんじゃないかね?
解説のせいにしてるのはただの情弱だよ。
0653nobodyさん
2010/10/12(火) 21:08:00ID:???0654nobodyさん
2010/10/25(月) 11:37:10ID:???C#とかJavaと比べると
0655nobodyさん
2010/10/25(月) 12:27:43ID:???で、Smartyと何の関係が?
0656nobodyさん
2010/10/25(月) 13:54:51ID:???オブジェクト指向勉強するなら、Javaとかのほうがいいじゃんと思った
徹しても、徹してない今の状況でも初心者はオブジェクト指向でコード書かないっしょ
Smartyの話はしてない
0657nobodyさん
2010/10/25(月) 15:17:12ID:???Java使っても理解出来てない人はOOP出来ないから。
■ このスレッドは過去ログ倉庫に格納されています