Керування HTTP-стрімами у Laravel традиційно вимагало кількох кроків та перетворень, особливо під час завантаження чи передачі файлів. Проте новий метод resource() значно спрощує цей процес, дозволяючи виконувати складні операції з потоками за допомогою одного виклику методу.
Цей метод особливо корисний для завантаження файлів з зовнішніх джерел і їх зберігання у системі зберігання вашого додатка, уникаючи необхідності створювати тимчасові файли або виконувати складні перетворення потоків.
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
// Старий підхід вимагав кількох перетворень
$response = Http::get($url);
Storage::put('file.pdf', StreamWrapper::getResource(
$response->toPsrResponse()->getBody()
));
// Новий спрощений підхід
Storage::put('file.pdf', Http::get($url)->resource());
Розглянемо практичний приклад сервісу обробки документів:
<?php
namespace App\Services;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
use App\Exceptions\DocumentProcessingException;
class DocumentProcessor
{
public function processRemoteDocument(string $documentUrl, string $reference)
{
try {
$response = Http::timeout(30)->get($documentUrl);
if (!$response->successful()) {
throw new DocumentProcessingException(
"Не вдалося отримати документ: {$response->status()}"
);
}
// Зберегти оригінальний документ
$originalPath = "documents/{$reference}/original.pdf";
Storage::put($originalPath, $response->resource());
// Створити резервну копію
Storage::disk('backup')->writeStream(
$originalPath,
Storage::readStream($originalPath)
);
return [
'reference' => $reference,
'size' => Storage::size($originalPath),
'path' => $originalPath
];
} catch (Exception $e) {
Log::error('Обробка документа не вдалася', [
'url' => $documentUrl,
'reference' => $reference,
'error' => $e->getMessage()
]);
throw $e;
}
}
}
Метод resource() спрощує обробку потоків у додатках Laravel, роблячи операції з файлами простішими та зменшуючи складність вашого коду
Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті
Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення