Удляете ли вы в PHP внимание warning'ам?

Простейший пример:
if($_GET['ajax'] == '1')
Warning
if(isset($_GET['ajax']) && $_GET['ajax'] == '1')
Лишний код не несущий смысловой нагрузки.

Так ли страшны warning'и? Стоит ли разрабатывать с error_reporting(E_ALL) и стремиться к полному отсутствию системных сообщений? Или забить и использовать простоту синтаксиса PHP?
  • Вопрос задан
  • 2983 просмотра
Решения вопроса 4
Roquie
@Roquie
> Стоит ли разрабатывать с error_reporting(E_ALL) и стремиться к полному отсутствию системных сообщений?
стремись, и да, еще как стоит.

Разрабатывать надо так, чтобы даже ошибок уровня E_NOTICE небыло.

Советую к прочтению getjump.github.io/ru-php-the-right-way
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
А вы как думаете? Варнинги допустимы, но крайне не желательны. На то они и варнинги, иначе бы просто смысла в них небыло. Есть варнинги показывающие, что были использованы устаревшие средства языка, которых в новой версии уже может и не быть. Или какой-то метод устаревший, и при обновлении библиотек/php ваш код просто сломается.

Проблемы же "лишнего кода" решаются обертками и слоями абстракций:
// метод класса Request
function get($name, $defaultValue = null) {
    if (!isset($_GET[$name])) return $defaultValue;
    return $_GET[$name];
}

$isAjax = 1 == $request->get('ajax', 0);


Попробуйте symfony/httpkernel в качестве обертки и уровня обстракции для обработки запросов.
Ответ написан
Комментировать
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Суть ворнинга в примере Вашем в том, что возможно Вы ожидаете, что в get будут данные, но их может и не быть, или они будут переданы неправильные, тогда вся логика программы пойдет не туда, могут быть ошибки и серьезные последствия, именно поэтому php как бы намекает нам на это. А еще господин @fesor всё правильно сказал.
Ответ написан
Cyapa
@Cyapa
Вот решат ребята в какой-нибудь 6й версии PHP выбывать ошибку при обращении к несуществующему элементу массива и накроются все ваши проекты при первом же обновлении.

Утрирую, конечно, но стремиться к тому, что бы не было ошибок (любых уровней) безусловно стоит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы