模板控制

建立一个功能类 Template,组织模板基本逻辑。

基本功能

  1. 输出 php 文件,静态 HTML 文件控制
  2. 输入模板文件名+变量字典,输出 php 文件
  3. 如果启用缓存,则继续输出 HTML 文件

简单实现

输出逻辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public function show($key)
{
$tmpl_path = $this->templateFile($key);

if(!is_file($tmpl_path))
{
exit('找不到对应的模板');
}

$cacheFile = $this->cacheFile($key);

if($this->needCacheWithKey($key))
{
readfile($cacheFile);
$this->debug['cached'] = 'true';
}
else
{
$this->debug['cached'] = 'false';

if($this->needCache())
{
ob_start();
}

{
$compileTool = new CompileClass($tmpl_path, $this->arrayConfig);
$content = $compileTool->compile();
$compileFile = $this->compiledFile($key) . md5($content);
if(!is_file($compileFile))
{
$compileTool->saveToDisk($compileFile);
}
include $compileFile;
}

if($this->needCache())
{
$message = ob_get_contents();
file_put_contents($cacheFile, $message);
}
}

$this->debug['spend'] = microtime(TRUE) - $this->debug['begin'];
$this->debug['count'] = count($this->valueMap);
$this->debugInfo();
}
重载方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public function getValue($key, $default_value)
{
if(array_key_exists($key, $this->valueMap))
{
return $this->valueMap[$key];
}
else
{
return $default_value;
}
}

public function __set($key, $value)
{
$this->$key = $value;
}

public function __get($key)
{
if(array_key_exists($key, $this->valueMap))
{
return $this->valueMap[$key];
}
else
{
return NULL;
}
}

public function printValueWithKey($key, $default_value = '')
{
$value = $this->getValue($key, $default_value);
echo $value;
}