Intereting Posts
Добавить 13 часов в метку времени PHP: любая функция, возвращающая первые / последние N элементов массива Отображается только первое слово. В переменной нескольких слов отображается Можно ли захватить вывод эха в PHP? Почему в мой код встраивания Youtube добавляется% E2% 80% 8F? Как застегнуть 100 мб файлов во время (до) загрузки, чтобы скорость загрузки могла быть увеличена? PHP Pagination показывает первые две страницы и последние две страницы PHP. Проверьте, выполняется ли страница в браузере Mobile или Desktop. Yii AR не работает при использовании findAll Список объектов в определенной папке на Amazon S3 Отображение введенного текста с эхом после ввода PHP Интенсивный скрипт PHP с ошибкой w / «Истекло время ожидания» error / ap_content_length_filter Как использовать токен обновления, чтобы получить авторизацию в фоновом режиме и получить токен доступа? Преобразование индексированного массива в обычный или простой массив RegEx: \ w – "_" + "-" в UTF-8

определить статус http, который будет отправлен в php

Я пытаюсь написать тестовый пример для класса, который управляет заголовками для моего приложения. Среди заголовков, которые он отправляет, есть заголовки статуса http. Я использую headers_list (), чтобы видеть, какие заголовки будут отправлены, если бы я отправил заголовки сейчас. Проблема с headers_list () заключается в том, что она не включает заголовок состояния http (хотя на php.net это недокументировано). Таким образом, я не могу найти способ определить, какой статус http будет отправлен. Даже если я отправляю заголовки (которые я стараюсь не делать, поэтому я могу проверить множество разных вещей за один раз), статус не отображается в headers_list (). Есть идеи?

PS Я понимаю, что могу сделать это, запросив страницу и проанализировав ответ, но это затрудняет проведение тестов на уровне единицы , поэтому я стараюсь избегать этого.

Либо используйте Mock, который возвращает заголовок, но не отправляет его или не записывает объект Response, например

class HttpResponse { protected $_status = '200 OK'; protected $_headers = array(); protected $_body = null; public function setStatus($status) { $this->_status = $status; } public function getStatus() { return $this->_status; } public function addHeader($name, $value) { $this->_headers[$name] = $value; return $this; } public function getHeaders() { return $this->_headers; } public function write($data) { $this->_body .= $data; return $this; } public function send() { header('HTTP/1.0 ' . $this->_status); foreach ($this->headers as $name => $value) { header("$name : $value"); } echo $this->_body; $this->resetRequest(); } public function resetRequest() { $this->_status = '200 OK'; $this->_headers = array(); $this->_body = null; } } 

Так что пока вы не send() вы можете проверить состояние через геттеры. Вы также можете добавить __toString() , который возвращает Entire Response в виде строки и регулярное выражение, чтобы увидеть, похоже ли оно, как вы ожидаете, чтобы оно выглядело.