Laravel: объект _get Альтернатива для необязательной вспомогательной функции

Привет, разработчики, В Laravel при доступе к свойству отношения мы не уверены, существуют ли данные отношения. Если существуют, то все хорошо. Но что если не существуют, то в таких случаях мы получаем следующее предупреждение;

Рассмотрим приведенный ниже код

$user = User::findOrFail(1);
$subscription = $user->subscription->created_at;
Вход в полноэкранный режим Выйти из полноэкранного режима

PHP Notice: Trying to get property 'created_at' of non-object in /Users/benittoraj/code/laravel/mas-laraveleval()'d code on line

Чтобы избежать этой ошибки, мы часто используем дополнительную вспомогательную функцию.

 $subscriptionCreatedAt= optional($user->subscription)->created_at;
Войти в полноэкранный режим Выйти из полноэкранного режима

Знаете ли вы, что есть другой способ справиться с этой проблемой, используя вспомогательную функцию object_get

$subscriptionCreatedAt = object_get($user, 'subscription.created_at);
Войти в полноэкранный режим Выйти из полноэкранного режима

Самое приятное в вспомогательной функции object_get то, что мы можем получить доступ к свойству отношения relation, используя синтаксис точки. Таким образом, наш код выглядит чистым. Если данные отношения не существуют, она останавливается и возвращает null;

[реализация хелпера object_get](https://github.com/illuminate/support/blob/master/helpers.php#:~:text=*/-,function%20object_get(%24object%2C%20%24key%2C%20%24default,%7D,-%7D)

Продолжайте учиться!!!

Оцените статью
devanswers.ru
Добавить комментарий