HTTP-ответы
App\Http\Response используется для формирования HTTP-ответов на основе объектов
App\Http\Response\Result и App\Http\Response\Error.
Инициализация класса
Создайте объект Response и передайте в него один из типов ответа.
use App\Http\Response;
$successResponse = new Response(
new Response\Result(['success' => true], 200)
);
$errorResponse = new Response(
new Response\Error('Unknown error', 500)
);
Установка заголовков ответа
Метод $response->setHeaders($headers) устанавливает набор заголовков целиком:
Код:
$successResponse->setHeaders([
'Content-Type' => 'application/json; charset=UTF-8',
'Cache-Control' => 'no-cache',
]);
Метод $response->addHeader($key, $value) добавляет один заголовок:
Код:
$successResponse->addHeader('Cache-Control', 'no-cache');
Проверка типа ответа
Чтобы определить тип ответа, используйте методы $response->hasResult() и
$response->hasError().
Код/Результат:
$successHasResult = $successResponse->hasResult();
$errorHasError = $errorResponse->hasError();
echo sprintf(
"successResponse has result: %s\nerrorResponse has error: %s",
$successHasResult ? 'yes' : 'no',
$errorHasError ? 'yes' : 'no'
);
successResponse has result: yes
errorResponse has error: yes
Получение тела ответа
Метод $response->get() возвращает тело ответа в виде массива.
Код/Результат:
$successBody = $successResponse->get();
$errorBody = $errorResponse->get();
print_r($successBody);
echo PHP_EOL;
print_r($errorBody);
Array
(
[result] => Array
(
[success] => 1
)
)
Array
(
[error] => Array
(
[code] => 500
[message] => Unknown error
)
)
Получение тела ответа в формате JSON
Метод $response->getJson() возвращает тело ответа в JSON-формате.
Код/Результат:
$successJson = $successResponse->getJson();
$errorJson = $errorResponse->getJson();
echo $successJson;
echo PHP_EOL;
echo $errorJson;
{"result":{"success":true}}{"error":{"code":500,"message":"Unknown error"}}
Тип ответа Result
App\Http\Response\Result формирует успешное тело ответа с ключом result.
Аргументы конструктора
arraydata- обязательный массив с данными ответа;intcode- HTTP-код ответа, по умолчанию200;-
boolkeysToLower- признак преобразования ключей к нижнему регистру, по умолчаниюfalse.
Методы класса
get()- возвращает тело ответа в ключеresult;getCode()- возвращает HTTP-код ответа.
Код/Результат:
$result = new App\Http\Response\Result(['success' => true], 200);
echo $result->getCode();
echo PHP_EOL . PHP_EOL;
echo print_r($result->get(), true);
200
Array
(
[result] => Array
(
[success] => 1
)
)
Тип ответа Error
App\Http\Response\Error формирует тело ответа с ключом error.
Аргументы конструктора
-
stringmessage- текст ошибки, по умолчаниюInternal server error; intcode- HTTP-код ответа, по умолчанию500;-
arraydata- необязательный массив дополнительных данных, который будет объединён с ключамиcodeиmessage; -
boolkeysToLower- признак преобразования ключей к нижнему регистру, по умолчаниюfalse.
Методы класса
get()- возвращает тело ответа в ключеerror;getCode()- возвращает HTTP-код ответа.
Код/Результат:
$error = new App\Http\Response\Error('Unknown error', 500, ['status' => false]);
echo $error->getCode();
echo PHP_EOL . PHP_EOL;
echo print_r($error->get(), true);
500
Array
(
[error] => Array
(
[status] =>
[code] => 500
[message] => Unknown error
)
)