powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / new и &new. Удаление амперсанда приводит к ошибке (php5.4)
8 сообщений из 8, страница 1 из 1
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38860469
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
С коллегой перелопатил уже всё. Но удаление амперсанда из следующей конструкции приводит к ошибке логики
Код: php
1.
$result = &new $class_name($this, $result, $limit, $offset);



Во всех источниках пишут, что в пхп5 поведение должно быть ИДЕНТИЧНЫМ. Но из сложившейся ситуации видно, что в чём-то всё же отличие есть.

Подскажите, пожалуйста, в чём же оно :)
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38861081
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

Включите вывод всех ошибок и увидите нечто типа

Deprecated: Assigning the return value of new by reference is deprecated in ...

объекты по рефам и так передаются. А что там с логикой, то надо включить вывод всех ошибок и может что еще напишут.
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38861110
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полагаю, что этот амперсанд остался из кода, писанного под PHP 5.2 или более раннего. На практике действительно не всегда удаётся убрать амперсанд без потери работоспособности. Однако, найти хостинг с поддержкой старых версий PHP пока что не составляет большого труда и не является проблемой. Ну, чтоб не тратить время на исправление кода.

Если же вопрос "в чём дело" чисто академический, с целью разобраться в тонкостях - то тут кроме вывода ошибок ещё и отладкой заняться придётся. Если это Ваш проект - проблем не должно быть, а если это какой-то сторонний движок - тут надо временем на разбор запастись. Что по мне, так я бы сравнивал при отладке работу движка на "родной" версии PHP, где он работает без ошибок, и на проблемной.
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38861118
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

По документации с версии 5 началась дефолтная передача объекта по ссылке вместо копии. Ну а рефы на объект как таковые требуются в случае той самой логики оперирования переменными-ссылками-на-объект (ponter'ами).
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38861189
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Ну да, по логике вроде не должно быть разницы. Однако, по факту бывает что-то "не так". Возможно, разработчики PHP не стали делать полную поддержку обратной совместимости. А может какая другая причина этого явления. Вглубь не копал как то за ненадобностью по моим задачам.
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38861316
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleПолагаю, что этот амперсанд остался из кода, писанного под PHP 5.2 или более раннего. На практике действительно не всегда удаётся убрать амперсанд без потери работоспособности. Однако, найти хостинг с поддержкой старых версий PHP пока что не составляет большого труда и не является проблемой. Ну, чтоб не тратить время на исправление кода.

Если же вопрос "в чём дело" чисто академический, с целью разобраться в тонкостях - то тут кроме вывода ошибок ещё и отладкой заняться придётся. Если это Ваш проект - проблем не должно быть, а если это какой-то сторонний движок - тут надо временем на разбор запастись. Что по мне, так я бы сравнивал при отладке работу движка на "родной" версии PHP, где он работает без ошибок, и на проблемной.
Сначала вопрос был очень актуальным,
но потом удалось заменить pear на новый.
Сейчас вопрос чисто академический. Но причину странного поведения отладчиком не отловить: ошибка в самом ядре пира, а уж его перелопатить займет не один день )
Очень удивляет такое поведение. Ведь была передача по ссылке, таковая же и осталась. Странно...
В любом случае всем спасибо за помощь.
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38861426
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

Ты бы пример кода привёл , что б проявилось различие.

я как не пытался на 5.5 версии добиться разницы, не получилось.
...
Рейтинг: 0 / 0
new и &new. Удаление амперсанда приводит к ошибке (php5.4)
    #38863041
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453Програмёр,

Ты бы пример кода привёл , что б проявилось различие.

я как не пытался на 5.5 версии добиться разницы, не получилось.

С примером кода будет сложно. Проект фиг знает какого года (при чём без ООП и даже элементарной шаблонизации, там html прямо из функций ядра выплёвывается), а сама ошибка возникает внутри пира. Могу только привести строку из пира из-за которой возникает ошибка, но привести часть кода, которая использует функцию с ошибкой почти нереально. А если я даже и выловлю этот участок кода, никто из вас даже разбираться в нём не захочет (я то за деньги скрипя зубами это делаю :) и то, вроде уламал начальство на переписывание этой системы с нуля).

Ладно, может как-нибудь позже ещё столкнусь с подобным (в более адекватном коде).

Всем спасибо за участие.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / new и &new. Удаление амперсанда приводит к ошибке (php5.4)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]