From 139641773e8e19432a79ea14452a9c996fcd6255 Mon Sep 17 00:00:00 2001 From: Hirohisa Kawase Date: Tue, 20 Feb 2024 11:29:27 +0900 Subject: [PATCH] =?UTF-8?q?2024-02-20=E3=81=BE=E3=81=A7=E3=81=AE=E5=8E=9F?= =?UTF-8?q?=E6=96=87=E5=A4=89=E6=9B=B4=E7=82=B9=E5=8F=8D=E6=98=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- original-en/billing.md | 12 ++++++- original-en/blade.md | 8 +++++ original-en/cashier-paddle.md | 2 +- original-en/collections.md | 22 ++++++++++++ original-en/eloquent.md | 42 ++++++++++++++-------- original-en/helpers.md | 32 ++++++++++++++--- original-en/http-client.md | 12 +++++++ original-en/packages.md | 12 +++++++ original-en/sail.md | 2 +- original-en/strings.md | 24 +++++++++++++ translation-ja/billing.md | 12 ++++++- translation-ja/blade.md | 16 ++++++--- translation-ja/cashier-paddle.md | 2 +- translation-ja/collections.md | 62 +++++++++++++++++++++----------- translation-ja/eloquent.md | 52 ++++++++++++++++----------- translation-ja/helpers.md | 26 +++++++++++++- translation-ja/http-client.md | 12 +++++++ translation-ja/packages.md | 12 +++++++ translation-ja/sail.md | 2 +- translation-ja/strings.md | 24 +++++++++++++ 20 files changed, 318 insertions(+), 70 deletions(-) diff --git a/original-en/billing.md b/original-en/billing.md index b828e96..ea9202f 100644 --- a/original-en/billing.md +++ b/original-en/billing.md @@ -309,7 +309,17 @@ Next, let's build the Checkout success route. This is the route that users will Route::get('/checkout/success', function (Request $request) { $sessionId = $request->get('session_id'); - $orderId = Cashier::stripe()->checkout->sessions->retrieve($sessionId)['metadata']['order_id'] ?? null; + if ($sessionId === null) { + return; + } + + $session = Cashier::stripe()->checkout->sessions->retrieve($sessionId); + + if ($session->payment_status !== 'paid') { + return; + } + + $orderId = $session['metadata']['order_id'] ?? null; $order = Order::findOrFail($orderId); diff --git a/original-en/blade.md b/original-en/blade.md index 0563470..44c5db3 100644 --- a/original-en/blade.md +++ b/original-en/blade.md @@ -1168,6 +1168,14 @@ You may invoke a slot's `isEmpty` method to determine if the slot contains conte ``` +Additionally, the `hasActualContent` method may be used to determine if the slot contains any "actual" content that is not an HTML comment: + +```blade +@if ($slot->hasActualContent()) + The scope has non-comment content. +@endif +``` + #### Scoped Slots diff --git a/original-en/cashier-paddle.md b/original-en/cashier-paddle.md index a903d93..bfc7253 100644 --- a/original-en/cashier-paddle.md +++ b/original-en/cashier-paddle.md @@ -133,7 +133,7 @@ If you have billable entities that are not users, you may also add the trait to Next, you should configure your Paddle keys in your application's `.env` file. You can retrieve your Paddle API keys from the Paddle control panel: ```ini -PADDLE_SELLER_ID=your-paddle-seller-id +PADDLE_CLIENT_SIDE_TOKEN=your-paddle-client-side-token PADDLE_API_KEY=your-paddle-api-key PADDLE_RETAIN_KEY=your-paddle-retain-key PADDLE_WEBHOOK_SECRET="your-paddle-webhook-secret" diff --git a/original-en/collections.md b/original-en/collections.md index 7ad60a5..bc1a978 100644 --- a/original-en/collections.md +++ b/original-en/collections.md @@ -184,6 +184,7 @@ For the majority of the remaining collection documentation, we'll discuss each m [replaceRecursive](#method-replacerecursive) [reverse](#method-reverse) [search](#method-search) +[select](#method-select) [shift](#method-shift) [shuffle](#method-shuffle) [skip](#method-skip) @@ -2142,6 +2143,27 @@ Alternatively, you may provide your own closure to search for the first item tha // 2 + +#### `select()` {.collection-method} + +The `select` method selects the given keys from the collection, similar to an SQL `SELECT` statement: + +```php +$users = collect([ + ['name' => 'Taylor Otwell', 'role' => 'Developer', 'status' => 'active'], + ['name' => 'Victoria Faith', 'role' => 'Researcher', 'status' => 'active'], +]); + +$users->select(['name', 'role']); + +/* + [ + ['name' => 'Taylor Otwell', 'role' => 'Developer'], + ['name' => 'Victoria Faith', 'role' => 'Researcher'], + ], +*/ +``` + #### `shift()` {.collection-method} diff --git a/original-en/eloquent.md b/original-en/eloquent.md index 955e73e..53e1270 100644 --- a/original-en/eloquent.md +++ b/original-en/eloquent.md @@ -1210,7 +1210,22 @@ Writing a global scope is simple. First, use the `make:scope` command to generat #### Applying Global Scopes -To assign a global scope to a model, you should override the model's `booted` method and invoke the model's `addGlobalScope` method. The `addGlobalScope` method accepts an instance of your scope as its only argument: +To assign a global scope to a model, you may simply place the `ScopedBy` attribute on the model: + + [UserObserver::class], - ]; + public function boot(): void + { + User::observe(UserObserver::class); + } > [!NOTE] > There are additional events an observer can listen to, such as `saving` and `retrieved`. These events are described within the [events](#events) documentation. diff --git a/original-en/helpers.md b/original-en/helpers.md index 4ba6db9..3615e1e 100644 --- a/original-en/helpers.md +++ b/original-en/helpers.md @@ -69,6 +69,7 @@ Laravel includes a variety of global "helper" PHP functions. Many of these funct [Arr::sortDesc](#method-array-sort-desc) [Arr::sortRecursive](#method-array-sort-recursive) [Arr::sortRecursiveDesc](#method-array-sort-recursive-desc) +[Arr::take](#method-array-take) [Arr::toCssClasses](#method-array-to-css-classes) [Arr::toCssStyles](#method-array-to-css-styles) [Arr::undot](#method-array-undot) @@ -842,10 +843,31 @@ If you would like the results sorted in descending order, you may use the `Arr:: $sorted = Arr::sortRecursiveDesc($array); + +#### `Arr::take()` {.collection-method} + +The `Arr::take` method returns a new array with the specified number of items: + + use Illuminate\Support\Arr; + + $array = [0, 1, 2, 3, 4, 5]; + + $chunk = Arr::take($array, 3); + + // [0, 1, 2] + +You may also pass a negative integer to take the specified number of items from the end of the array: + + $array = [0, 1, 2, 3, 4, 5]; + + $chunk = Arr::take($array, -2); + + // [4, 5] + #### `Arr::toCssClasses()` {.collection-method} -The `Arr::toCssClasses` conditionally compiles a CSS class string. The method accepts an array of classes where the array key contains the class or classes you wish to add, while the value is a boolean expression. If the array element has a numeric key, it will always be included in the rendered class list: +The `Arr::toCssClasses` method conditionally compiles a CSS class string. The method accepts an array of classes where the array key contains the class or classes you wish to add, while the value is a boolean expression. If the array element has a numeric key, it will always be included in the rendered class list: use Illuminate\Support\Arr; @@ -866,6 +888,8 @@ The `Arr::toCssClasses` conditionally compiles a CSS class string. The method ac The `Arr::toCssStyles` conditionally compiles a CSS style string. The method accepts an array of classes where the array key contains the class or classes you wish to add, while the value is a boolean expression. If the array element has a numeric key, it will always be included in the rendered class list: ```php +use Illuminate\Support\Arr; + $hasColor = true; $array = ['background-color: blue', 'color: blue' => $hasColor]; @@ -1353,7 +1377,7 @@ The `lang_path` function returns the fully qualified path to your application's $path = lang_path('en/messages.php'); -> [!NOTE] +> [!NOTE] > By default, the Laravel application skeleton does not include the `lang` directory. If you would like to customize Laravel's language files, you may publish them via the `lang:publish` Artisan command. @@ -1699,7 +1723,7 @@ The `env` function retrieves the value of an [environment variable](/docs/{{vers $env = env('APP_ENV', 'production'); -> [!WARNING] +> [!WARNING] > If you execute the `config:cache` command during your deployment process, you should be sure that you are only calling the `env` function from within your configuration files. Once the configuration has been cached, the `.env` file will not be loaded and all calls to the `env` function will return `null`. @@ -2087,7 +2111,7 @@ Additional arguments may be passed to the `value` function. If the first argumen $result = value(function (string $name) { return $name; }, 'Taylor'); - + // 'Taylor' diff --git a/original-en/http-client.md b/original-en/http-client.md index 43dfb9f..c172dc8 100644 --- a/original-en/http-client.md +++ b/original-en/http-client.md @@ -231,6 +231,18 @@ If you would like the HTTP client to automatically retry the request if a client $response = Http::retry(3, 100)->post(/* ... */); +If you would like to manually calculate the number of milliseconds to sleep between attempts, you may pass a closure as the second argument to the `retry` method: + + use Exception; + + $response = Http::retry(3, function (int $attempt, Exception $exception) { + return $attempt * 100; + })->post(/* ... */); + +For convenience, you may also provide an array as the first argument to the `retry` method. This array will be used to determine how many milliseconds to sleep between subsequent attempts: + + $response = Http::retry([100, 200])->post(/* ... */); + If needed, you may pass a third argument to the `retry` method. The third argument should be a callable that determines if the retries should actually be attempted. For example, you may wish to only retry the request if the initial request encounters an `ConnectionException`: use Exception; diff --git a/original-en/packages.md b/original-en/packages.md index 5d6a5ca..1ebc1ea 100644 --- a/original-en/packages.md +++ b/original-en/packages.md @@ -174,6 +174,18 @@ Package translation lines are referenced using the `package::file.line` syntax c echo trans('courier::messages.welcome'); +You can register JSON translation files for your package using the `loadJsonTranslationsFrom` method. This method accepts the path to the directory that contains your package's JSON translation files: + +```php +/** + * Bootstrap any package services. + */ +public function boot(): void +{ + $this->loadJsonTranslationsFrom(__DIR__.'/../lang'); +} +``` + #### Publishing Language Files diff --git a/original-en/sail.md b/original-en/sail.md index a4adf18..404987d 100644 --- a/original-en/sail.md +++ b/original-en/sail.md @@ -96,7 +96,7 @@ By default, Sail commands are invoked using the `vendor/bin/sail` script that is However, instead of repeatedly typing `vendor/bin/sail` to execute Sail commands, you may wish to configure a shell alias that allows you to execute Sail's commands more easily: ```shell -alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail' +alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)' ``` To make sure this is always available, you may add this to your shell configuration file in your home directory, such as `~/.zshrc` or `~/.bashrc`, and then restart your shell. diff --git a/original-en/strings.md b/original-en/strings.md index 29590de..01855fd 100644 --- a/original-en/strings.md +++ b/original-en/strings.md @@ -95,6 +95,7 @@ Laravel includes a variety of functions for manipulating string values. Many of [Str::swap](#method-str-swap) [Str::take](#method-take) [Str::title](#method-title-case) +[Str::toBase64](#method-str-to-base64) [Str::toHtmlString](#method-str-to-html-string) [Str::ucfirst](#method-str-ucfirst) [Str::ucsplit](#method-str-ucsplit) @@ -194,6 +195,7 @@ Laravel includes a variety of functions for manipulating string values. Many of [tap](#method-fluent-str-tap) [test](#method-fluent-str-test) [title](#method-fluent-str-title) +[toBase64](#method-fluent-str-to-base64) [trim](#method-fluent-str-trim) [ucfirst](#method-fluent-str-ucfirst) [ucsplit](#method-fluent-str-ucsplit) @@ -1145,6 +1147,17 @@ The `Str::title` method converts the given string to `Title Case`: // A Nice Title Uses The Correct Case + +#### `Str::toBase64()` {.collection-method} + +The `Str::toBase64` method converts the given string to Base64: + + use Illuminate\Support\Str; + + $base64 = Str::toBase64('Laravel'); + + // TGFyYXZlbA== + #### `Str::toHtmlString()` {.collection-method} @@ -2417,6 +2430,17 @@ The `title` method converts the given string to `Title Case`: // A Nice Title Uses The Correct Case + +#### `toBase64()` {.collection-method} + +The `toBase64` method converts the given string to Base64: + + use Illuminate\Support\Str; + + $base64 = Str::of('Laravel')->toBase64(); + + // TGFyYXZlbA== + #### `trim` {.collection-method} diff --git a/translation-ja/billing.md b/translation-ja/billing.md index 787ccbf..92a9fb0 100644 --- a/translation-ja/billing.md +++ b/translation-ja/billing.md @@ -309,7 +309,17 @@ StripeへのAPI呼び出しで発生した例外は、アプリケーション Route::get('/checkout/success', function (Request $request) { $sessionId = $request->get('session_id'); - $orderId = Cashier::stripe()->checkout->sessions->retrieve($sessionId)['metadata']['order_id'] ?? null; + if ($sessionId === null) { + return; + } + + $session = Cashier::stripe()->checkout->sessions->retrieve($sessionId); + + if ($session->payment_status !== 'paid') { + return; + } + + $orderId = $session['metadata']['order_id'] ?? null; $order = Order::findOrFail($orderId); diff --git a/translation-ja/blade.md b/translation-ja/blade.md index b8aa585..5ef4e9e 100644 --- a/translation-ja/blade.md +++ b/translation-ja/blade.md @@ -1126,7 +1126,7 @@ public function __construct( ```blade - Whoops! Something went wrong! + おっと! なにかおかしいようです! ``` @@ -1150,7 +1150,7 @@ public function __construct( Server Error - Whoops! Something went wrong! + おっと! なにかおかしいようです! ``` @@ -1161,13 +1161,21 @@ public function __construct(
@if ($slot->isEmpty()) - This is default content if the slot is empty. + ここはスロットが空の場合のデフォルトコンテンツ. @else {{ $slot }} @endif
``` +さらに、`hasActualContent`メソッドを使用して、スロットにHTMLコメントではない「本当」のコンテンツが含まれているかを判定できます。 + +```blade +@if ($slot->hasActualContent()) + コメントではないコンテンツを持つスコープ。 +@endif +``` + #### スコープ付きスロット @@ -1179,7 +1187,7 @@ VueのようなJavaScriptフレームワークを使用している方は「ス {{ $component->formatAlert('Server Error') }} - Whoops! Something went wrong! + おっと! なにかおかしいようです! ``` diff --git a/translation-ja/cashier-paddle.md b/translation-ja/cashier-paddle.md index a903d93..bfc7253 100644 --- a/translation-ja/cashier-paddle.md +++ b/translation-ja/cashier-paddle.md @@ -133,7 +133,7 @@ If you have billable entities that are not users, you may also add the trait to Next, you should configure your Paddle keys in your application's `.env` file. You can retrieve your Paddle API keys from the Paddle control panel: ```ini -PADDLE_SELLER_ID=your-paddle-seller-id +PADDLE_CLIENT_SIDE_TOKEN=your-paddle-client-side-token PADDLE_API_KEY=your-paddle-api-key PADDLE_RETAIN_KEY=your-paddle-retain-key PADDLE_WEBHOOK_SECRET="your-paddle-webhook-secret" diff --git a/translation-ja/collections.md b/translation-ja/collections.md index 164592d..24847b6 100644 --- a/translation-ja/collections.md +++ b/translation-ja/collections.md @@ -31,7 +31,7 @@ $collection = collect([1, 2, 3]); -> [!NOTE] +> [!NOTE] > [Eloquent](/docs/{{version}}/eloquent)クエリの結果は、常に`Collection`インスタンスを返します。 @@ -184,6 +184,7 @@ [replaceRecursive](#method-replacerecursive) [reverse](#method-reverse) [search](#method-search) +[select](#method-select) [shift](#method-shift) [shuffle](#method-shuffle) [skip](#method-skip) @@ -374,7 +375,7 @@ // [1, 2, 3] -> [!NOTE] +> [!NOTE] > `collect`メソッドは`Enumerable`のインスタンスがあり、それをレイジーコレクションでなくする必要がある場合、とくに便利です。`collect()`は`Enumerable`契約の一部であり、`Collection`インスタンスを取得するため安全に使用できます。 @@ -467,7 +468,7 @@ このメソッドは、[`contains`](#method-contains)メソッドと使用方法は同じです。しかし、「厳密」な値の比較を行います。 -> [!NOTE] +> [!NOTE] > [Eloquentコレクション](/docs/{{version}}/eloquent-collections#method-contains)の使用時は、このメソッドの振る舞いが変わります。 @@ -578,7 +579,7 @@ // [1, 3, 5] -> [!NOTE] +> [!NOTE] > [Eloquentコレクション](/docs/{{version}}/eloquent-collections#method-contains)の使用時は、このメソッドの振る舞いは変わります。 @@ -798,7 +799,7 @@ return $collection->ensure('int'); -> [!WARNING] +> [!WARNING] > `ensure`メソッドは、後から異なる型の要素がコレクションへ追加されないことを保証しません。 @@ -837,7 +838,7 @@ `except`の正反対の機能は、[only](#method-only)メソッドです。 -> [!NOTE] +> [!NOTE] > [Eloquentコレクション](/docs/{{version}}/eloquent-collections#method-contains)の使用時は、このメソッドの振る舞いは変わります。 @@ -1020,7 +1021,7 @@ // ['framework' => 'laravel'] -> [!WARNING] +> [!WARNING] > 他のコレクションメソッドとは異なり、`forget`は更新された新しいコレクションを返しません。呼び出しもとのコレクションを更新します。 @@ -1223,7 +1224,7 @@ // [0 => 'Desk', 2 => 'Chair'] -> [!NOTE] +> [!NOTE] > [Eloquentコレクション](/docs/{{version}}/eloquent-collections#method-contains)の使用時は、このメソッドの振る舞いは変わります。 @@ -1412,7 +1413,7 @@ staticの`make`メソッドは、新しいコレクションインスタンス // [2, 4, 6, 8, 10] -> [!WARNING] +> [!WARNING] > 他のコレクションと同様に`map`は新しいコレクションインスタンスを返します。呼び出し元のコレクションは変更しません。もしオリジナルコレクションを変更したい場合は[`transform`](#method-transform)メソッドを使います。 @@ -1669,7 +1670,7 @@ staticの`make`メソッドは、新しいコレクションインスタンス `only`の正反対の機能は、 [except](#method-except)メソッドです。 -> [!NOTE] +> [!NOTE] > [Eloquentコレクション](/docs/{{version}}/eloquent-collections#method-contains)の使用時は、このメソッドの振る舞いは変わります。 @@ -2142,6 +2143,27 @@ $percentage = $collection->percentage(fn ($value) => $value === 1, precision: 3) // 2 + +#### `select()` {.collection-method} + +`select`メソッドは、SQLの`SELECT`文と似ており、コレクションから指定キーを取得します。 + +```php +$users = collect([ + ['name' => 'Taylor Otwell', 'role' => 'Developer', 'status' => 'active'], + ['name' => 'Victoria Faith', 'role' => 'Researcher', 'status' => 'active'], +]); + +$users->select(['name', 'role']); + +/* + [ + ['name' => 'Taylor Otwell', 'role' => 'Developer'], + ['name' => 'Victoria Faith', 'role' => 'Researcher'], + ], +*/ +``` + #### `shift()` {.collection-method} @@ -2220,7 +2242,7 @@ $percentage = $collection->percentage(fn ($value) => $value === 1, precision: 3) // [3, 4] -> [!WARNING] +> [!WARNING] > 指定した値が見つからないか、コールバックが`true`を返さなかった場合、`skipUntil`メソッドは空のコレクションを返します。 @@ -2238,7 +2260,7 @@ $percentage = $collection->percentage(fn ($value) => $value === 1, precision: 3) // [4] -> [!WARNING] +> [!WARNING] > コールバックが`false`を返さなかった場合、`skipWhile`メソッドは空のコレクションを返します。 @@ -2347,7 +2369,7 @@ sliceメソッドはデフォルトでキー値を保持したまま返します より高度なソートを行いたい場合は`sort`にコールバックを渡し、自分のアルゴリズムを実行できます。コレクションの`sort`メソッドが使用している[`uasort`](http://php.net/manual/en/function.uasort.php#refsect1-function.usort-parameters)のPHPドキュメントを参照してください。 -> [!NOTE] +> [!NOTE] > ネストした配列やオブジェクトのコレクションのソートは、[`sortBy`](#method-sortby)と[`sortByDesc`](#method-sortbydesc)メソッドを参照してください。 @@ -2691,7 +2713,7 @@ sliceメソッドはデフォルトでキー値を保持したまま返します // [1, 2] -> [!WARNING] +> [!WARNING] > 指定値が見つからない、もしくはコールバックが`true`を返さない場合、`takeUntil`メソッドはコレクションの全アイテムを返します。 @@ -2709,7 +2731,7 @@ sliceメソッドはデフォルトでキー値を保持したまま返します // [1, 2] -> [!WARNING] +> [!WARNING] > コールバックが`false`を返さない場合、`takeWhile`メソッドはコレクション中の全アイテムを返します。 @@ -2754,7 +2776,7 @@ sliceメソッドはデフォルトでキー値を保持したまま返します ] */ -> [!WARNING] +> [!WARNING] > `toArray`は、ネストした`Arrayable`インスタンスのオブジェクトすべてを配列へ変換します。コレクションの裏の素の配列をそのまま取得したい場合は、代わりに[`all`](#method-all)メソッドを使用してください。 @@ -2783,7 +2805,7 @@ sliceメソッドはデフォルトでキー値を保持したまま返します // [2, 4, 6, 8, 10] -> [!WARNING] +> [!WARNING] > 他のコレクションメソッドとは異なり、`transform`はコレクション自身を更新します。代わりに新しいコレクションを生成したい場合は、 [`map`](#method-map)メソッドを使用してください。 @@ -2887,7 +2909,7 @@ sliceメソッドはデフォルトでキー値を保持したまま返します `unique`メソッドは、アイテムの判定に「緩い」比較を使用します。つまり、同じ値の文字列と整数値は等しいと判定します。「厳密」な比較でフィルタリングしたい場合は、[`uniqueStrict`](#method-uniquestrict)メソッドを使用してください。 -> [!NOTE] +> [!NOTE] > [Eloquentコレクション](/docs/{{version}}/eloquent-collections#method-contains)の使用時は、このメソッドの振る舞いは変わります。 @@ -3396,7 +3418,7 @@ staticの`wrap`メソッドは適用可能であれば、指定値をコレク ### イントロダクション -> [!WARNING] +> [!WARNING] > Laravelのレイジーコレクションを学ぶ前に、[PHPジェネレータ](https://www.php.net/manual/ja/language.generators.overview.php)に慣れるために時間を取ってください。 すでに強力な`Collection`クラスを補足するために、`LazyCollection`クラスはPHPの[PHPジェネレータ](https://www.php.net/manual/ja/language.generators.overview.php)を活用しています。巨大なデータセットをメモリ使用を抑えて利用する目的のためです。 @@ -3587,7 +3609,7 @@ staticの`wrap`メソッドは適用可能であれば、指定値をコレク -> [!WARNING] +> [!WARNING] > `shift`、`pop`、`prepend`などのように、コレクションを変異させるメソッドは、`LazyCollection`クラスでは使用**できません**。 diff --git a/translation-ja/eloquent.md b/translation-ja/eloquent.md index 465699e..d3a853f 100644 --- a/translation-ja/eloquent.md +++ b/translation-ja/eloquent.md @@ -35,7 +35,7 @@ - [モデルの比較](#comparing-models) - [イベント](#events) - [クロージャの使用](#events-using-closures) - - [オブザーバー](#observers) + - [オブザーバ](#observers) - [イベントのミュート](#muting-events) @@ -1210,7 +1210,22 @@ php artisan make:scope AncientScope #### グローバルスコープの適用 -モデルにグローバルスコープを割り当てるには、モデルの`booted`メソッドをオーバーライドし、モデルの`addGlobalScope`メソッドを呼び出す必要があります。`addGlobalScope`メソッドは、スコープのインスタンスだけを引数に取ります。 +モデルにグローバルスコープを割り当てるには、モデルへ`ScopedBy`アトリビュートを指定します。 + + -#### オブザーバーの定義 +#### オブザーバの定義 -特定のモデルで多くのイベントをリッスンしている場合は、オブザーバーを使用してすべてのリスナを1つのクラスにグループ化できます。オブザーバークラスは、リッスンするEloquentイベントを反映するメソッド名を持っています。これらの各メソッドは、唯一影響を受けるモデルを引数に取ります。`make:observer` Artisanコマンドは、新しいオブザーバークラスを作成するもっとも簡単な方法です。 +特定のモデルで多くのイベントをリッスンしている場合は、オブザーバを使用してすべてのリスナを1つのクラスにグループ化できます。オブザーバクラスは、リッスンするEloquentイベントを反映するメソッド名を持っています。これらの各メソッドは、唯一影響を受けるモデルを引数に取ります。`make:observer` Artisanコマンドは、新しいオブザーバクラスを作成するもっとも簡単な方法です。 ```shell php artisan make:observer UserObserver --model=User ``` -このコマンドは、新しいオブザーバーを`app/Observers`ディレクトリに配置します。このディレクトリが存在しない場合は、Artisanが作成します。新しいオブザーバーは以下のようになります。 +このコマンドは、新しいオブザーバを`app/Observers`ディレクトリに配置します。このディレクトリが存在しない場合は、Artisanが作成します。新しいオブザーバは以下のようになります。 [UserObserver::class], - ]; + public function boot(): void + { + User::observe(UserObserver::class); + } > [!NOTE] -> オブザーバーがリッスンできる他のイベントには、`saving`や`retrieved`などがあります。こうしたイベントについては、[イベント](#events)のドキュメントで説明しています。 +> オブザーバがリッスンできる他のイベントには、`saving`や`retrieved`などがあります。こうしたイベントについては、[イベント](#events)のドキュメントで説明しています。 #### オブザーバとデータベーストランザクション diff --git a/translation-ja/helpers.md b/translation-ja/helpers.md index 679b410..3b0c635 100644 --- a/translation-ja/helpers.md +++ b/translation-ja/helpers.md @@ -69,6 +69,7 @@ Laravelはさまざまな、グローバル「ヘルパ」PHP関数を用意し [Arr::sortDesc](#method-array-sort-desc) [Arr::sortRecursive](#method-array-sort-recursive) [Arr::sortRecursiveDesc](#method-array-sort-recursive-desc) +[Arr::take](#method-array-take) [Arr::toCssClasses](#method-array-to-css-classes) [Arr::toCssStyles](#method-array-to-css-styles) [Arr::undot](#method-array-undot) @@ -842,10 +843,31 @@ Laravelはさまざまな、グローバル「ヘルパ」PHP関数を用意し $sorted = Arr::sortRecursiveDesc($array); + +#### `Arr::take()` {.collection-method} + +`Arr::take`メソッドは、指定数のアイテムを持つ新しい配列を返します。 + + use Illuminate\Support\Arr; + + $array = [0, 1, 2, 3, 4, 5]; + + $chunk = Arr::take($array, 3); + + // [0, 1, 2] + +負の整数を渡し、配列の末尾から指定数の項目を取り出すこともできます。 + + $array = [0, 1, 2, 3, 4, 5]; + + $chunk = Arr::take($array, -2); + + // [4, 5] + #### `Arr::toCssClasses()` {.collection-method} -`Arr::toCssClasses`は、CSSクラス文字列を条件付きでコンパイルします。この方法はクラスの配列を引数に取り、配列キーに追加したいクラス、値は論理式です。配列要素に数字キーがある場合は、レンダするクラスリストへ常に含めます。 +`Arr::toCssClasses`メソッドは、CSSクラス文字列を条件付きでコンパイルします。この方法はクラスの配列を引数に取り、配列キーに追加したいクラス、値は論理式です。配列要素に数字キーがある場合は、レンダするクラスリストへ常に含めます。 use Illuminate\Support\Arr; @@ -866,6 +888,8 @@ Laravelはさまざまな、グローバル「ヘルパ」PHP関数を用意し `Arr::toCssStyles`は、CSSスタイルの文字列を条件付きでコンパイルします。このメソッドはクラスの配列を受け付けます。配列のキーには追加するクラスを含め、値には論理値を指定します。配列のキーが数値の場合は、レンダーするクラスのリストへ常に含めます。 ```php +use Illuminate\Support\Arr; + $hasColor = true; $array = ['background-color: blue', 'color: blue' => $hasColor]; diff --git a/translation-ja/http-client.md b/translation-ja/http-client.md index 0675ed8..20c4ec9 100644 --- a/translation-ja/http-client.md +++ b/translation-ja/http-client.md @@ -231,6 +231,18 @@ $response = Http::withHeaders([ $response = Http::retry(3, 100)->post(/* ... */); +試行間にスリープするミリ秒数を手作業で計算したい場合は、`retry`メソッドの第2引数へクロージャを渡してください。 + + use Exception; + + $response = Http::retry(3, function (int $attempt, Exception $exception) { + return $attempt * 100; + })->post(/* ... */); + +使いやすいように、`retry`メソッドの第1引数へ配列を指定することもできます。この配列は、次の試行までの間に何ミリ秒スリープするか決めるために使われます。 + + $response = Http::retry([100, 200])->post(/* ... */); + 必要であれば、`retry`メソッドに第3引数を渡せます。第3引数には、実際に再試行を行うかどうかを決定するCallableを指定します。例えば、最初のリクエストで`ConnectionException`が発生した場合にのみ、リクエストを再試行したいとしましょう。 use Exception; diff --git a/translation-ja/packages.md b/translation-ja/packages.md index d38325a..0aa5bc5 100644 --- a/translation-ja/packages.md +++ b/translation-ja/packages.md @@ -174,6 +174,18 @@ Laravelアプリケーションの`config/app.php`設定ファイルには、Lar echo trans('courier::messages.welcome'); +`loadJsonTranslationsFrom`メソッドを使うと、パッケージへJSON翻訳ファイルを登録できます。このメソッドで、パッケージのJSON翻訳ファイルがあるディレクトリパスを指定します。 + +```php +/** + * パッケージの全サービスの起動処理 + */ +public function boot(): void +{ + $this->loadJsonTranslationsFrom(__DIR__.'/../lang'); +} +``` + #### 言語ファイルのリソース公開 diff --git a/translation-ja/sail.md b/translation-ja/sail.md index 5d017fa..623cd7b 100644 --- a/translation-ja/sail.md +++ b/translation-ja/sail.md @@ -96,7 +96,7 @@ php artisan sail:install --devcontainer しかし、Sailコマンドを実行するため、`vendor/bin/sail`、と繰り返しタイプする代わりに、Sailのコマンドをより簡単に実行できるようなシェルエイリアスを設定したいと思うでしょう。 ```shell -alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail' +alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)' ``` これを常に利用できるようにするには、ホームディレクトリにあるシェルの設定ファイル、例えば `~/.zshrc` や `~/.bashrc` へ追加後、シェルを再起動するとよいでしょう。 diff --git a/translation-ja/strings.md b/translation-ja/strings.md index 265d35e..6b6892d 100644 --- a/translation-ja/strings.md +++ b/translation-ja/strings.md @@ -95,6 +95,7 @@ Laravelには、文字列値を操作する様々な関数があります。こ [Str::swap](#method-str-swap) [Str::take](#method-take) [Str::title](#method-title-case) +[Str::toBase64](#method-str-to-base64) [Str::toHtmlString](#method-str-to-html-string) [Str::ucfirst](#method-str-ucfirst) [Str::ucsplit](#method-str-ucsplit) @@ -194,6 +195,7 @@ Laravelには、文字列値を操作する様々な関数があります。こ [tap](#method-fluent-str-tap) [test](#method-fluent-str-test) [title](#method-fluent-str-title) +[toBase64](#method-fluent-str-to-base64) [trim](#method-fluent-str-trim) [ucfirst](#method-fluent-str-ucfirst) [ucsplit](#method-fluent-str-ucsplit) @@ -1145,6 +1147,17 @@ $repeat = Str::repeat($string, 5); // A Nice Title Uses The Correct Case + +#### `Str::toBase64()` {.collection-method} + +`Str::toBase64`メソッドは、指定文字列をBase64へ変換します。 + + use Illuminate\Support\Str; + + $base64 = Str::toBase64('Laravel'); + + // TGFyYXZlbA== + #### `Str::toHtmlString()` {.collection-method} @@ -2417,6 +2430,17 @@ The `snake` method converts the given string to `snake`メソッドは、文字 // A Nice Title Uses The Correct Case + +#### `toBase64()` {.collection-method} + +`toBase64`メソッドは、指定文字列をBase64に変換します。 + + use Illuminate\Support\Str; + + $base64 = Str::of('Laravel')->toBase64(); + + // TGFyYXZlbA== + #### `trim` {.collection-method}