Я хотел бы использовать Guzzle, чтобы проверить, существует ли удаленный файл.
Это пример того, как я сейчас проверяю:
/**
* @return boolean
*/
function exists()
{
// By default get_headers uses a GET request to fetch the headers.
// Send a HEAD request instead
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
// Get the file headers
$file_headers = @get_headers($this->file);
// Check file headers for 404
if($file_headers[0] == 'HTTP/1.1 404 Not Found')
return false; // File not available.
return true; // File is available!
}
Однако, так как я уже использую Guzzle в другом месте, я думаю, я мог бы сделать это красивее и более читабельным.
Правильно ли я так думаю? Как бы я это сделал?
Мне удалось найти часть ответа в документах. Жадность — Методы запроса
В сочетании с суть имеет аналогичную функцию, которая проверяет статус 404.
/**
* @return boolean
*/
function exists()
{
$client = new GuzzleHttp\Client();
try {
$client->head($this->file);
return true;
} catch (GuzzleHttp\Exception\ClientException $e) {
return false;
}
}
Других решений пока нет …