Null Object - поведінка за замовчуванням
Замінює null безпечним об'єктом із тим самим інтерфейсом і "порожньою" поведінкою. Прибирає перевірки на null - і де він може приховати справжню проблему.
Почніть вводити, щоб шукати по статтях, вакансіях, компаніях, проєктах, ресурсах, пакетах, подіях і користувачах.
Composite дозволяє працювати з деревом об'єктів так само, як з одним об'єктом: і окремий "лист", і "гілка" (група) реалізують той самий інтерфейс.
Ієрархічні структури (меню з підменю, дерева категорій, кошик із бандлами) змушують клієнтський код постійно розрізняти "це одиничний елемент чи група?" і писати окремі гілки для кожного випадку та ручну рекурсію обходу.
І лист, і композит реалізують спільний інтерфейс. Композит зберігає дітей (які теж можуть бути композитами) і делегує виклик їм. Клієнт викликає той самий метод незалежно від рівня вкладеності - рекурсія прихована в самих об'єктах.
У прикладі нижче і окремий товар (ProductItem), і набір товарів (Bundle) вміють рахувати total(). Бандл рахує суму своїх дітей, які теж можуть бути бандлами - глибина дерева не обмежена.
interface CartItem
{
public function total(): int;
}
class ProductItem implements CartItem
{
public function __construct(private int $price) {}
public function total(): int
{
return $this->price;
}
}
class Bundle implements CartItem
{
private array $items = [];
public function add(CartItem $item): void
{
$this->items[] = $item;
}
public function total(): int
{
return array_sum(array_map(
fn (CartItem $item) => $item->total(),
$this->items
));
}
}
8 / 34
Замінює null безпечним об'єктом із тим самим інтерфейсом і "порожньою" поведінкою. Прибирає перевірки на null - і де він може приховати справжню проблему.
Пропускає дані через серію кроків, де кожен трансформує вхід і передає далі. Готовий Illuminate\Pipeline\Pipeline та його зв'язок із middleware.
Розробник PHP для розробки та оптимізації high-load backend-сервісів із використанням Laravel, Apache Kafka, RabbitMQ і Redis. Вимоги: 5+ років досвіду в backend-розробці в senior/lead ролі, експертне знання Laravel або Symfony, обов'язковий досвід із Kafka, Redis, мікросервісною архітектурою, Docker/Kubernetes. Необхідна базова підготовка у high-load системах та real-time обробці.
Розробник бекенду для розроблення та підтримки PHP-систем розподілених сервісів. Основний стек: PHP, OOP, API дизайн, базі даних (MySQL, PostgreSQL). Вимоги: 2+ роки досвіду бекенд-розробки на PHP, знання архітектурних паттернів, Git, CI/CD, контейнеризації. Nice-to-have: Laravel, Symfony, Docker, Kubernetes, Redis, RabbitMQ.
Розробник PHP (фулстек) для розробки та підтримки веб-додатків. Основний стек: PHP 7x/8x, MySQL, Yii 2.0, JavaScript, Vue.js, REST API. Вимоги: 3+ років досвіду на PHP, 2+ років з Yii 2.0, знання MySQL на просунутому рівні, Git, CSS, jQuery. Будуть плюсом: Laravel, Redis, WebSocket, RabbitMQ, Firebase. Робота над власними продуктами компанії (CRM логістичних процесів), робота у команді, code review.
Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.