РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
940 of 1392 menu

Функция 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,
    которая выполняет код и перехватывает исключения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить