Форумы / National / Russian / Шаблонизатор

dervan
#9641 10.03.2009 04:05
# medar : dervan
Надо будет решить эту проблему по-другому - вообще отказаться от scan_globals(), а при парсинге тэгов {PHP.xxx} обращаться непосредственно к $GLOBALS.

Кстати, medar, если так переделывать, то вот от таких накладок при работе parse() всё равно не избавишься:
# dervan : К тому же есть нюансы при работе метода 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() глобальная переменная $TEST_DEFINE останется пустой строкой (значение будет присвоено её копии), а с переделанным scan_globals() после работы парсера $TEST_DEFINE получит значение 'test_define'.

А действия, подобные
$t->assign('PHP', 'test_assign');
это совершенно идиотские действия, что со старым scan_globals(), что с переделанным - из того же разряда, что и доступ к глобальным переменным через $t->vars. Так что если отказываться от локальной копии $GLOBALS, пожалуй нет смысла совсем убирать scan_globals(), проще его подправить.