Обновление до PHP 5.3 с отключенным предупреждением об устаревших функциях - PullRequest
5 голосов
/ 05 ноября 2010

Я очень хочу обновить ряд наших серверов до PHP 5.3. Это было бы в готовности для Zend Framework 2, а также для очевидных обновлений производительности. К сожалению, у меня есть большое количество устаревшего кода на этих серверах, который со временем будет исправлен, но не все могут быть исправлены до миграции. Я рассматриваю возможность обновления, но отключаю устаревшую функцию на всех сайтах разработки, кроме нескольких, где я могу начать работать через обновление старого кода.

error_reporting(E_ALL ^ E_DEPRECATED);

Есть ли фундаментальная причина, почему это было бы плохой идеей?

Ответы [ 3 ]

4 голосов
/ 05 ноября 2010

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

Однако, если вы это сделаете, запишите это куда-нибудь. Это может сэкономить вам пару часов, прежде чем вы вообще помните, как установить флаг.

3 голосов
/ 05 ноября 2010

Если вы еще этого не сделали, вам следует прочитать руководство по миграции с особым акцентом на Обратно несовместимые изменения и Удаленные расширения .

У вас есть большие проблемы, чем устаревание. Игнорирование E_DEPRECATED не будет достаточным. Из-за несовместимых изменений также будут возникать ошибки другого типа или, что еще хуже, непредвиденное поведение.

Вот простой пример:

<?php
function goto($line){
    echo $line;
}
goto(7);
?>

Этот код будет работать нормально и выводит 7 в PHP 5.2.x, но выдаст ошибку синтаксического анализа в PHP 5.3.x.

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

Также не забывайте о своем взломе и исправьте устаревшие проблемы как можно скорее.

С уважением,
Alin

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

1 голос
/ 05 ноября 2010

Полагаю, у вас есть какой-нибудь тестовый сервер? Если нет, то вам действительно следует его настроить и протестировать в PHP 5.3. Если ваш код полностью протестирован модульно, тестирование займет несколько секунд, и его исправление также будет довольно быстрым, поскольку модульные тесты подскажут вам, где искать. Если нет, то подумайте о том, чтобы сделать все это модульным тестированием приоритетом перед следующим выпуском, а тем временем просмотрите все это, сначала с отключенными E_DEPRECATED предупреждениями и исправьте все, что появится, затем снова включите его, как только у вас будет время , Вы также можете запустить глобальный поиск и замену, чтобы легче было исправлять ошибки.

...