123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737 |
- <?php
- class Template extends StarTemplate {
- var $StarTemplate_set;
-
- function __construct(){
- }
-
- function _init($template_Name){
-
- /* 设置模板引擎配置(数组) */
- $this->StarTemplate_set = array(
-
- /* 模板语法前后标示符 */
- 'left_tag' => '{',
- 'right_tag' => '}',
-
- /* 模板路径,以default为默认模板 (详细使用方法,请查看官方手册) */
- 'templateDir' => array('default' => 'template/'.$template_Name),
-
- /* 默认使用模板,此与模板路径键对应 */
- 'template_Name' => 'default',
-
- /* 模板文件后缀名 */
- 'templateExt' => '.html',
-
- /* 是否持续编译模板 (用于调试时用) */
- 'force_compile' => FALSE,
-
- /* 是否开启直接插入PHP代码 */
- 'PHP_off' => FALSE,
-
- /* 定义模板编译目录,结尾不要加斜杠 '/' */
- 'templateCompileDir' => 'data/cache/compile',
-
- /* 模板编译文件的后缀名 */
- 'templateCompileExt' => '.phpc',
-
- /* 是否使用输出缓存 */
- 'cache_is' => FALSE,
-
- /* 输出缓存标示符 默认为 当前URL 的MD5值 */
- /*
- * 此功能,在您在调用输出缓存时,需要指定的,以防止模板缓存重复,以影响您的程序输出
- * 可在使用时,自行定义
- *
- */
- 'cacheId' => md5($_SERVER['REQUEST_URI']),
-
- /* 输出缓存时间 单位秒 */
- 'cache_time' => 10,
-
- /* 输出缓存目录,结尾不要加斜杠 '/' */
- 'templateCacheDir' => 'data/cache/template',
-
- /* 输出缓存文件后缀名 */
- 'templateCacheExt' => '.phpo',
-
- /* 扩展功能(Function)插件存放路径,结尾不要加斜杠 '/' */
- 'templatePluginsDir' => 'StarTemplate_Plugins',
-
- /* 由本程序所创建的目录权限 代码 */
- 'dir_mode' => 0777,
-
- /* 被编译模板文件的大小限制 单位 M */
- 'file_max' => 1,
-
- /* 开启Gzip传输,提高传输速度 (此功能只在使用display是适用) */
- 'gzip_off' => false,
-
- /* 兼容选项,如果模板引擎输出空白,请开启此项 */
- 'compatible' => true,
-
- /* 此为调试时开启,可自动弹出一个窗口,窗口里为 StarTemplate 模板引擎的所有配置文件,包括注入的资源 (方便调试) */
- 'debug' => false,
-
- /* 是否存在已定义的 error_reporting */
- 'error_reporting' => false,
-
- 'classDir' => FCPATH
- /* 默认的提示语言为中文, 您可以编写简单的语言包,为此程序增加提示语言的可读性 */
-
- );
-
- $this->setConfig($this->StarTemplate_set);
-
-
- }
-
- }
- class StarTemplate
- {
- // 引擎选项
- private $arrayConfig = array();
-
- /* 模板编译信息提示 默认中文 ( 如果特定语言包存在,将自动读取 ) */
- public $StarTemplate_Class_Lang = array(
- ' 模板文件不存在或读取失败',
- ' 模板文件大小超出限制',
- ' 模板文件没有正常加载',
- '严重错误',
- '程序警告',
- '语法错误',
- '文件名称',
- '错误等级',
- '错误所在',
- '错误信息',
- '缓存文件路径',
- '错误源产生在',
- );
-
-
- // 类实例化 (进行数组设置)
- public function __construct($arrayConfig = array())
- {
- /* 获取当前类所在目录 */
- $this->arrayConfig['classDir'] = dirname(str_replace('\\','/',__FILE__));
-
- /* 载入配置 */
- $this->arrayConfig += $arrayConfig;
-
-
- /* 获取当前类名称 (防止类名称修改,导致报错机制失败) */
- $this->arrayConfig['ClassName'] = __CLASS__;
-
- /* 类被初始化时 自动读取语言包 (并判断语言包是否有效) */
- global $_StarTemplate_Class_Lang;
- if (is_array($_StarTemplate_Class_Lang))
- {
- $this->StarTemplate_Class_Lang += $_StarTemplate_Class_Lang;
- }
-
- /* 载入扩展功能文件 */
- $Plugins = $this->get_Template_Plugins();
- if (is_array($Plugins))
- {
- foreach ($Plugins as $p_path){ include $p_path; }
- }
-
- }
-
- /* 设置引擎 */
- public function setConfig($key, $value = null)
- {
- if (is_array($key))
- {
- $this->arrayConfig += $key;
- }else{
- $this->arrayConfig[$key] = $value;
- }
- }
-
- /* 获取当前模板引擎配置 */
- public function getConfig($key = null)
- {
- if ($key)
- {
- return $this->arrayConfig[$key];
- }
- return $this->arrayConfig;
- }
-
- /* 向模板引擎中注入变量 */
- public function assign($key,$val = null)
- {
- if (empty($key)) return '';
- if (is_array($key))
- {
- foreach ($key as $k=>$v)
- {
- $this->arrayConfig['GLOBALS'][$k] = $v;
- }
- }else{
- $this->arrayConfig['GLOBALS'][$key] = $val;
- }
- }
-
- /* 取得变量值 */
- private function & get_Value($key)
- {
- if (isset($this->arrayConfig['GLOBALS'][$key]))
- {
- return $this->arrayConfig['GLOBALS'][$key];
- }else{
- global $$key;
- if ($$key)
- {
- $this->assign($key,$$key);
- }
- return $$key;
- }
- }
-
- /* 取得模板路径 */
- private function get_Template_Path($templateName)
- {
- return $this->arrayConfig['templateDir'][(empty($this->arrayConfig['template_Name']) ? 'default' : $this->arrayConfig['template_Name'])].'/'.$templateName.$this->arrayConfig['templateExt'];
- }
-
- /* 获取模板编译路径 */
- private function get_Template_Compile_Path($templateName)
- {
- return $this->arrayConfig['classDir'].'/'.$this->arrayConfig['templateCompileDir'].'/'.md5($this->get_Template_Path($templateName)).$this->arrayConfig['templateCompileExt'];
- }
-
- /* 获取模板缓存路径 */
- private function get_Template_Cache_Path($templateName, $all = false)
- {
- if ($all)
- {
- if ($all === true)
- {
- $tmp_path = md5($templateName).'*';
- }else{
- $tmp_path = md5($templateName).$all;
- }
- }else{
- $tmp_path = md5($templateName).$this->arrayConfig['cacheId'];
- }
- return $this->arrayConfig['classDir'].'/'.$this->arrayConfig['templateCacheDir'].'/'.$tmp_path.$this->arrayConfig['templateCacheExt'];
- }
-
- /* 获取扩展功能文件列表 */
- private function get_Template_Plugins()
- {
- if (is_dir($this->arrayConfig['classDir'].'/'.$this->arrayConfig['templatePluginsDir'].'/'))
- {
- return glob($this->arrayConfig['classDir'].'/'.$this->arrayConfig['templatePluginsDir'].'/*.php');
- }
- }
-
- /* 判断缓存输出是否有效/是否开启缓存输出 */
- public function is_cached($templateName)
- {
- $_PATH = $this->get_Template_Cache_Path($templateName);
- if (!file_exists($_PATH))
- {
- return false;
- }elseif (filemtime($_PATH) + $this->arrayConfig['cache_time'] < time()){
- return false;
- }else{
- return true;
- }
- }
-
- /* 读取文件 */
- private function template_Read($PATH)
- {
- if (function_exists('file_get_contents'))
- {
- return file_get_contents($PATH);
- }else{
- $fopen = fopen($PATH,'r');
- $template_Content = '';
- do {
- $data = fread($fopen,1024);
- if (strlen($data)===0) break;
- $template_Content .= $data;
- }while(1);
- fclose($fopen);
-
- return $template_Content;
- }
- }
-
- /* 写入文件 */
- private function template_Write($PATH,$String)
- {
- /* 调用递归创建目录 */
- $this->template_CreateDir(dirname($PATH));
- /* 以写入方式打开文件句柄,开启 flock */
- $fopen = fopen($PATH,'w');
- flock($fopen, LOCK_EX + LOCK_NB);
- $fwrite = fwrite($fopen,$String);
- /* 失败重新尝试写入 */
- if (!$fwrite) $fwrite = fwrite($fopen,$String);
- flock($fopen, LOCK_UN + LOCK_NB);
- fclose($fopen);
- return $fwrite;
- }
-
- /* 循环创建目录 */
- private function template_CreateDir($Dir)
- {
- if (is_dir($Dir))
- return true;
-
- if (mkdir($Dir, $this->arrayConfig['dir_mode']))
- return true;
-
- if (!$this->template_CreateDir(dirname($Dir)))
- return false;
-
- return mkdir($Dir, $this->arrayConfig['dir_mode']);
- }
-
- public function getMicrotime()
- {
- list($microtime_1,$microtime_2) = explode(' ',microtime());
- return $microtime_1 + $microtime_2;
- }
- /* 输出模板 */
- public function display($templateName, $key = '',$Clean = 0)
- {
- $this->StarTemplate_Display($templateName,$Clean,'display',$key);
- }
-
- /* 返回输出模板 */
- public function fetch($templateName, $key = '')
- {
- $Clean = 0;
- return $this->StarTemplate_Display($templateName,$Clean,'output',$key);
- }
-
- /* 输出模板 */
- private function StarTemplate_Display($templateName,$Clean = 0,$display = '',$key = '')
- {
-
- /* 定义错误信息 */
- if (!$this->arrayConfig['error_reporting'])
- {
- $StarTemplate_old_err = error_reporting();
- error_reporting(E_ERROR | E_WARNING | E_PARSE);
- }
-
- /* 设定模板 */
- if ($key)
- {
- $tmp_key = $this->arrayConfig['template_Name'];
- $this->arrayConfig['template_Name'] = $key;
- }
-
- /* 引擎运行时间统计 */
- $this->arrayConfig['Runtime'] = $this->getMicrotime();
-
- if ($this->arrayConfig['cache_is'])
- $_PATH = $this->get_Template_Cache_Path($templateName);
-
- if (!$this->is_cached($templateName) || $Clean)
- {
- /* 将错误载入特定函数处理 */
- if ($this->arrayConfig['compatible'])
- {
- ob_start();
- }else{
- // 载入Debug类
- //$class_debug = new StarTemplate_debug($this);
- //ob_start(array($class_debug,'StarTemplate_xError'));
- }
- /* 进行模板编译 */
- include $this->StarTemplate_compile($templateName,$Clean);
-
- $StarTemplate_Content = ob_get_contents();
- ob_end_clean();
- }else{
- /* 读取缓存输出文件 */
- $StarTemplate_Content = $this->template_Read($_PATH);
- }
- /* 判断是否可以写入缓存输出内容 */
- if ($this->arrayConfig['cache_is'])
- {
- /* 判断缓存输出是否有效 */
- if (!$this->is_cached($templateName))
- $this->template_write($_PATH,$StarTemplate_Content);
- }
-
- if ($this->arrayConfig['debug'])
- {
- unset($this->arrayConfig['GLOBALS'][$this->arrayConfig['ClassName']]);
- ob_start(); print_r($this->arrayConfig); $debug = ob_get_contents(); ob_end_clean();
- $StarTemplate_Content .= '<div id="Me" style="display:none;">'.highlight_string($debug,1).'</div>'.'<script type="text/javascript">var code=document.getElementById("Me").innerHTML;var newwin=window.open("","","height=600 ,width=500,scrollbars=yes"); newwin.opener = null ;newwin.document.write(code); newwin.document.close();</script>';
- }
-
- switch ($display)
- {
- case 'display':
- echo $StarTemplate_Content;
-
- $StarTemplate_Content = null;
- break;
- }
-
- /* 返回执行时间 */
- $this->template_Runtime();
-
- if (isset($tmp_key)) $this->arrayConfig['template_Name'] = $tmp_key;
- if ($this->arrayConfig['gzip_off'] && ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING']))
- {
- ob_start('ob_gzhandler');
- }
-
- /* 定义错误信息 */
- if (!$this->arrayConfig['error_reporting'])
- error_reporting($StarTemplate_old_err);
-
- return $StarTemplate_Content;
- }
-
- /*******************************************************************/
- /* 编译开始
- /*******************************************************************/
-
-
- /* 转换标示符 */
- private function ConverTag($Tag)
- {
- $_count = strlen($Tag);
- $new_array = array('{','}','[',']','$','(',')','*','+','.','?','\\','^','|');
- $Tag_ = '';
- for ($i=0;$i<$_count;$i++)
- {
- $Tag_ .= (in_array($Tag[$i],$new_array)?'\\':'').$Tag[$i];
- }
- return $Tag_;
- }
- /* 模板引擎编译 */
- private function StarTemplate_compile($templateName,$Clean = 0)
- {
- $_PATH = array();
- /* 取得有效模板路径 */
- $_PATH['From'] = $this->get_Template_Path($templateName);
- $_PATH['Save'] = $this->get_Template_Compile_Path($templateName);
-
- /* 判断模板文件是否存在 */
- if (!file_exists($_PATH['From'])) return $_PATH['From'].' {'.$templateName.$this->StarTemplate_Class_Lang[0].'}';
- /* 判断模板缓存文件是否需要更新 */
- if ($this->arrayConfig['force_compile']) $Clean = 1;
-
- if (!$Clean)
- {
- if (file_exists($_PATH['From']))
- $_fromt = filemtime($_PATH['From']);
- if (file_exists($_PATH['Save']))
- $_savet = filemtime($_PATH['Save']);
- if ($_fromt <= $_savet)
- {
- return $_PATH['Save'];
- }
- }
-
- /* 判断模板文件大小限制 */
- if (filesize($_PATH['From']) > $this->arrayConfig['file_max'] * 1024 * 1024) return $this->StarTemplate_Error($templateName.$this->StarTemplate_Class_Lang[1].' ('.$this->arrayConfig['file_max'].' M)');
-
- /* 取得有效标示 */
- $_Left = '(?<!!)'.$this->ConverTag($this->arrayConfig['left_tag']);
- $_Right = '((?<![!]))'.$this->ConverTag($this->arrayConfig['right_tag']);
-
- /* 取得模板源 */
- $StarTemplate_Conver = $this->template_read($_PATH['From']);
- /* 如果模板为空,不进行编译 */
- if (empty($StarTemplate_Conver))
- {
- $this->template_Write($_PATH['Save'],$StarTemplate_Conver);
- return $_PATH['Save'];
- }
-
- /* **************模板进行相关编译起始******************* */
- /*
- Start// write by xbantu 2009-06-06
- */
- $StarTemplate_Conver = trim($StarTemplate_Conver);
-
- preg_match_all('/'.$_Left.'Template (([\w|-|\/]{1,})|(\$([_a-zA-Z][\w]+)))'.$_Right.'/',$StarTemplate_Conver,$Include_);
- $Include_count = count($Include_[0]);
-
- /* 模板文件嵌套调用处理 */
- for ($i=0;$i< $Include_count;$i++)
- {
- /* 编译相应调入模板文件 */
- $StarTemplate_Conver = str_replace($Include_[0][$i],$this->arrayConfig['left_tag'].'eval include $this->StarTemplate_compile("'.$Include_[1][$i].'")'.$this->arrayConfig['right_tag'],$StarTemplate_Conver);
-
- /* 2009-06-07 放弃使用模板状态提示 */
- /*
- // 提示模板文件加载状态
- $Include_Tmp_Name = $this->get_StarTemplate_path($Include_[1][$i]);
- $StarTemplate_Conver = str_replace($Include_[0][$i],$this->StarTemplate_Left.' '.$Include_[1][$i].$this->StarTemplate_Class_Lang[2].$this->StarTemplate_Right,$StarTemplate_Conver);
- */
- }
- unset($Include_);
-
- /* 获取模板所使用变量 */
- preg_match_all('/\$([_a-zA-Z][\w]+)/',$StarTemplate_Conver,$Global_var);
- if (is_array($Global_var[1]))
- {
- $Global_var[1] = array_unique($Global_var[1]);
- $Global_var_Im = array('this','_GET','_POST','_COOKIE','_SERVER','_SESSION','_FILES','_ENV');
- $Global_var_out = '';
- foreach ($Global_var[1] as $val)
- {
- if (!in_array($val,$Global_var_Im))
- {
- $Global_var_out .= '$'.$val.' =& $this->get_Value(\''.$val.'\'); ';
- }
- }
- }
- /* 相关标签转换 */
- $Template_preg = array();
- $Template_Replace = array();
- /* 判断是否允许插入PHP */
- if ($this->arrayConfig['PHP_off'] === false)
- {
- $StarTemplate_Preg[] = '/<\?(=|php|)(.+?)\?>/is';
-
- $StarTemplate_Replace[] = '<?\\1\\2?>';
- }
- /*
- 此类编译的语法
- _if
- _elseif
- _else
- _for
- _while
- _foreach
- _eval
- _echo
- _print_r
- _变量输出
- */
-
- $StarTemplate_Preg[] = '/'.$_Left.'(else if|elseif) (.*?)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'for (.*?)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'while (.*?)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'(loop|foreach) (.*?)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'if (.*?)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'else'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left."(eval|_)( |[\r\n])(.*?)".$_Right.'/is';
- $StarTemplate_Preg[] = '/'.$_Left.'_e (.*?)'.$_Right.'/is';
- $StarTemplate_Preg[] = '/'.$_Left.'_p (.*?)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'\/(if|for|loop|foreach|eval|while)'.$_Right.'/i';
- $StarTemplate_Preg[] = '/'.$_Left.'((( *(\+\+|--) *)*?(([_a-zA-Z][\w]*\(.*?\))|\$((\w+)((\[|\()(\'|")?\$*\w*(\'|")?(\)|\]))*((->)?\$?(\w*)(\((\'|")?(.*?)(\'|")?\)|))){0,})( *\.?[^ \.]*? *)*?){1,})'.$_Right.'/i';
- $StarTemplate_Preg[] = "/( | ){0,}(\r\n){1,}\";/";
- $StarTemplate_Preg[] = '/'.$_Left.'(\#|\*)(.*?)(\#|\*)'.$_Right.'/';
- $StarTemplate_Preg[] = '/'.$_Left.'\%([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)'.$_Right.'/';
- /* 编译为相应的PHP文件语法 _所产生错误在运行时提示 */
- $StarTemplate_Replace[] = '<?php }else if (\\2){ ?>';
- $StarTemplate_Replace[] = '<?php for (\\1) { ?>';
- $StarTemplate_Replace[] = '<?php while (\\1) { ?>';
- $StarTemplate_Replace[] = '<?php foreach ((array)\\2) { $__i++; ?>';
- $StarTemplate_Replace[] = '<?php if (\\1){ ?>';
- $StarTemplate_Replace[] = '<?php }else{ ?>';
- $StarTemplate_Replace[] = '<?php \\3; ?>';
- $StarTemplate_Replace[] = '<?php echo \\1; ?>';
- $StarTemplate_Replace[] = '<?php print_r(\\1); ?>';
- $StarTemplate_Replace[] = '<?php } ?>';
- $StarTemplate_Replace[] = '<?php echo \\1;?>';
- $StarTemplate_Replace[] = '';
- $StarTemplate_Replace[] = '';
- $StarTemplate_Replace[] = '<?php echo $this->lang_array[\'\\1\'];?>';
-
- /* 在有必要时 开启 */
- //ksort($StarTemplate_Preg);
- //ksort($StarTemplate_Replace);
-
- /* 执行正则分析编译 */
- $StarTemplate_Conver=preg_replace($StarTemplate_Preg,$StarTemplate_Replace,$StarTemplate_Conver);
-
- /* 过滤敏感字符 */
- $StarTemplate_Conver = str_replace(array('!'.$this->arrayConfig['right_tag'],'!'.$this->arrayConfig['left_tag'],'?><?php'),array($this->arrayConfig['right_tag'],$this->arrayConfig['left_tag'],''),$StarTemplate_Conver);
- /* 整理输出缓存内容 */
- if ($Global_var_out)
- {
- $StarTemplate_Conver = "<?php $Global_var_out ?>\r\n".$StarTemplate_Conver;
- }
-
- $this->template_write($_PATH['Save'],$StarTemplate_Conver);
-
- /*
- End conver;
- */
- /* ***************模板进行相关编译结束******************** */
-
- return $_PATH['Save'];
- }
- /* 类错误信息输出 */
- private function StarTemplate_Error($Msg)
- {
- echo $Msg;
-
- /*exit;*/
- }
-
-
- /* 清理缓存输出 或缓存 */
- public function StarTemplate_clean($type = 'cache')
- {
-
- switch ($type)
- {
- /* 判断是否是输出缓存 */
- case 'cache':
- $_PATH = dirname($this->get_Template_Cache_Path('_'));
- $_END = $this->arrayConfig['templateCacheExt'];
-
- $_PATH_ = glob($_PATH.'/*'.$_END);
- break;
-
- /* 判断是否是模板缓存 */
- case 'compile':
- $_PATH = dirname($this->get_Template_Compile_Path('_'));
- $_END = $this->arrayConfig['templateCompileExt'];
-
- $_PATH_ = glob($_PATH.'/*'.$_END);
- break;
- }
-
- /* 判断是否是输出缓存 */
- if (!empty($type) && empty($_PATH))
- {
- echo $_PATH = $this->get_Template_Cache_Path($type, true);
-
- $_PATH_ = glob($_PATH);
- }
-
- if ($_PATH_)
- {
-
- if (is_array($_PATH_))
- {
- $j = 0;
- foreach ($_PATH_ as $val)
- {
- if (file_exists($val))
- {
- unlink($val);
- $j ++;
- }
- }
- return $j;
- }else{
- return false;
- }
- }
-
- return false;
- }
-
- /* 获取实时模板引擎运行时间 */
- public function template_Runtime()
- {
- /* 返回执行时间 */
- return $this->arrayConfig['Runtime'] = round($this->getMicrotime() - $this->arrayConfig['Runtime'],5);
- }
- /* 释放资源 */
- public function __destruct()
- {
- $this->arrayConfig = null;
- }
-
- //类结束
- }
- class StarTemplate_debug
- {
- private $thiss = null;
-
- /* 类实例化($this) */
- public function __construct($thiss)
- {
- $this->thiss = $thiss;
- }
-
- /* 模板错误输出 */
- public function StarTemplate_xError($_StarTemplate_error)
- {
- /* 获取最后一次错误记录 */
- $_StarTemplate_error_ = error_get_last();
- $_StarTemplate_error = array();
-
- /* 判断是否重要错误信息 */
- switch ($_StarTemplate_error_['type'])
- {
- case 1: $_StarTemplate_error['type'] = $this->thiss->StarTemplate_Class_Lang[3];
- case 2: $_StarTemplate_error['type'] = $this->thiss->StarTemplate_Class_Lang[4];
- case 4: $_StarTemplate_error['type'] = $this->thiss->StarTemplate_Class_Lang[5];
- default:
- $_StarTemplate_error['type'] = '1';
- }
-
- /* 错误信息格式化 */
- if ($_StarTemplate_error['type'])
- {
- $_StarTemplate_error['body'] = file($_StarTemplate_error_['file']);
-
- $_StarTemplate_error['err_'] = "<meta http-equiv=Content-Type content=\"text/html;charset=utf-8\"><font size=2 color=#333333>\r\n";
- $_StarTemplate_error['err_'] .= "[StarTemplate] <br /><br />\r\n";
- $_StarTemplate_error['err_'] .= $this->thiss->StarTemplate_Class_Lang[6].': '.str_replace($this->thiss->StarTemplate_Cache_End,'',basename($_StarTemplate_error_['file']))."<br />\r\n";
- $_StarTemplate_error['err_'] .= $this->thiss->StarTemplate_Class_Lang[7].': '.$_StarTemplate_error['type']."<br />\r\n";
- $_StarTemplate_error['err_'] .= $this->thiss->StarTemplate_Class_Lang[8].': '.htmlspecialchars($_StarTemplate_error['body'][$_StarTemplate_error_['line']-1])."<br />\r\n";
- $_StarTemplate_error['err_'] .= $this->thiss->StarTemplate_Class_Lang[9].': '.$_StarTemplate_error_['message']."<br /><br />\r\n";
- $_StarTemplate_error['err_'] .= "</font><font size=2 color=#999999>\r\n";
- $_StarTemplate_error['err_'] .= $this->thiss->StarTemplate_Class_Lang[10].': {SERVER_PATH}/'.$this->thiss->StarTemplate_Cache_Dir.'/'.basename($_StarTemplate_error_['file'])."<br />\r\n";
- $_StarTemplate_error['err_'] .= $this->thiss->StarTemplate_Class_Lang[11].': '.$_StarTemplate_error_['line']." {$this->thiss->StarTemplate_Class_Lang[12]}<br />\r\n";
- $_StarTemplate_error['err_'] .= "</font>\r\n";
- }
- return $_StarTemplate_error['err_'];
- }
- }
|