Repository - доступ до даних
Відділяє бізнес-логіку від доступу до даних за стабільним контрактом. Коли він виправданий, а коли в Laravel зайвий поверх Eloquent.
Почніть вводити, щоб шукати по статтях, вакансіях, компаніях, проєктах, ресурсах, пакетах, подіях і користувачах.
Decorator додає об'єкту нову поведінку, обгортаючи його в інший об'єкт із тим самим інтерфейсом, без змін у базовому компоненті.
Коли потрібно нарощувати функціональність (логування, кешування, авторизація), спадкування дає вибух підкласів на кожну комбінацію можливостей. До того ж поведінку часто хочеться вмикати динамічно й комбінувати у довільному порядку.
Декоратор реалізує той самий інтерфейс, що й обгорнутий об'єкт, виконує свою частину роботи й делегує решту далі. Шари накладаються один на одного, тож поведінка комбінується композицією, а не спадкуванням.
У Laravel ця ідея природно виглядає як Middleware: кожен middleware обгортає наступний і додає поведінку. Формально middleware - це framework-реалізація ідей Decorator та Chain of Responsibility.
use Closure;
use Illuminate\Http\Request;
class LogTime
{
public function handle(Request $request, Closure $next)
{
$start = microtime(true);
$response = $next($request);
$ms = (microtime(true) - $start) * 1000;
logger()->info('req ms', ['ms' => $ms]);
return $response;
}
}
// Застосувати middleware напряму за класом:
Route::middleware(LogTime::class)
->get('/orders', [OrderController::class, 'index']);
// Або зареєструвати аліас у bootstrap/app.php (Laravel 11+):
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'log.time' => LogTime::class,
]);
})
Route::middleware('log.time')->get('/', HomeController::class);
9 / 24
Відділяє бізнес-логіку від доступу до даних за стабільним контрактом. Коли він виправданий, а коли в Laravel зайвий поверх Eloquent.
Додає нові операції над набором об'єктів, не змінюючи їхні класи. Коли операцій більше, ніж типів, і чому новий тип об'єкта - слабке місце патерну.
FullStack розробник для проектів автоматизації та AI. Розробка backend на PHP Laravel з мікросервісною архітектурою, інтеграція ERP/CRM систем (NetSuite, HubSpot), та frontend на React з AI-функціоналом (chatbots, генерація контенту). Потребує 5+ років PHP, 3+ років Laravel на рівні архітектури, досвід мікросервісів, OOP, REST API, Websockets.
Full-Stack розробник для внутрішної B2B-платформи управління задачами. Розробка backend на Laravel 10/11 та frontend на Vue 3 + Inertia.js, проектування MySQL, тестування (PHPUnit/Vitest), робота з дизайн-системою Tailwind. Вимога: 3+ років досвіду з Laravel та Vue 3, знання Inertia.js/SPA, MySQL, REST API, Git-флоу, SOLID.
FullStack розробник для AI-продукту. Розробка React-інтерфейсів та PHP Laravel мікросервісів, інтеграція з LLM (ChatGPT), оптимізація промптів. Вимоги: 5+ років PHP, 3+ років Laravel та React/TypeScript, досвід мікросервісної архітектури, OOP/SOLID, REST API, WebSocket.
Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.