---
title: "Null Object - поведінка за замовчуванням"
url: https://laravelukraine.com/blog/null-object-povedinka-za-zamovcuvanniam
date: 2026-09-10
---

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

Null Object замінює `null` об'єктом, що реалізує той самий інтерфейс, але має "порожню", безпечну поведінку.

### Яку проблему вирішує

Необов'язкові залежності породжують розкидані перевірки `if ($x !== null)` перед кожним викликом. Їх легко забути, і код обростає захисними умовами.

### Як вирішує

Замість `null` підставляється об'єкт-заглушка з тим самим інтерфейсом і безпечними "нічого не роблячими" методами. Клієнт завжди викликає метод однаково, без перевірок. У прикладі `NullLogger` безпечно поглинає виклики `info()`.

```php
interface LoggerContract
{
  public function info(string $message): void;
}

class NullLogger implements LoggerContract
{
  public function info(string $message): void
  {
  }
}

class FileLogger implements LoggerContract
{
  public function info(string $message): void
  {
    // write
  }
}
```

### Де застосовувати

- Необов'язкові залежності: логер, що нічого не пише; нотифікатор, що нічого не шле.
- "Порожні" доменні значення: гість як користувач без прав, порожній кошик.

### Плюси та мінуси

- **+** Прибирає перевірки на `null`; код рівніший і безпечніший.
- **+** Поведінку за замовчуванням зосереджено в одному класі.
- **−** Мовчазна заглушка може приховати справжню проблему.
- **−** Якщо відсутність значення - важлива ситуація, яку треба обробити, краще явний `null` або виняток.
