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

Статті за тегом «Laravel»

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

No results.
Laradocs
Новини 14 червня 2026

Laradocs: пакет для створення версійованої документації в Laravel-додатках

Laradocs - Laravel-пакет для розгортання документаційного сайту з Markdown-файлів усередині вашого коду. Пишіть документацію поруч із кодом, комітьте разом, а Laradocs рендерить її за адресою /docs з навігацією, SEO-метаданими та адаптивним інтерфейсом.

Toolkit: каталог готових AI-інструментів для Laravel AI SDK
Новини 14 червня 2026

Toolkit: каталог готових AI-інструментів для Laravel AI SDK

Pushpak Chhajed під егідою Ship Fast Labs представив Toolkit - колекцію готових інструментів для Laravel AI SDK. Кожен інструмент постачається як окремий Composer-пакет без сервіс-провайдерів і спільних залежностей, що дозволяє встановлювати лише потрібні компоненти для ваших AI-агентів.

Патерн Singleton
Посібники 13 червня 2026
Патерни проєктування

Singleton - один екземпляр

Патерн Singleton гарантує один екземпляр класу на весь застосунок. У Laravel замість класичного Singleton зі static-властивістю та приватним конструктором використовують контейнерний singleton: app()->singleton(...). Контейнер створює об'єкт один раз і повертає той самий екземпляр на всі залежно

Патерн Factory Method
Посібники 07 червня 2026
Патерни проєктування

Factory Method - вибір створення

Factory Method переносить рішення про створення конкретного об'єкта у підкласи. Базовий клас задає загальний алгоритм, а який саме об'єкт створити - вирішує нащадок. Це допомагає розширювати логіку без змін у базовому класі (принцип відкритості/закритості).

Патерн Builder
Посібники 04 червня 2026
Патерни проєктування

Builder - поетапна побудова об'єктів

Патерн Builder корисний, коли об'єкт має багато опцій і варіантів. Він дозволяє зібрати об'єкт поетапно і уникнути довгих конструкторів із десятком аргументів.

Патерн Abstract Factory
Посібники 01 червня 2026
Патерни проєктування

Abstract Factory - сімейства об'єктів

Патерн Abstract Factory створює сім'ї пов'язаних об'єктів без прив'язки до конкретних класів. Він корисний, коли потрібно підтримувати кілька конфігурацій або провайдерів, які мають узгоджуватись між собою (наприклад, пошта і нотифікації одного хмарного провайдера).

Tips 10 квітня 2026

sole() - суворе отримання одного результату

Запит має повернути рівно один запис. Повертає нуль або декілька? Це баг.

first() мовчки повертає null. sole() кидає виняток якщо не рівно один.

Коли використовувати:

  • Отримання за унікальним ідентифікатором
  • Коли декілька результатів вказують на пошкодження даних
  • Критична бізнес-логіка

Винятки що кидаються:

  • RecordsNotFoundException - нуль результатів
  • MultipleRecordsFoundException - більше одного

Порада: Використовувати у фінансових операціях де очікується рівно один запис.

// ПОГАНО: Мовчки повертає null або перший з багатьох
$user = User::where('email', $email)->first();
// Що якщо є дублікати? Мовчазний баг.

// ДОБРЕ: Гарантує рівно один результат
try {
    $user = User::where('email', $email)->sole();
    // Гарантовано єдиний користувач що підходить
} catch (RecordsNotFoundException $e) {
    // Користувач не знайдений
} catch (MultipleRecordsFoundException $e) {
    // Пошкодження даних - існують дублікати
}

// В обробці рахунків
$invoice = Invoice::where('invoice_number', $number)->sole();
// Дублікати були б серйозним багом

// firstOr vs soleOr
$user = User::where('email', $email)->soleOr(function () {
    throw new UserNotFoundException();
});

// Зі зв'язками
$user = User::with('profile')->where('id', $id)->sole();
Tips 04 квітня 2026

cursor() - потокове передавання великих наборів даних

При експорті 100,000 користувачів. get() завантажує все в пам'ять. Сервер падає.

cursor() передає результати один за одним. Константне використання пам'яті.

Як це працює:

Використовує MySQL cursor. Отримує один запис за раз. Пам'ять залишається низькою.

Коли використовувати:

  • Експорт великих наборів даних
  • Обробка величезних таблиць
  • Середовища з обмеженою пам'яттю

Компроміс:

Тримає з'єднання з базою даних відкритим довше. Не для веб-запитів, ідеально для команд.

Порада: Використовувати в консольних командах та jobs, уникай в HTTP контролерах.

// ПОГАНО: Завантажує 100k записів в пам'ять
$users = User::all(); // Може впасти
foreach ($users as $user) {
    $this->export($user);
}

// ДОБРЕ: Потокове передавання один за одним
foreach (User::cursor() as $user) {
    $this->export($user); // Константна пам'ять
}

// В консольній команді
public function handle()
{
    $this->output->progressStart(User::count());

    foreach (User::cursor() as $user) {
        $this->processUser($user);
        $this->output->progressAdvance();
    }

    $this->output->progressFinish();
}

// З умовами
foreach (User::where('active', true)->cursor() as $user) {
    // Обробляти тільки активних користувачів
}