За последние 24 часа нас посетили 22873 программиста и 1212 роботов. Сейчас ищет 721 программист ...

Как правильно оформить PHP код?

Тема в разделе "PHP для новичков", создана пользователем Атм_Евгений, 11 июн 2020.

  1. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Всем привет!
    Ребята назрел такой вопрос:
    В коде обращаюсь к БД, чтобы выбрать, вставить, обновить...
    Перед обращением составляю запись типа:
    Код (Text):
    1. $query = 'UPDATE ... ';
    Затем подставляю все в строку:
    Код (Text):
    1. $result = mysqli_query($link, $query);
    После чего проверяю результат:
    Код (Text):
    1. if ($result == false) {
    2.     $error = 'Ошибка обновления таблицы ...';
    3.     header ('Location: index.php?error='.$error.'');
    4.     exit;
    5. }
    6. А здесь без всяких else продолжаю код ...
    Принято ли так писать, что сразу отработал ошибку и, если запрос не выполнился, то перенаправляемся на нужную страницу при помощи header и exit? Помню, кто то писал, что exit это моветон и желательно без него.
    За ранее благодарю за ответ!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    унижать и кастрировать тех, кто так пишет.

    Заголовок с перенаправлением поступает в браузер и по уму ему не нужен в этот момент контент сайта, т.к. он собирается переходить на другую страницу. Чтобы контент не отдавать, ставят стоп машину exit
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    и закончить бессмысленную работу дальнейшего кода.
     
  4. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Поступает заголовок в браузер, а затем браузер снова обращается на сервер с содержимым заголовка, или же заголовок и данные согласно этого заголовка вместе и сразу направляются в браузер?
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Сначала
    • в браузер поступают заголовки от сервер
    После заголовков
    • идет контент (содержимое веб документа или иного рода)
    Ваш случай:
    1. Заголовок с указанным адресом поступил как команда в браузер, что нужно будет перейти на N страницу.
    2. Дальше браузер ждет окончательного выполнения своего запроса от сервера (заголовок и контент)
    3. Так как поступила команда в браузер об переадресации, то смысл заливать КГ картошки контента нет . Браузер по новому запросит все данные, перейдя на N ссылку
    --- Добавлено ---
    https://ru.wikipedia.org/wiki/HTTP
    --- Добавлено ---
    HTTP-сообщение состоит из HTTP-запроса, посылаемого клиентом серверу, и HTTP-ответа, возвращаемого сервером клиенту на основе полученного запроса.
     
  6. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Я так понял такой вариант написания кода является более , чем приемлемый? Что надо отработали, что не надо, то сразу exit.
    Я еще goto использую во всю, сокращает код значительно, все читабельно и понятно...
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Нормально. Просто часто бывает так, что в конце скрипта висит спец. обработчик, выполняющий различные тех. действия вроде записи логов, но в общем-то ничего не мешает повесить этот обработчик и на exit.

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

    И, конечно, делать подобные проверки, смешивая их с «бизнес-логикой», – это подводить себя к суициду. Я себе такое позволяю в статьях, но только для того, чтобы начинающие не забывали о необходимости делать такие проверки, например: Как сделать пагинацию? В реале, конечно, нужно использовать исключения.
    --- Добавлено ---
    P.S. Когда нужен именно редирект, выход можно сделать отложенным:
    https://php.ru/forum/posts/625136/
     
    #7 miketomlin, 12 июн 2020
    Последнее редактирование: 12 июн 2020
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Вот этого не надо :D
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    goto используется в процедурном стиле кодинга. См. ассемблер язык
    --- Добавлено ---
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Я знаю, что такое ассемблер. Более того, я знаю ассемблер (x86-64). Если jmp используется в ассемблере, это еще не означает, что он должен так же активно использоваться в процедурке ЯВУ ;)
    --- Добавлено ---
    Кстати, во многих ассемблерах (компиляторах) есть примитивы алг. конструкций, чтобы поменьше использовать jmp и инструкции условного перехода.