Что делает PHP с устаревшими функциями?

Получение этих ошибок "Устаревшее: назначение возвращаемого значения new по ссылке устарело..."

Пока я знаю, что означает устаревшая функция, но я не совсем понимаю, что с ними делает PHP? Все еще исполняйте их, как обычно? Итак, на этот момент для этой функции PHP тихо назначает ячейку памяти для переменной или все еще использует ссылочный указатель?

EDIT - спасибо за ответы, я задал этот вопрос, потому что мы используем adodb_lite, и библиотека не исправила ошибку.

Ответы

Ответ 1

Деперементированные функции все еще существуют, и вы получаете предупреждение. Поэтому они работают так, как ожидалось. Однако в будущей версии они могут исчезнуть.

То же самое для других устаревших языковых функций, о которых вы иногда узнаете. Это способ сообщить изменения пользователям, которые имеют код на основе старой версии PHP.

Обычно устаревшие функции удаляются через некоторое время, но это не предсказуемо, сколько времени это займет. Я знаю, по крайней мере, один случай, когда некогда устаревшая функция была устаревшей позже. Однако, я считаю, что исключительный.

Итак, если вы видите эти предупреждения, обновите код. Чаще всего в документации PHP есть дополнительная информация, почему что-то устарело и что делать. Чаще всего это улучшение (например, в области безопасности), поэтому вам действительно нужно иметь дело с этими предупреждениями, если вы заботитесь о коде.

Изменить: Я думаю, что в этом контексте стоит обратить внимание на строгие уведомления о стандартах Руководство по PHP, Они несколько связаны с тем, что эти уведомления являются полезными подсказками для изменений в языке.

Включение E_STRICT во время разработки имеет некоторые преимущества. Сообщения STRICT помогут вам использовать последний и самый рекомендуемый метод кодирования, например, предупреждают вас об использовании устаревших функций.

(из ссылки на PHP выше)

Ответ 2

Они будут запускаться как задокументированные, но они могут быть удалены в будущем и поэтому должны быть преобразованы как можно скорее в существующий код и не использоваться в новом коде.

Ответ 3

Устаревшие функции работают, но есть лучшие альтернативы, и они могут быть удалены в будущих версиях PHP.

Ответ 4

Я считаю, что PHP продолжает выполнять эту функцию, дополнительно вызывая ошибку, заявляя, что функция устарела.

Ye Olde Версия:

function foo(){
  bar();
}

Новая версия:

function foo(){
  bar();
  trigger_error('Deprecated: this function is deprecated foo!', E_NOTICE);
}

Примечание: это, вероятно, не то, что на самом деле происходит за кадром, но это будет относительно равнозначно.

Ответ 5

Ничего, это просто предупреждение. Прочитайте это как "эта функция все еще работает, как описано для этой версии PHP, но все ставки отключены в будущих версиях". Внутри нет никакой разницы, кроме добавления предупреждений об устаревании.

Ответ 6

Они все равно выполняются как "обычно".

Однако вам нужно отбросить их так быстро, как только сможете, чтобы код продолжал работать в будущем.

Ответ 7

Помимо выдачи предупреждений об отказе, код будет работать нормально. Утечка указывает, что данная функция может быть удалена в будущем.

Это предупреждение относится к строке типа

$obj =& new MyClass();

Амперсанд больше не требуется с php 5; вы можете просто написать

$obj = new MyClass();

Ответ 8

Игнорируемые функции все еще существуют, но вы получаете предупреждение, что означает, что такие функции не будут доступны в будущем.