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

Функция tap

Функция tap принимает два параметра: значение, которое нужно "протащить" через функцию, и замыкание, выполняющее побочное действие над этим значением. После выполнения замыкания функция возвращает исходное значение без изменений. Это полезно для отладки, логирования или выполнения дополнительных операций в цепочках методов.

Синтаксис

<?php tap($value, $callback); ?>

Пример

Давайте создадим строку и выведем её в лог, а затем продолжим работу со строкой:

<?php use Illuminate\Support\Facades\Log; class ExampleController extends Controller { public function index() { $res = tap('abcde', function ($value) { Log::info('Processing value: ' . $value); }); echo $res; } } ?>

Результат выполнения кода:

"abcde"

При этом в лог будет записано сообщение "Processing value: abcde", а переменная $res содержит исходную строку.

Пример

Давайте используем tap в цепочке методов, чтобы проанализировать промежуточное значение:

<?php use App\Models\Article; use Illuminate\Support\Facades\Log; class ArticleController extends Controller { public function index() { $res = Article::where('status', 'published') ->tap(function ($query) { $count = $query->count(); Log::info('Found ' . $count . ' published articles'); }) ->get(); echo $res; } } ?>

Результат выполнения кода:

[{"id":1,"title":"article 1","status":"published"},{"id":2,"title":"article 2","status":"published"}]

Метод tap в этом примере позволяет залогировать количество найденных записей до выполнения запроса с помощью get.

Пример

Давайте используем tap для модификации коллекции с побочным эффектом:

<?php use Illuminate\Support\Collection; class CollectionController extends Controller { public function index() { $res = collect([1, 2, 3, 4, 5]) ->tap(function ($collection) { $collection->push(6); }) ->map(function ($item) { return $item * 2; }); echo $res; } } ?>

Результат выполнения кода:

[2,4,6,8,10,12]

Функция tap позволяет добавить элемент в коллекцию как побочное действие, а затем продолжить цепочку методов с изменённой коллекцией.

Смотрите также

  • функция dd,
    которая выводит содержимое переменной и останавливает выполнение скрипта
  • функция dump,
    которая выводит содержимое переменной без остановки скрипта
  • функция with,
    которая возвращает переданное значение без изменений
  • метод tap коллекции,
    который позволяет выполнить побочное действие над коллекцией
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить