&new Class в PHP5
  • GoDrGoDr Март 2012
    для чего это в PHP5?
    $a = &new MyClass();
    Или это не нужно уже? Ведь в PHP5 изначально передаются ссылки. Просто адаптирую старый компонент и выдаёт ошибку
    Отредактированно GoDr в 2012-03-13 04:12:01
  • bostonboston Март 2012
    В пхп старше 5.0 такое использовать не стоит, будут ошибки выдаваться и толка вообще никакого нету, вывод - оно не нужно
  • GoDrGoDr Март 2012
    отлично :)
    значит в движке это нужно удалить.. ведь он уже всё равно меньше 5-ки не работает, да и нет её уже нигде..

    но тут мне подкинули вот это
    http://php.net/manual/en/language.references.php

    я малость с этими ссылками не дружу, и не совсем понимаю их прелесть
  • abasiaabasia Апрель 2012
    Убрал &new в joostina 1.3.0.5 взятую с svn, в includes/patTemplate/patTemplate.php строка 537, т.к. новый форум FireBoard ругался на неё:
    Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\joostina13.ru\www\includes\patTemplate\patTemplate.php on line 537

    Страница с форумом сразу умерла с ошибкой
    Fatal error: Call to a member function setTemplateReference() on a non-object in Z:\home\joostina13.ru\www\includes\patTemplate\patTemplate.php on line 539

    Что делать?
  • GoDrGoDr Апрель 2012
    в 1.3.0.5 скорее всего очень много ссылок.. не очень она по PHP5 адаптирована :)
  • abasiaabasia Апрель 2012
    Значит новый форум под неё не пойдёт или принудительно вывод сообщений отключать нужно?
  • GoDrGoDr Апрель 2012
    ну если он на 1.4 пошёл, то не думаю что не получится адаптировать и под 1.3 :)
    Я там несколько заглушек для такой ситуации поставил, так что должно заработать
  • GoDrGoDr Апрель 2012
    просто нужно движок ещё почистить, ссылки на объекты в PHP5 не нужны.. Они и так ссылками передаются
  • abasiaabasia Апрель 2012
    Как будет у тебя или Аркадия время, почистите пожалуйста.
  • bostonboston Апрель 2012
    не очень она по PHP5 адаптирована
    Joostina 1.3 вообще должна работать с php 5.3 в режиме вывода всех ошибок и предупреждений, во всяком случае так было в первых стабильных версиях.

    Можно сделать поиск по словам "&new" и "& new", должны показаться все места такого использования, и их прямой заменой убрать =)
  • abasiaabasia Апрель 2012
    Пробежался по дистрибутиву с svn убрал все &new, кроме тех, что в скриптах редактора, после этого под php5.3 установился движок без проблем, поставил+обновил форум, при заходе на фронте в него, белая страница с ошибкой
    Fatal error: Call to a member function setTemplateReference() on a non-object in Z:\home\joostina13.ru\www\includes\patTemplate\patTemplate.php on line 539
    Добавил new в includes/patTemplate/patTemplate.php строка 537 стало
    $this->_modules[$moduleType][$sig] = new $moduleClass;
    и форум заработал, до чистки там было
    $this->_modules[$moduleType][$sig] = &new $moduleClass;
    Вопрос такой, правильно я сделал что везде по убирал &new в дистрибутиве или где-то надо менять &new на new
    Отредактированно abasia в 2012-04-20 08:23:25
  • ArkadiyArkadiy Апрель 2012
    Менять только на new, убирать надо амперсанд (&) все остальное даже очень нужное.
  • abasiaabasia Апрель 2012
    Спасибо Arkadiy за разъяснение, учту :)

Добро пожаловать!

Похоже, что Вы здесь впервые. Если хотите поучаствовать, нажмите на одну из этих кнопок!

Войти Зарегистрироваться

В теме отметились