Я пишу класс, который общается с сервером через сокеты и отправляет HTTP-запрос.

Я использую функцию http_parse_headers из pecl_http, но я не устанавливал ее, поэтому написал обходной путь. Их много на странице документации. Все они также возвращают код статуса HTTP (как статусный ключ или ключ 0). Что я хотел бы знать: возвращает ли его как-нибудь функция original ? Я хотел бы клонировать эту функциональность, поэтому, если у кого-то установлено это расширение, можно использовать исходную функцию.

php
1
mark.sagikazar 17 Дек 2013 в 05:59

1 ответ

Лучший ответ

Согласно документации PHP, единственными возможными возвращаемыми значениями являются:

  • Массив (содержащий проанализированные заголовки)
  • или FALSE (в случае неудачи).

Если код состояния HTTP не будет отправлен вместе с заголовками, вы не сможете получить его с помощью функции http_parse_headers().

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

"HTTP/1.0 404 Not Found"

Следовательно, это просто вопрос интерпретации (в функции, которую вы фактически используете), будет ли статус правильно проанализирован и указан в массиве результатов или нет.

В любом случае вы можете обратиться к этой функции который был размещен на php.net, который имитирует поведение http_parse_headers(), но возвращает статус HTTP в качестве первого ключа.

1
SquareCat 17 Дек 2013 в 06:12
Я прочитал документацию и примеры. Скажем, я также прохожу HTTP StatusLine. Я хотел бы знать, является ли это недокументированной функцией, и я тоже ПОЛУЧАЮ статус, или это просто плохое представление комментатора о функциональности клонирования?
 – 
mark.sagikazar
17 Дек 2013 в 06:08
Http_response_code не будет работать, поскольку само общение осуществляется через сокет
 – 
mark.sagikazar
17 Дек 2013 в 06:09
Спасибо за вашу помощь. Я уже думал о ваших пунктах. Я хотел бы точно клонировать функцию в расширении, потому что, если я этого не сделаю, это испортит установленное расширение. Если строка состояния / код состояния НЕ возвращается в исходной функции, то авторы этих комментариев сделали действительно большую ошибку, поскольку их код не будет работать таким же образом в других средах, и это плохая концепция.
 – 
mark.sagikazar
17 Дек 2013 в 06:16
Кажется так. Честно говоря, я не могу сказать наверняка, так как никогда не использовал http_parse_headers().
 – 
SquareCat
17 Дек 2013 в 06:21
Что ж, думаю, этого достаточно, чтобы я подумал, что ответ отрицательный. Мне просто нужны были чьи-то мысли по этому поводу. :) Спасибо
 – 
mark.sagikazar
17 Дек 2013 в 06:24