Функция with
Функция with используется для безопасного доступа к данным, которые могут быть пустыми. Она принимает первым параметром значение, а вторым - замыкание, которое будет выполнено только в том случае, если переданное значение не является null. Функция возвращает результат выполнения замыкания или null, если значение было пустым.
Синтаксис
<?php
with($value, callable $callback);
?>
Пример
Давайте используем функцию with для безопасного доступа к свойству модели, которая может быть не найдена:
<?php
use AppModelsUser;
$user = User::find(5);
$name = with($user, function ($user) {
return $user->name;
});
echo $name;
?>
Результат выполнения кода:
"John Doe"
Пример
Если пользователь не найден, функция вернёт null, а не вызовет ошибку:
<?php
use AppModelsUser;
$user = User::find(999);
$name = with($user, function ($user) {
return $user->name;
});
echo $name ?? 'User not found';
?>
Результат выполнения кода:
"User not found"
Пример
Функцию with удобно использовать для цепочек вызовов с вложенными свойствами:
<?php
use AppModelsOrder;
$order = Order::find(1);
$city = with($order, function ($order) {
return with($order->user, function ($user) {
return $user->address->city ?? null;
});
});
echo $city ?? 'City not found';
?>
Результат выполнения кода:
"New York"
Пример
Вместо замыкания можно передать вызов метода с использованием стрелочной функции:
<?php
use AppModelsArticle;
$article = Article::find(3);
$title = with($article, fn($article) => $article->getTitle());
echo $title ?? 'No title';
?>
Результат выполнения кода:
"Laravel Tips"
Смотрите также
-
функция
optional,
которая предоставляет безопасный доступ к свойствам и методам объекта -
функция
tap,
которая позволяет выполнить код и вернуть переданное значение -
функция
value,
которая возвращает переданное значение или результат замыкания -
функция
rescue,
которая выполняет код и перехватывает исключения