前回リリースしたシンプレットクラス(http://bbs.phpchina.com/thread-85257-1-1.html)の後、多次元配列をサポートしていないなど多くの欠陥があることが判明しました。キャッシュ機能はありませんでしたが、今回はこれらの機能をすべて追加しました。 ! !
ご興味があれば、次回、このクラスを作成するための私のアイデアと方法について説明するチュートリアルを公開します。 ! !応援していただける方はフォローして応援していただけます!
PHP代码:
simplet.class.php
class SimpleT {
private $t_vars;
private $templates_dir;
private $templates_c_dir;
private $cache;
private $cache_dir;
パブリック関数 __construct( ) {
$this->templates_dir = ./templates/;
$this->templates_c_dir = ./templates_c/;
$this->cache = 0;
$this->cache_dir = 。 /キャッシュ/ ; )./;
elseif($type == template_c)
$this->templates_c_dir = rtrim($dir, /)./;
elseif($type == キャッシュ)
$ this->cache_dir = rtrim( $dir, /)./;
else
return false;
return true;
} else {
return false;
}
}
パブリック関数キャッシュ($time) {
if(is_numeric($time)) {
$this->cache = $time;
return true;
} else {
return false;
}
}
public function assign($var , $value = NULL) {
if (is_array($var) ) {
foreach ($var as $key => $val) {
$this->t_vars[$key] = $val;
}
} else {
$this->t_vars[$var] = $value;
}
}
プライベート関数 comp($ filename) {
try {
if(!$fp = fopen($filename, r)) {
throw new Exception(Can not open . $filename);
}
$filesize = ファイルサイズ($filename);
if( $filesize throw new Exception(ファイルサイズは > 0 である必要があります);
}
$content = fread($fp, $filesize);
fclose($fp);
設定解除($fp) ;
$content = preg_replace("/ $content = preg_replace("/ $content = preg_replace("/ $content = preg_replace("/", $content);
$content = preg_replace("//", "< ;?php echo $$1_key ;?>", $content);
$content = preg_replace("// ", "", $content);
$content = preg_replace("/ $content = preg_replace("/<%##common##%>([^<%##end##%>]{0,}) <%##end##%>/", "", $content);
if (preg_match_all("/<%{([^(}%>>)]{1,})}%>/", $content, $files)) {
$this->comp($this->templates_dir . $files[1][0]);
}
$content = preg_replace("/<%{([^(}%>)]{ 1,})}%>/", "templates_c_dir}simplet_comp_$1.php; ?>", $content);
echo $content;
$fp = fopen( $this->templates_c_dir .simplet_comp_ .basename($filename) .php, w);
if(!fwrite($fp, $content)) {
. $filename にコンテンツを書き込めません;
&