カスタムphp mvcフレームワーク
1216 ワード
<?php
class my_class_tpl {
private $tpl_dir;
private $tpl_c;
private $tpl_vars = array();
public function __construct($tpl_dir = "tpl" , $tpl_c = "tpl_c"){
$this->tpl_dir = rtrim($tpl_dir,"/")."/";
$this->tpl_c = rtrim($tpl_c,"/")."/";
}
public function assign($tpl_var , $value) {
$this->tpl_vars[$tpl_var] = $value;
}
public function display($filename){
$filenametpl = $this->tpl_dir.$filename;
$filenametpl_c = $this->tpl_c."c".$filename.".php";
if (!file_exists($filenametpl)) {
return false;
}
if (!file_exists($filenametpl_c) || filemtime($filenametpl) > filemtime($filenametpl_c)) {
$filenamedata = $this->tpl_replace(file_get_contents($filenametpl));
file_put_contents($filenametpl_c, $filenamedata);
}
include $filenametpl_c;
}
private function tpl_replace ($content){
$pattern = '/\<\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\}\>/i';
$replacement = '<?php echo $this->tpl_vars["${1}"]; ?>';
return preg_replace($pattern, $replacement, $content);
}
}