カスタム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);
		}
		
	}