From 2a40cdbb8020e4d79baac0d4525e40c734b91253 Mon Sep 17 00:00:00 2001 From: vitalif Date: Sat, 8 Jan 2011 00:10:06 +0000 Subject: [PATCH] input_filename --- template.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/template.php b/template.php index 8e9a0c3..d85b994 100644 --- a/template.php +++ b/template.php @@ -13,6 +13,7 @@ class TemplateState var $in = array(); var $functions = array(); var $output_position = 0; + var $input_filename = ''; } define('TS_UNIX', 0); @@ -267,7 +268,7 @@ class Template // Функция компилирует код. // $file = $this->compile($code, $fn); // require $file; - // print $t; + // --> class Template_... function compile($code, $fn) { $md5 = md5($code); @@ -275,6 +276,17 @@ class Template if (file_exists($file)) return $file; + // "имя" файла для кода не из файла + if (!$fn) + { + $func_ns = 'X' . $md5; + $c = debug_backtrace(); + $c = $c[2]; + $fn = '(inline template at '.$c['file'].':'.$c['line'].')'; + } + else + $func_ns = md5($fn); + // начала/концы спецстрок $bc = $this->begin_code; if (!$bc) @@ -294,6 +306,7 @@ class Template } $st = new TemplateState(); + $st->input_filename = $fn; // ищем фрагменты кода - на регэкспах-то было не очень правильно, да и медленно! $r = ''; @@ -379,13 +392,6 @@ class Template // заворачиваем основной код в _main() $rfn = addcslashes($fn, '\\\''); - if (!$fn) - { - $c = debug_backtrace(); - $c = $c[2]; - $fn = 'inline code in '.$c['class'].$c['type'].$c['function'].'() at '.$c['file'].':'.$c['line']; - } - $func_ns = $fn ? md5($fn) : 'X' . $md5; $code = "