Smarty и рекурсия (в частности compiler.defun.php)

Saturn

Новичок
Smarty и рекурсия (в частности compiler.defun.php)

Пользуюсь compiler.defun.php для рекурсии в Smarty. Но под 5-м PHP не всё так гладко (поначалу вообще не работало, пришлось исправлять). Сейчас работает, но всё равно негладко. Плюс пришлось исправлять сам Smarty...

Кто в курсе проблемы, подскажите может есть ещё плагины/модули смарти для рекурсии?
 

alexhemp

Новичок
Saturn

http://www.phpinsider.com/smarty-forum/viewtopic.php?t=291&highlight=recursion

Ну и вообще поиск по форуму смарти по этому слову.

-~{}~ 24.08.05 15:02:

ну и вообще - обновить данный плагин как минимум
 

Saturn

Новичок
Автор оригинала: alexhemp
Saturn

http://www.phpinsider.com/smarty-forum/viewtopic.php?t=291&highlight=recursion

Ну и вообще поиск по форуму смарти по этому слову.

-~{}~ 24.08.05 15:02:

ну и вообще - обновить данный плагин как минимум
1. тему на insider читал.
2. на данном форуме вообще ничего нет такого хорошего в тему (можно и не искать)
3. плагин обновлен, но НЕ РАБОТАЕТ под PHP5.
 

alexhemp

Новичок
Saturn

Вот отсюда обновил?

http://me.ssju.de/compiler.defun/

Это от 15 января 2005 года. php5 тогда уже был зарелизен.

Установлен ли у тебя требуемый для php5 постфильтр?
Код:
/* postfilter to squeeze the code to make php5 happy */
function smarty_postfilter_defun($source, &$compiler) {
    $search = '("' . md5('php-5') . '\[\[[0-9a-f]{32}";)';
    if ((double)phpversion()>=5.0) {
        /* filter sourcecode. look for func_keys and replace all $this
           in-between with $smarty */
        while (1) {
            $new_source = preg_replace_callback('/' . $search . '(.*)\\1/Us', 'smarty_replace_fun', $source);
            if (strcmp($new_source, $source)==0) break;
            $source = $new_source;
        }
    } else {
        /* remove func_keys */
        $source = preg_replace('/' . $search . '/', '', $source);
    }
    return $source;
}
$this->register_postfilter('smarty_postfilter_defun');
-~{}~ 26.08.05 20:04:

Да еще забыл, там еще есть комментарий ниже

нужно еще в php.ini
zend.ze1_compatibility_mode = On
 

Saturn

Новичок
модуль обновил конечно.
не работает при таких условиях.
 
Сверху