TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6166 2.11K
⚖️ Чем отличается ?: от ?? на самом деле

В проектах их часто путают, хотя работают они по разным правилам. Коротко и по делу — что выбирать и когда.

🔸 Тернарный оператор ?:

Проверяет true/false значение.

$displayName = $payload['name'] ?: 'Guest';


📌 Возвращает правую часть, если значение: '', null, false, 0 или другая «ложь».
❗️ Но если ключ не существует → получите Undefined array key.

Пример:

$payload['name'] = false; // → 'Guest'
$payload['name'] не существует → ошибка

🔸 Null coalescing оператор ??

Проверяет существует ли ключ и не null.

$displayName = $payload['name'] ?? 'Guest';


📌 Работает безопасно даже если ключ отсутствует.
📌 Возвращает любые значения, в том числе false и пустую строку.

Пример:

$payload['name'] = false; // → false
$payload['name'] отсутствует → 'Guest'

⚠️ Частая ошибка

?? может спрятать баги.

$firstName = $payload['frist_name'] ?? 'Guest';

Опечатка → ошибки нет → баг уходит в прод.
?: в такой ситуации бы упал и подсветил проблему.

🧭 Что использовать?

Используйте ?:, если:

🔸 значение точно существует

🔸 нужно проверять truthiness

Используйте ??, если:

🔸 ключ может отсутствовать

🔸 важно отличать null от false, 0, ''

🔸 работаете с внешними API / неполными payload'ами

🐸 Библиотека пхпшника

📍 Навигация: ВакансииЗадачиВопросы с собеса

#элементарный_выбор
  • 👍 13
More from @phpproglib
  1. Sep 24, 2026👍 5 способов встроить AI в Laravel Laravel AI SDK позволяет добавлять AI-функции прямо в…
  2. Sep 23, 2026🛠 Symfony 8.2 научился автоматически генерировать JSON Schema для конфигурации приложения…
  3. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  4. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  5. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
  6. Sep 19, 2026🌞 В Symfony 8.2 появилось 29 новых Bundle — теперь компоненты вроде Mailer, Messenger и C…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →