dervan |
|
---|---|
# medar : Кто-нибудь может прокомментировать, что происходит ? :) Как-то это всё нелогично..Получается, что по ссылке на $GLOBALS парсинг работает дольше, чем при использовании локальной копии. ================ medar, я извиняюсь - не пойдёт этот хак scan_globals(). Во-первых, я не учёл, что после такой переделки весь $GLOBALS можно убить методом assign(), например так:
$t->assign('PHP', 'test_assign');
$t->assign(array('PHP' => 'test_assign_array'));
Добавлял в конец system/header.php такой код, всё так и есть - $GLOBALS уничтожается:
$t->assign('PHP', 'test_assign');
$t->parse("HEADER");
$t->out("HEADER");
echo '<pre>', strip_tags(print_r($GLOBALS, true)), '</pre>';
В принципе, можно в методе assign() проверять ключ на значение 'PHP' и не присваивать в этом случае значение. Но $GLOBALS всё равно можно убить напрямую через vars:
$t->vars['PHP'] = 'test_assign';
К тому же есть нюансы при работе метода parse(). Например, такой код в конце system/header.php, плюс тег {PHP.TEST_DEFINE) в header.tpl:
define('TEST_DEFINE', 'test_define');
$TEST_DEFINE = '';
$t->parse("HEADER");
$t->out("HEADER");
echo $TEST_DEFINE, '<br />';
И вдобавок по твоим тестам с переделанным scan_globals() парсер работает медленнее. Так что в сад. :) Ещё раз извиняюсь. |