ページへ戻る
印刷
技術系備忘録/PHP/準備不要のテンプレートエンジン
をテンプレートにして作成 ::
シンクリッジ
xpwiki
:技術系備忘録/PHP/準備不要のテンプレートエンジン をテンプレートにして作成
開始行:
PHP のテンプレートエンジンといえば smarty が有名なんだと...
昨今の PHP なら標準関数でそれっぽいことが出来るっていうの...
というわけで、PHPの標準機能でこさえたテンプレートエンジン...
- テンプレート"ファイル"だけではなく、"文字列"をテンプレ...
- エスケープ機能も(中途半端かもですが)一応入れてありま...
***クラス定義
#prettify{{
<?php
class Render
{
// ファイル名を指定してレンダリングします
public static function File($templateFile,$params,$escap...
{
if( $escape ){
// エスケープ処理。中途半端なので適宜調整のこと。
$funcEscape = function( $funcEscape, $val )
{
if( is_string($val) ){
$val = htmlentities($val,ENT_QUOTES);
}elseif( is_array($val) ){
foreach( $val as $key => &$v ){
$v = $funcEscape($funcEscape,$v);
}
}
return $val;
};
$params = $funcEscape( $funcEscape, $params );
}
ob_start();
extract($params);
include $templateFile;
$result = ob_get_contents();
ob_end_clean();
return $result;
}
// 文字列を渡してレンダリングします
public static function String($string,$params,$escape...
{
$filepath = tmpfile();
fwrite($filepath,$string);
$metaData = stream_get_meta_data($filepath);
$result = self::File($metaData['uri'],$params,$es...
return $result;
}
}
}}
***サンプルコード
#prettify{{
// サンプルコード
$template = <<< EOD
<table border="1">
<?php foreach(\$data as \$key => \$val ){ ?>
<tr>
<td>
<?php echo \$key; ?>
</td>
<td>
<?php echo \$val; ?>
</td>
</tr>
<?php } ?>
</table>
のゲッツー!
EOD;
$params['data'] = [ 4=>'遊<br>撃<br>手', 6=>'二<br>塁<br...
echo Render::String( $template, $params, false );
echo Render::String( $template, $params, true );
}}
- (↑こういうときに PHP のヒアドキュメントは色分けが正しく...
終了行:
PHP のテンプレートエンジンといえば smarty が有名なんだと...
昨今の PHP なら標準関数でそれっぽいことが出来るっていうの...
というわけで、PHPの標準機能でこさえたテンプレートエンジン...
- テンプレート"ファイル"だけではなく、"文字列"をテンプレ...
- エスケープ機能も(中途半端かもですが)一応入れてありま...
***クラス定義
#prettify{{
<?php
class Render
{
// ファイル名を指定してレンダリングします
public static function File($templateFile,$params,$escap...
{
if( $escape ){
// エスケープ処理。中途半端なので適宜調整のこと。
$funcEscape = function( $funcEscape, $val )
{
if( is_string($val) ){
$val = htmlentities($val,ENT_QUOTES);
}elseif( is_array($val) ){
foreach( $val as $key => &$v ){
$v = $funcEscape($funcEscape,$v);
}
}
return $val;
};
$params = $funcEscape( $funcEscape, $params );
}
ob_start();
extract($params);
include $templateFile;
$result = ob_get_contents();
ob_end_clean();
return $result;
}
// 文字列を渡してレンダリングします
public static function String($string,$params,$escape...
{
$filepath = tmpfile();
fwrite($filepath,$string);
$metaData = stream_get_meta_data($filepath);
$result = self::File($metaData['uri'],$params,$es...
return $result;
}
}
}}
***サンプルコード
#prettify{{
// サンプルコード
$template = <<< EOD
<table border="1">
<?php foreach(\$data as \$key => \$val ){ ?>
<tr>
<td>
<?php echo \$key; ?>
</td>
<td>
<?php echo \$val; ?>
</td>
</tr>
<?php } ?>
</table>
のゲッツー!
EOD;
$params['data'] = [ 4=>'遊<br>撃<br>手', 6=>'二<br>塁<br...
echo Render::String( $template, $params, false );
echo Render::String( $template, $params, true );
}}
- (↑こういうときに PHP のヒアドキュメントは色分けが正しく...
ページ名: