メニュー
ブログ更新履歴
コンテンツ更新履歴
リンク
  • rlib-MML デモページ
  • MML (Music Macro Language) をコンパイルし、再生や標準MIDIファイル出力をブラウザ上で行える形にまとめています。
  • Magome
  • クラウドベースのMIDIシーケンサ
    音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています。
twitter
  
現: 2016-04-18 (月) 22:31:27 takatsuka ソース
Line 1: Line 1:
 +PHP のテンプレートエンジンといえば smarty が有名なんだと思いますが、最近はあんまり見なくなったような気がします。
 +昨今の PHP なら標準関数でそれっぽいことが出来るっていうのが大きいんだと思います。
 +というわけで、PHPの標準機能でこさえたテンプレートエンジンクラスが以下です。
 +
 +- テンプレート"ファイル"だけではなく、"文字列"をテンプレートエンジンに食わせたいこともあるだろうと思い、一応用意しています。
 +- エスケープ機能も(中途半端かもですが)一応入れてあります。
 +
 +***クラス定義 [#m4f08a1d]
 +#prettify{{
 +<?php
 +
 +class Render
 +{
 +    // ファイル名を指定してレンダリングします
 +    public static function File($templateFile,$params,$escape=false)
 +   {
 +     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=false)
 +   {
 +       $filepath = tmpfile();
 +       fwrite($filepath,$string);
 +       $metaData = stream_get_meta_data($filepath);
 +       $result = self::File($metaData['uri'],$params,$escape);
 +       return $result;
 +   }
 +
 +}
 +}}
 +***サンプルコード [#b99b9511]
 +#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>手', 3=>'一<br>塁<br>手'];
 +    echo Render::String( $template, $params, false );
 +    echo Render::String( $template, $params, true );
 +
 +}}
 +
 +- (↑こういうときに PHP のヒアドキュメントは色分けが正しくされなくて見にくくなってしまいますがご了承下さい)
  

  • 技術系備忘録/PHP/準備不要のテンプレートエンジン のバックアップ差分(No. All)

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 4306, today: 1, yesterday: 2