Как исправить шаблонизатор для PHP 4

Тема в разделе "Как сделать...", создана пользователем асс, 9 апр 2013.

Статус темы:
Закрыта.
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Добрый день.

    Есть шаблонизатор

    Код:
    <?php
     
    if (! defined ( 'MODULEINDEX' )) {
        die ( "Hacking attempt!" );
    }
    class parse_class
        {
        var $vars    = array();
        var $template;
     
        function get_tpl($tpl_name)
          {
          if(empty($tpl_name) || !file_exists($tpl_name))
            {
            return false;
            }
          else
            {
            $this->template  = file_get_contents($tpl_name);
            }
          }
        function set_tpl($key,$var)
          {
          $this->vars[$key] = $var;
          }
        function tpl_parse()
          {
          foreach($this->vars as $find => $replace)
                {
                $this->template = str_replace($find, $replace, $this->template);
                }
          }
        }
    $parse = new parse_class;
    ?>

    Код:
    $parse->get_tpl('index.tpl'); 
    $parse->set_tpl('{CONTENT}',$content);
     
    $parse->tpl_parse(); //Парсим
    print $parse->template; //Выводим нашу страничку

    В PHP 5 все пашет в четверне не работает.

    Как переписать чтоб работала в четверке, ато не охота перекидыввать на другой хостинг.
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.368
    что значит не пашет, какие ошибки отображает?

    Все функции должны идти и под 4 версией, запись if (! defined ( 'MODULEINDEX' )) намекает на то, что файл подключается из другого скрипта, ошибка может быть и в нём.
     
    Шумадан нравится это.
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    мне кажется легче сервер сжечь чем сидеть на пхп4.
    не силён но вроде только функции file_get_contents может не хватать. Попробуй через Перейти по ссылке сделать
     
    Шумадан нравится это.
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    это ж нужно такое настрадать, почему нельзя сделать было например
    PHP:
    function parse_template($template$variables)
    {
        if(empty(
    $tpl_name) || !file_exists($tpl_name)) return false;
     
            
    $template  file_get_contents($tpl_name);
            foreach(
    $variables as $find => $replace) {
              
    $template str_replace($find$replace$template);
            }
            return 
    $template;
    }
    и вызывать
    ну и вот такой код уже приводить на ПХП4 если он не заработает

    это чтоб скрипт нельзя было вызвать напрямую
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.368
    file_get_contents появился для версии php >= 4.3.0

    2 Шумадан
    Классы были и в 4 версии (не помню с какой подверсии) и для вынесения функции из объекта придётся переписывать и остальную часть скрипта.
    вот и я об этом :)
     
    Шумадан нравится это.
  6. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    потому и дал вариант с функцией, хотя я склонен советовать также как и Мёртвый Дед
     
  7. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.368
    Там ведь не известно сколько файлов в проекте, мне для рефакторинга похожего типа (перенос из глобальной функции в класс), пришлось сотню файлов править. А с учетом вопроса, который задал автор он на такое явно не пойдёт.

    PS: я тоже за поиск нормального сервера. php 4 вполне может содержать уязвимости уровня ядра и вряд ли администратор, который держит такое старье на сервере, накатал для них патчи.
     
    Шумадан нравится это.
  8. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221

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

    Дело в том что морда работает нормально от этого класса.

    А вот админка не хочет пахать, на хостинге, хотя локально пашет.
    Видимо где то есть ошибка.
    Но выставил на максимум вызов ошибок нет ошибок нигде.

    --------------------------

    Нашел ошибку, ошибка оказалась в конфиге.
    Путь к шаблону tpl был указанан не верно.
     
Статус темы:
Закрыта.