From ac406916194d5cb33963a5a24ec87f255a422439 Mon Sep 17 00:00:00 2001 From: demn98 <79911094+demn98@users.noreply.github.com> Date: Thu, 24 Oct 2024 18:16:03 +0300 Subject: [PATCH] Update helpers.md --- helpers.md | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 1 deletion(-) diff --git a/helpers.md b/helpers.md index 5d3ec736..3d594ccc 100644 --- a/helpers.md +++ b/helpers.md @@ -1,5 +1,5 @@ --- -git: bb4650831ec4567c07d72f7a9949a95f90c04035 +git: 8f1a3d074d960178fc00bc91760324336e898822 --- # Глобальные помощники (helpers) @@ -75,6 +75,8 @@ Laravel содержит множество глобальных «вспомо - [Number::abbreviate](#method-number-abbreviate) - [Number::clamp](#method-number-clamp) - [Number::currency](#method-number-currency) +- [Number::defaultCurrency](#method-default-currency) +- [Number::defaultLocale](#method-default-locale) - [Number::fileSize](#method-number-file-size) - [Number::forHumans](#method-number-for-humans) - [Number::format](#method-number-format) @@ -85,6 +87,8 @@ Laravel содержит множество глобальных «вспомо - [Number::trim](#method-number-trim) - [Number::useLocale](#method-number-use-locale) - [Number::withLocale](#method-number-with-locale) +- [Number::useCurrency](#method-number-use-currency) +- [Number::withCurrency](#method-number-with-currency) @@ -181,6 +185,7 @@ Laravel содержит множество глобальных «вспомо - [value](#method-value) - [view](#method-view) - [with](#method-with) +- [when](#method-when) @@ -1213,6 +1218,28 @@ $classes = Arr::toCssStyles($array); // 1.000,00 € + +#### `Number::defaultCurrency()` + +Метод `Number::defaultCurrency` возвращает валюту по умолчанию, используемую классом `Number`: + + use Illuminate\Support\Number; + + $currency = Number::defaultCurrency(); + + // USD + + +#### `Number::defaultLocale()` + +Метод `Number::defaultLocale` возвращает локаль по умолчанию, используемую классом `Number`: + + use Illuminate\Support\Number; + + $locale = Number::defaultLocale(); + + // en + #### `Number::fileSize()` @@ -1409,6 +1436,32 @@ $result = Number::pairs(25, 10, offset: 0); return Number::format(1500); }); + +#### `Number::useCurrency()` + +Метод `Number::useCurrency` устанавливает глобальную числовую валюту по умолчанию, что влияет на форматирование валюты при последующих вызовах методов класса `Number`: + + use Illuminate\Support\Number; + + /** + * Bootstrap any application services. + */ + public function boot(): void + { + Number::useCurrency('GBP'); + } + + +#### `Number::withCurrency()` + +Метод `Number::withCurrency` выполняет данное замыкание, используя указанную валюту, а затем восстанавливает исходную валюту после выполнения обратного вызова: + + use Illuminate\Support\Number; + + $number = Number::withCurrency('GBP', function () { + // ... + }); + ## Пути @@ -2291,6 +2344,23 @@ $secondService->all(); // (cached result) // 5 + +#### `when()` + +Функция `when` возвращает заданное ей значение, если заданное условие имеет значение `true`. В противном случае возвращается `null`. Если замыкание передается в качестве второго аргумента функции, замыкание будет выполнено и будет возвращено его возвращаемое значение: + + $value = when(true, 'Hello World'); + + $value = when(true, fn () => 'Hello World'); + +Функция `when` в первую очередь полезна для условного рендеринга атрибутов HTML: + +```blade +
+ ... +
+``` + ## Другие утилиты @@ -2342,6 +2412,61 @@ $now = Carbon::now(); Подробное описание `Carbon` и его функций можно найти в [официальной документации Carbon](https://carbon.nesbot.com/docs/). + +### Отложенные функции + +> [!WARNING] +> Отложенные функции в настоящее время находятся на стадии бета-тестирования, пока мы собираем отзывы сообщества. + +Хотя [задания в очереди](/docs/{{version}}/queues) Laravel позволяют ставить задачи в очередь для фоновой обработки, иногда у вас могут возникнуть простые задачи, которые вы хотели бы отложить без настройки или обслуживания долго работающего обработчика очереди. + +Отложенные функции позволяют отложить выполнение закрытия до тех пор, пока HTTP-ответ не будет отправлен пользователю, что позволяет вашему приложению чувствовать себя быстрым и отзывчивым. Чтобы отложить выполнение замыкания, просто передайте его функции `Illuminate\Support\defer`: + +```php +use App\Services\Metrics; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Route; +use function Illuminate\Support\defer; + +Route::post('/orders', function (Request $request) { + // Create order... + + defer(fn () => Metrics::reportOrder($order)); + + return $order; +}); +``` + +По умолчанию отложенные функции будут выполняться только в том случае, если HTTP-ответ, команда Artisan или задание в очереди, из которого вызывается `Illuminate\Support\defer`, завершаются успешно. Это означает, что отложенные функции не будут выполняться, если запрос приведет к HTTP-ответу `4xx` или `5xx`. Если вы хотите, чтобы отложенная функция выполнялась всегда, вы можете связать метод `always` с вашей отложенной функцией: + +```php +defer(fn () => Metrics::reportOrder($order))->always(); +``` + + +#### Отмена отложенных функций + +Если вам нужно отменить отложенную функцию до ее выполнения, вы можете использовать метод `forget`, чтобы отменить функцию по ее имени. Чтобы назвать отложенную функцию, укажите второй аргумент функции `Illuminate\Support\defer`: + +```php +defer(fn () => Metrics::report(), 'reportMetrics'); + +defer()->forget('reportMetrics'); +``` + + +#### Совместимость отложенных функций + +Если вы обновились до Laravel 11.x из приложения Laravel 10.x и скелет вашего приложения все еще содержит файл `app/Http/Kernel.php`, вам следует добавить промежуточное программное обеспечение `InvokeDeferredCallbacks` в начало свойства `$middleware` ядра: + +```php +protected $middleware = [ + \Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks::class, // [tl! add] + \App\Http\Middleware\TrustProxies::class, + // ... +]; +``` + ### Лотерея @@ -2443,6 +2568,12 @@ $user = Pipeline::send($user) Класс `Sleep` предоставляет разнообразные методы, позволяющие вам работать с различными единицами времени: + // Вернуть значение после сна... + $result = Sleep::for(1)->second()->then(fn () => 1 + 1); + + // Спать, пока заданное значение истинно... + Sleep::for(1)->second()->while(fn () => shouldKeepSleeping()); + //Приостановите выполнение на 90 секунд... Sleep::for(1.5)->minutes();