Вопрос №46679 от пользователя Станислав Пефтев в уроке «Null Object Pattern», курс «PHP: Полиморфизм»

Станислав Пефтев

Обратите внимание на проверку существования пользователя. Если её не сделать, то код упадёт с ошибкой, потому что вызывается метод hasArticles() у null.

Это в принципе не важно в контексте замены такой проверки на Null Object Pattern, но все-таки: код упадет в любом случае или только если перед нами пользователь не прошедший аутентификацию?

1 0

Станислав Дзисяк

Приветствую, Станислав!

код упадет в любом случае или только если перед нами пользователь не прошедший аутентификацию?

В первом примере, о котором идёт речь, код упадёт в случае если пользователь не прошел аутентификацию, если убрать из условия $this->userSignedIn(). Так как $this->currentUser будет содержать null и соответственно вызов метода getArticles() на null приведёт к ошибке. Использование Null Object Pattern как раз решает эту задачу, так как $this->currentUser будет всегда содержать пользователя. Если пользователь аутентифицирован, то пользователя, а если нет - то гостя, у которого также есть нужный метод getArticles(). Соответственно можно будет избавиться от дополнительной проверки.

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
22 сентября 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
22 сентября 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
22 сентября 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
22 сентября 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
22 сентября 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
22 сентября 5 месяцев

Похожие вопросы

Константин Ситников 22 июля 2021 →

Ревью (https://ru.hexlet.io/code_reviews/426571). Не понимаю что я делаю не так. Получается что у меня что-...

Алексей Швецов 29 марта 2021 →

Здравствуйте. При решения испытал некий... диссонанс. В моменте, где нужно было дописать конструктор User д...

Gleb Varganov 12 ноября 2020 →

Добрый вечер! Хотел узнать Вашего мнения по поводу правильности конструкции в ревью. https://ru.hexlet.io/c...

Вильдан Фазлыев 14 июля 2020 →

Как так получается, что мы создаем объект класса, передавая в него объект, который в данный момент еще не с...

Евгений Вафиев 09 мая 2020 →

Добрый вечер) Хотелось бы уточнить недостатки такой реализации (https://ru.hexlet.io/code_reviews/263055)))...