Увійти Реєстрація
Вакансії
Вакансії Laravel Компанії Статистика
Підготовка
Як підготуватися < href="https://laravelukraine.com/interviews" wire:navigate.hover class="flex items-center gap-3 rounded-md px-3 py-2 text-base font-medium text-gray-600 hover:bg-gray-50 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-900 dark:hover:text-white" >Співбесіди Тестування Документація
Блог
Всі статті Серії
Екосистема
Пакети Ресурси Проєкти Інструменти Події Відео
Інше
Про нас Реклама
Tips 16 вересня 2026

sliding() - Створення "ковзних вікон"

Потрібні перекривні чанки? Наприклад, для ковзного середнього?

sliding() створює ковзні вікна по колекції.

Використання:

  • Ковзні середні
  • Аналіз трендів
  • Пошук патернів
  • Послідовний аналіз

Параметри:

  • Розмір вікна
  • Крок (за замовчуванням 1)

Порада: підходить для аналізу часових рядів.

$numbers = collect([1, 2, 3, 4, 5, 6]);

// Розмір 3, крок 1
$windows = $numbers->sliding(3);
// [[1,2,3], [2,3,4], [3,4,5], [4,5,6]]

// Розмір 3, крок 2
$windows = $numbers->sliding(3, 2);
// [[1,2,3], [3,4,5]]

// Ковзне середнє
$values = collect([10, 20, 30, 40, 50]);

$movingAvg = $values->sliding(3)
  ->map(fn($window) => $window->avg());
// [20, 30, 40]
// Аналіз трендів
$prices = collect([100, 105, 103, 110, 115, 112]);

$trends = $prices->sliding(3)
  ->map(fn($w) => [
    'start' => $w->first(),
    'end' => $w->last(),
    'trend' => $w->last() > $w->first() ? 'up' : 'down',
  ]);

// Порівняння сусідніх значень
$changes = $logs->sliding(2)->map(fn($pair) =>
  $pair->last()->value - $pair->first()->value
);

// Пошук послідовностей
$data = collect([1, 2, 3, 5, 6, 7]);

$seq = $data->sliding(2)
  ->filter(fn($p) => $p->last() - $p->first() === 1);

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Інші поради

Tips 13 листопада 2026

current_password - перевірка перед змінами

Змінюєте пароль або email? Спочатку перевірте поточний пароль.

current_password робить перевірку автоматично.

Безпека:

захищає від несанкціонованих змін.

Коли корисно:

  • Зміна пароля
  • Зміна email
  • Видалення акаунта
  • Чутливі налаштування

Порада: використовуйте разом з confirmed для нового пароля.

public function rules()
{
  return [
    'current_password' => 'required|current_password',
    'new_password' => [
      'required', 'confirmed',
      'different:current_password',
    ],
    'email' => 'sometimes|required|email|unique:users',
  ];
}
Tips 11 листопада 2026

starts_with і ends_with - перевірка префікса/суфікса

Поле має починатися або закінчуватися певним значенням?

starts_with і ends_with валідуюють “афікси”.

Коли корисно:

  • URL/протоколи
  • Домени email
  • Назви файлів/розширення
  • Формати кодів

Кілька значень:

список через кому.

Порада: для складніших кейсів — regex.

public function rules()
{
  return [
    'website' => 'required|url|starts_with:https://,http://',
    'email' => 'required|email|ends_with:@company.com',
    'filename' => 'required|string|ends_with:.jpg,.png,.gif',
    'api_key' => 'required|string|starts_with:sk_live_,sk_test_',
  ];
}
Tips 09 листопада 2026

size - розмір для рядків, файлів, чисел і масивів

Одне правило — різні типи.

size працює по-різному залежно від типу:

  • Рядки: кількість символів
  • Числа: точне значення
  • Файли: кілобайти
  • Масиви: кількість елементів

Порада: для діапазонів частіше підходять min/max або between.

public function rules()
{
  return [
    'code' => 'required|string|size:10',
    'amount' => 'required|numeric|size:100',
    'document' => 'required|file|size:5120', // 5MB у KB
    'tags' => 'required|array|size:3',
  ];
}
Tips 06 листопада 2026

array - валідація вкладених даних

Валідуєте масиви та вкладені структури?

Dot-нотація робить це просто.

Синтаксис:

  • field.* — кожен елемент масиву
  • field.*.key — вкладений ключ у кожному елементі
  • field.key — конкретний ключ

Коли корисно:

  • Bulk-операції
  • Масиви полів у формах
  • API payload

Порада: комбінуйте з distinct, unique, exists.

public function rules()
{
  return [
    'users' => 'required|array',
    'users.*.name' => 'required|string|max:255',
    'users.*.email' => 'required|email|distinct',

    'items' => 'required|array',
    'items.*.product_id' => 'required|exists:products,id',
    'items.*.quantity' => 'required|integer|min:1',
  ];
}
Tips 04 листопада 2026

regex - валідація за шаблоном

Потрібна кастомна перевірка формату?

regex використовує регулярні вирази.

Типові кейси:

  • Телефони
  • Поштові індекси
  • Алфавітно-цифрові коди
  • Власні формати

Безпека:

Екрануйте/обережно формуйте патерни, якщо туди потрапляє ввід користувача.

Порада: для повторюваних патернів краще зробити кастомне правило.

public function rules()
{
  return [
    'phone' => ['required', 'regex:/^[0-9]{10}$/'],
    'slug' => [
      'required',
      'regex:/^[a-z0-9]+(?:-[a-z0-9]+)*$/',
    ],
    // складніший патерн краще винести в кастомне правило
    'password' => ['required', new StrongPassword],
  ];
}
Завантаження...