Коли вам потрібно створити колекцію з певною кількістю обчислених елементів, метод times у Laravel стає елегантним розв'язанням. Цей метод особливо корисний для генерування послідовностей, часових слотів, лінків для пагінації або в будь-якому випадку, що вимагає нумерованих ітерацій.
// Генеруємо таблицю множення на 5
$fives = Collection::times(10, function ($number) {
return $number * 5;
});
// [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
Розглянемо практичний приклад розробки планувальника зустрічей, який генерує доступні часові слоти:
<?php
namespace App\Services;
use Carbon\Carbon;
use Illuminate\Support\Collection;
class MeetingScheduler
{
public function generateTimeSlots(Carbon $date, array $config = []): Collection
{
$startTime = $config['start_time'] ?? '09:00';
$endTime = $config['end_time'] ?? '17:00';
$duration = $config['duration'] ?? 30;
$slots = $this->calculateSlotCount($startTime, $endTime, $duration);
return Collection::times($slots, function ($slot) use ($date, $startTime, $duration) {
$start = Carbon::parse($date->format('Y-m-d') . ' ' . $startTime)
->addMinutes(($slot - 1) * $duration);
$end = $start->copy()->addMinutes($duration);
return [
'id' => $slot,
'start_time' => $start->format('H:i'),
'end_time' => $end->format('H:i'),
'formatted' => sprintf(
'%s - %s',
$start->format('g:i A'),
$end->format('g:i A')
),
'is_available' => !$this->isSlotBooked($start, $end)
];
});
}
private function calculateSlotCount($start, $end, $duration): int
{
$startMinutes = Carbon::parse($start)->diffInMinutes(Carbon::parse($end));
return (int) floor($startMinutes / $duration);
}
private function isSlotBooked(Carbon $start, Carbon $end): bool
{
// Перевірка на наявність уже заброньованих слотів
return false;
}
}
Метод times спрощує створення послідовних даних, забезпечуючи чистий та ефективний спосіб формування колекцій з обчисленими значеннями
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту
Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!