Null Object - поведінка за замовчуванням
Замінює null безпечним об'єктом із тим самим інтерфейсом і "порожньою" поведінкою. Прибирає перевірки на null - і де він може приховати справжню проблему.
Почніть вводити, щоб шукати по статтях, вакансіях, компаніях, проєктах, ресурсах, пакетах, подіях і користувачах.
Bridge розділяє абстракцію та її реалізацію на дві окремі ієрархії, щоб змінювати їх незалежно.
Коли є кілька незалежних вимірів варіативності, наївний підхід множить класи комбінаторно. Приклад - канали сповіщення (email, SMS, push) × формати повідомлень (JSON, текст, HTML). Без Bridge довелось би писати EmailJsonNotifier, EmailPlainNotifier, SmsJsonNotifier… - добуток обох вимірів.
Один вимір лишається в основній ієрархії (канали), а другий виноситься в окрему залежність (Formatter), яку передають усередину. Канали і формати тепер комбінуються вільно: 3 + 2 класи замість 3 × 2.
interface Formatter
{
public function format(string $message): string;
}
class JsonFormatter implements Formatter
{
public function format(string $message): string
{
return json_encode(['message' => $message]);
}
}
class PlainFormatter implements Formatter
{
public function format(string $message): string
{
return $message;
}
}
abstract class NotifierBridge
{
public function __construct(protected Formatter $formatter) {}
abstract public function send(string $message): void;
}
class EmailNotifierBridge extends NotifierBridge
{
public function send(string $message): void
{
$body = $this->formatter->format($message);
// send email
}
}
class SmsNotifierBridge extends NotifierBridge
{
public function send(string $message): void
{
$body = $this->formatter->format($message);
// send sms
}
}
7 / 34
Замінює null безпечним об'єктом із тим самим інтерфейсом і "порожньою" поведінкою. Прибирає перевірки на null - і де він може приховати справжню проблему.
Пропускає дані через серію кроків, де кожен трансформує вхід і передає далі. Готовий Illuminate\Pipeline\Pipeline та його зв'язок із middleware.
Розробник повного стеку для хмарної платформи управління дослідженнями. Розроблення функцій на PHP (Laravel) та Vue.js, побудова REST API, оптимізація продуктивності, написання тестів. Вимоги: міцні знання PHP та Laravel, досвід з Vue.js і JavaScript, англійська Upper-Intermediate+.
Старший/Lead PHP розробник з глибокою експертизою Laravel для побудови та інтеграції систем штучного інтелекту. Спеціаліст матиме відповідати за складні backend-функції, менторство інших розробників, проектування та впровадження AI-driven automation агентів в продукт. Вимоги: 6+ років досвіду на PHP, 4+ років Laravel, практичний досвід роботи з LLM API, контейнеризацією (Docker) та хмарними платформами, мова English Upper Intermediate+.
Middle Magento Back-End розробник займатиметься розробкою та підтримкою веб-магазинів на платформі Magento 2, їх оптимізацією. Вимагається практичний досвід з Magento 2 не менше 2 років, знання PHP (OOP), MySQL, Javascript, GIT. Бажані: розробка Magento Extensions, KnockoutJS, RequireJS, досвід з MVC-фреймворками та Docker.
Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.