Avatar ·

Что такое null/nil в PHP и как с ним работать?

Всем привет! Я новичок в PHP и пытаюсь разобраться с типом null (или nil, как его иногда называют). В документации написано, что это специальное значение, обозначающее «отсутствие значения», но на практике у меня возникают странные ошибки.

Например, я пишу простой код:

$user = getUserFromDatabase($id); // функция может вернуть null, если пользователь не найден
echo $user->name;

Если пользователь найден, всё работает, но если нет — вылетает ошибка "Trying to get property 'name' of non-object". Я понимаю, что нужно проверять на null, но как это правильно делать? Пробовал if ($user != null) и if (is_null($user)), но иногда поведение разное. Также слышал про оператор ?? (null coalescing) — он работает только для переменных или для свойств тоже?

Ещё вопрос: как отличить null от пустой строки или false? У меня была ситуация, когда $value = '' и $value = null вели себя одинаково в условии if (!$value). Как правильно проверять именно на null?

Буду благодарен за примеры с пояснениями, особенно про работу с массивами и объектами. Какие best practices по работе с null в современном PHP (8.x)?