input_filename
parent
4b1c853b40
commit
2a40cdbb80
22
template.php
22
template.php
|
@ -13,6 +13,7 @@ class TemplateState
|
||||||
var $in = array();
|
var $in = array();
|
||||||
var $functions = array();
|
var $functions = array();
|
||||||
var $output_position = 0;
|
var $output_position = 0;
|
||||||
|
var $input_filename = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
define('TS_UNIX', 0);
|
define('TS_UNIX', 0);
|
||||||
|
@ -267,7 +268,7 @@ class Template
|
||||||
// Функция компилирует код.
|
// Функция компилирует код.
|
||||||
// $file = $this->compile($code, $fn);
|
// $file = $this->compile($code, $fn);
|
||||||
// require $file;
|
// require $file;
|
||||||
// print $t;
|
// --> class Template_...
|
||||||
function compile($code, $fn)
|
function compile($code, $fn)
|
||||||
{
|
{
|
||||||
$md5 = md5($code);
|
$md5 = md5($code);
|
||||||
|
@ -275,6 +276,17 @@ class Template
|
||||||
if (file_exists($file))
|
if (file_exists($file))
|
||||||
return $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;
|
$bc = $this->begin_code;
|
||||||
if (!$bc)
|
if (!$bc)
|
||||||
|
@ -294,6 +306,7 @@ class Template
|
||||||
}
|
}
|
||||||
|
|
||||||
$st = new TemplateState();
|
$st = new TemplateState();
|
||||||
|
$st->input_filename = $fn;
|
||||||
|
|
||||||
// ищем фрагменты кода - на регэкспах-то было не очень правильно, да и медленно!
|
// ищем фрагменты кода - на регэкспах-то было не очень правильно, да и медленно!
|
||||||
$r = '';
|
$r = '';
|
||||||
|
@ -379,13 +392,6 @@ class Template
|
||||||
|
|
||||||
// заворачиваем основной код в _main()
|
// заворачиваем основной код в _main()
|
||||||
$rfn = addcslashes($fn, '\\\'');
|
$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 = "<?php // $fn
|
$code = "<?php // $fn
|
||||||
class Template_$func_ns extends ".__CLASS__." {
|
class Template_$func_ns extends ".__CLASS__." {
|
||||||
static \$template_filename = '$rfn';
|
static \$template_filename = '$rfn';
|
||||||
|
|
Loading…
Reference in New Issue