連想配列の要素を使用しPHPとして実行される直前のコードを文字列として返します。
この内容を evalに渡す事でSkinnyの展開処理が実行されています。
Skinnyの設定でキャッシュの利用をONにした際、./cacheフォルダに保存されているのはこのコードです。
$Skinny->SkinnyFetchCache( 'template-filename' , $out , [template-code] )
template-filename : 使用するテンプレートファイル名
$out : テンプレートに渡す連想配列名
template-code : テンプレートのコード内容を直接渡す場合は第三引数で渡します。
(template-filename の指定は無視され、template-code の内容が使用されます)
※動的にテンプレートそのものを生成した場合などに利用してください。
string : $outを展開しPHPとして実行可能なソースコード文字列
<?php include_once( "Skinny.php" ); $out = array(); $out['list'][] = array('age'=>'20', 'name'=>'雷電太郎' ); $out['list'][] = array('age'=>'24', 'name'=>'佐藤一郎' ); $out['list'][] = array('age'=>'21', 'name'=>'田中裕子' ); $out['list'][] = array('age'=>'26', 'name'=>'鈴木雄二' ); $out['count'] = count( $out['list'] ); // sample.htmlで展開しPHPの埋め込まれたソースコードを取得 $csvdata = $Skinny->SkinnyFetchCache( "sample.html", $out ); file_put_contents( "sample.php", $csvdata ); ?>
<% if(count,==,0) %> 該当者が居ませんでした。<br /> <% else %> 下記 <% echo(count) %>人のデータをCSVファイルに書き出しました。<br /> <% /if %> <table> <tr> <th>年齢</th> <th>名前</th> </tr> <% def(list) %> <% each(list) %> <tr> <td><% echo(list/age) %></td> <td><% echo(list/name) %></td> </tr> <% /each %> <% elsedef %> <tr> <td colspan="2">データがありません</td> </tr> <% /def %> </table>
※)見やすいように多少の整形とコメント、PHP部分にカラーリングを施してあります。
<?php $skOutput = $param; # $paramは上記PHPコードの$outです ?> <?php if($skOutput["count"] == 0) { # if ?> 該当者が居ませんでした。<br /> <?php }else{ # else ?> 下記 <?php echo $skOutput["count"]; ?>人 のデータをCSVファイルに書き出しました。<br /> <?php } # /if ?> <table> <tr> <th>年齢</th> <th>名前</th> </tr> <?php # def if( !isset($skOutput["list"]) ){ $skOutput["list"]=null;} if( (!is_array($skOutput["list"]) and strlen($skOutput["list"])!==0) or (is_array($skOutput["list"]) and count($skOutput["list"])!==0) ) { ?> <?php # each if( !isset($skLoopCount["/list"]) ){ $skLoopCount["/list"]=0; } if( !isset($skOutput['list'])){ $skOutput['list']=array(); } for($skLoopCount["/list"]=0; $skLoopCount["/list"] < count($skOutput['list']); $skLoopCount["/list"]++) { ?> <tr> <td><?php echo $skOutput["list"][$skLoopCount["/list"]]["age"]; ?></td> <td><?php echo $skOutput["list"][$skLoopCount["/list"]]["name"]; ?></td> </tr> <?php } # /each ?> <?php }else{ # elsedef ?> <tr> <td colspan="2">データがありません</td> </tr> <?php } # /def ?> </table>