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

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

Так ли страшны warning'и? Стоит ли разрабатывать с error_reporting(E_ALL) и стремиться к полному отсутствию системных сообщений? Или забить и использовать простоту синтаксиса PHP?
  • Вопрос задан
  • 2961 просмотр
Решения вопроса 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 выбывать ошибку при обращении к несуществующему элементу массива и накроются все ваши проекты при первом же обновлении.

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽