Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Блог

Статті, новини, туторіали та переклади від учасників спільноти

No results.
Прихований N+1 у Livewire: реєстри на час запиту Рекомендовано
Посібники 28 липня 2026

Прихований N+1 у Livewire: реєстри на час запиту

Найпідступніше джерело зайвих запитів - список із однаковою кнопкою на кожній картці, де кожна тихо робить свій SELECT. Розбираємо, як per-request реєстр збирає сотні однакових перевірок в один запит, чому саме scoped(), і той самий патерн поза базою.

PayZephyr
Новини 12 вересня 2026

PayZephyr: Єдиний API для роботи з Stripe, Paystack та PayPal

PayZephyr - Laravel-пакет від Nwaneri Chukwunyere Kenneth, який об'єднує вісім платіжних провайдерів під одним зручним API. Підтримує автоматичне перемикання, захист від подвійної оплати, підписки та повернення коштів.

5
Tips 11 вересня 2026

sortBy() з кількома колонками

Потрібно сортувати за кількома полями? Подібно до ORDER BY у SQL.

sortBy() приймає масив пар "колонка/напрям".

Синтаксис:

Масив масивів: [column, direction].

Напрям:

asc або desc.

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

$users = collect([
  ['name' => 'John', 'age' => 30, 'city' => 'NYC'],
  ['name' => 'Jane', 'age' => 25, 'city' => 'LA'],
  ['name' => 'Bob', 'age' => 30, 'city' => 'SF'],
]);

// Сортування за віком, потім за ім'ям
$sorted = $users->sortBy([
  ['age', 'asc'],
  ['name', 'asc'],
]);

// За містом спаданням, далі за віком
$sorted = $users->sortBy([
  ['city', 'desc'],
  ['age', 'asc'],
]);

// З callback
$sorted = $users->sortBy([
  [fn($user) => $user['age'], 'desc'],
  ['name', 'asc'],
]);

// Еloquent-колекції
$posts = Post::all()->sortBy([
  ['featured', 'desc'],
  ['published_at', 'desc'],
]);
// Вкладений атрибут
$orders = Order::with('customer')->get()->sortBy([
  ['customer.name', 'asc'],
  ['total', 'desc'],
]);

// Скинути ключі
$sorted->values();

// Одне поле - спаданням
$users->sortByDesc('age');

// Збереження ключів
$users->sortBy('age'); // Залишає ключі
$users->sortBy('age')->values(); // Перегенерує ключі

// Складне сортування з пріоритетами
$tasks = collect($tasks)->sortBy([
  ['priority', 'desc'],
  ['due_date', 'asc'],
  ['created_at', 'asc'],
]);

// Сортування товарів за рейтингом і ціною
$products = Product::all()->sortBy([
  ['rating', 'desc'],
  ['price', 'asc'],
])->values();
Laravel Telescope
Новини 11 вересня 2026

Artisan-команди для дебагу в Laravel Telescope 5.24.0

Laravel Telescope 5.24.0 додає дві нові Artisan-команди для роботи із записами із терміналу. Тепер можна переглядати запити, винятки, джоби та запити до бази даних без відкриття веб-інтерфейсу, а також отримувати дані у форматі JSON для скриптів та AI-агентів.

4
Quick Blade
Новини 11 вересня 2026

Quick Blade: попередній перегляд Blade-шаблонів у Finder на macOS

Tim Gavin випустив Quick Blade - розширення Quick Look для macOS, яке дозволяє переглядати відрендерені Blade-шаблони прямо у Finder натисканням пробілу. Інструмент працює без сервера розробки, бази даних чи мережевого з'єднання.

1
Bifrost
Новини 11 вересня 2026

Bifrost святкує перший рік роботи з AI-діагностикою та новими робочими процесами

Сервіс Bifrost від команди NativePHP відзначив річницю та 10 000 успішних збірок. Оновлення включають MCP-сервер для AI-агентів, автоматизовані workflow, керовані облікові дані для підпису та AI-діагностику помилок збірки.

1
Патерн Null Object
Посібники 10 вересня 2026
Патерни проєктування

Null Object - поведінка за замовчуванням

Замінює null безпечним об'єктом із тим самим інтерфейсом і "порожньою" поведінкою. Прибирає перевірки на null - і де він може приховати справжню проблему.

4
Laravel 13.31
Новини 10 вересня 2026

Laravel 13.31: метод totalSize() для черг, подія JobInterrupted та покращення BelongsToMany

Команда Laravel випустила версію 13.31.0 з методом totalSize() для з'єднань черг, новою подією JobInterrupted для переривання завдань, підтримкою chaperone для pivot-моделей BelongsToMany та низкою інших покращень для роботи з Vite, Mail та Notification.

1
Tips 09 вересня 2026

whenEmpty() та whenNotEmpty() - умовні операції

Потрібно виконувати код лише тоді, коли колекція порожня або непорожня? if/else роблять код об'ємним.

whenEmpty() та whenNotEmpty() роблять це чисто.

Приклади використання:

  • Показати контент за замовчуванням
  • Логувати попередження
  • Запускати fallback-логіку
  • Присвоювати значення за замовчуванням

Перевага:

Методи ланцюжаться та зберігають fluent-синтаксис.

Порада: значення, повернуте з callback, стає новим значенням колекції.

3
$users = User::where('active', true)->get();

// ПОГАНО: розривається ланцюжок
if ($users->isEmpty()) {
  return redirect()->back()->with('error', 'No active users');
}

// ДОБРЕ: fluent-синтаксис
$users->whenEmpty(function () {
  return redirect()->back()->with('error', 'No active users');
});

// Додати елементи за замовчуванням, якщо порожньо
$products = Product::where('featured', true)->get();

$products = $products->whenEmpty(function ($collection) {
  return Product::latest()->limit(5)->get();
});

// Логування, якщо непорожня
$errors->whenNotEmpty(function ($collection) {
  Log::error('Validation errors found', $collection->toArray());
});

// З "else"
$users->whenEmpty(
  fn($collection) => ['name' => 'Guest'],
  fn($collection) => $collection->first()
);
// API-відповідь із fallback
return response()->json([
  'users' => $users->whenEmpty(fn() => collect([
    ['name' => 'No users found', 'id' => null]
  ]))
]);

// Ланцюжок операцій
$results = collect($searchResults)
  ->whenEmpty(fn() => $this->getDefaultResults())
  ->take(10)
  ->map(fn($item) => $this->format($item));

// Прогрів кешу
$cached = Cache::get('popular_posts');

collect($cached)->whenEmpty(function () {
  $posts = Post::popular()->get();
  Cache::put('popular_posts', $posts, 3600);
  return $posts;
});

// Надсилання email-дайджесту
$notifications->whenNotEmpty(function ($items) {
  Mail::to($user)->send(new NotificationDigest($items));
});
Fuzz для Pest
Новини 09 вересня 2026

Знайдіть несподівані тестові дані за допомогою Fuzz для Pest

Пакет Fuzz від Джона Пурвіса дозволяє проводити фаз-тестування безпосередньо в Pest 5, генеруючи різноманітні вхідні дані для виявлення помилок, які важко передбачити вручну. Інструмент використовує coverage-guided підхід для ефективного дослідження коду.

4

Статті, новини та посібники про Laravel і PHP українською: релізи фреймворку, патерни, інструменти та досвід команд. Нижче - розбивка за категоріями й темами, якщо хочете звузити пошук.

Зараз опубліковано 244 матеріали від 3 авторів. Останній матеріал - 12 вересня 2026.