我是PHP“class”的新手。我正在寻找一个可以帮助我创建PHP模板的脚本,我找到了这个,但我似乎无法理解这里发生了什么。任何人都可以详细解释。我将非常感激。感谢..
<?php
class skin {
var $filename;
public function __construct($filename) {
$this->filename = $filename;
}
public function mk($filename) {
$this->filename = $filename;
return $this->make();
}
public function make() {
global $CONF;
$file = sprintf('./'.$CONF['theme_path'].'/'.$CONF['theme_name'].'/html/%s.html', $this->filename);
$fh_skin = fopen($file, 'r');
$skin = @fread($fh_skin, filesize($file));
fclose($fh_skin);
return $this->parse($skin);
}
private function parse($skin) {
global $TMPL, $LNG;
$skin = preg_replace_callback('/{\$lng->(.+?)}/i', create_function('$matches', 'global $LNG; return $LNG[$matches[1]];'), $skin);
$skin = preg_replace_callback('/{\$([a-zA-Z0-9_]+)}/', create_function('$matches', 'global $TMPL; return (isset($TMPL[$matches[1]])?$TMPL[$matches[1]]:"");'), $skin);
return $skin;
}
}
?>
答案 0 :(得分:3)
在课程开始时__construct()
将文件名分配给变量,以便在课程的任何地方使用($filename
)。
然后有一个解析它的函数parse()
。
但是出于技术目的,此函数嵌套到另一个函数中。 parse()之前的private关键字意味着它可以由类本身使用。
因此,函数make()
负责使用parse()
;
最终功能mk()
调用make()
。
parse()
解析模板。意味着它使用模板特殊语法(您必须在模板文件中引用)替换实际的最终解析变量和数据。
make()
函数获取文件的内容,并在其中printf()
生成一个可用的完整URL,从给定的参数到它。