Получение этих ошибок «Устаревшие: назначение возвращаемого значения new по ссылке устарело …»
Хотя я знаю, что означает устаревшая функция, но я не совсем понимаю, что с ними делает PHP? Все еще исполняйте их, как обычно? Итак, в этот момент для этой функции PHP тихо назначает ячейку памяти для переменной или все еще использует ссылку?
EDIT – спасибо за ответы, я задал этот вопрос, потому что мы используем adodb_lite
и библиотека не исправила ошибку.
Деперементированные функции все еще существуют, и вы получаете предупреждение. Поэтому они работают так, как ожидалось. Однако в будущей версии они могут исчезнуть.
Это то же самое для других устаревших языковых функций, о которых вы иногда узнаете. Это способ сообщить изменения пользователям, которые имеют код на основе старой версии PHP.
Обычно устаревшие функции удаляются через некоторое время, но не предсказуемо, сколько времени это займет. Я знаю, по крайней мере, один случай, когда некогда устаревшая функция была устаревшей позже. Тем не менее, я думаю, что это замечательно.
Поэтому, если вы видите эти предупреждения, обновите код. Чаще всего в документации PHP есть дополнительная информация, почему что-то устарело и что делать. Чаще всего это улучшение (например, в области безопасности), поэтому вам действительно нужно иметь дело с этими предупреждениями, если вы заботитесь о коде.
Редактирование: я думаю, в этом контексте стоит обратить внимание на строгие уведомления о стандартах PHP Manual . Они несколько связаны, потому что эти уведомления являются полезными подсказками для изменений в языке.
Включение E_STRICT во время разработки имеет определенные преимущества. Сообщения STRICT помогут вам использовать последний и самый рекомендуемый метод кодирования, например, предупреждают вас об использовании устаревших функций.
(из ссылки на PHP выше)
Они будут работать как задокументированные, но они могут быть удалены в будущем и поэтому должны быть преобразованы как можно скорее в существующий код и не использоваться в новом коде.
Устаревшие функции работают, но есть лучшие альтернативы, и они могут быть удалены в будущих версиях PHP.
Я считаю, что PHP продолжает выполнять эту функцию, дополнительно вызывая ошибку, заявляя, что функция устарела.
Ye Olde Версия:
function foo(){ bar(); }
Новая версия:
function foo(){ bar(); trigger_error('Deprecated: this function is deprecated foo!', E_NOTICE); }
Примечание: это, вероятно, не то, что происходит на самом деле за кадром, но оно будет относительно эквивалентным.
Ничего, это просто предупреждение. Прочитайте это как «эта функция все еще работает, как описано для этой версии PHP, но все ставки отключены в будущих версиях». Внутренне нет никакой разницы, кроме добавления предупреждений об устаревании.
Они все равно исполняются как «нормально».
Тем не менее, вам нужно отбросить их так быстро, как только сможете, чтобы вы продолжали работать в будущем.
Помимо предупреждений об утомлении, код будет работать нормально. Утечка указывает, что данная функция может быть удалена в будущем.
Это предупреждение относится к строке типа
$obj =& new MyClass();
Амперсанд больше не требуется с php 5; вы можете просто написать
$obj = new MyClass();
Упомянутые функции все еще существуют, но вы получаете предупреждение, а это означает, что такие функции не будут доступны в будущем.