今回の投稿は
Spatie Laravel-data です。
https://spatie.be/docs/laravel-data/v3/introduction
細かい説明よりも実装例を見てみましょう。
<?php
namespace App\Http\Requests\Customers;
use Spatie\LaravelData\Data;
class StoreCustomerRequest extentds Data
{
public function __construct(
public string $lastName,
public string $firstName,
public string $email,
) {}
}
マジックメソッドじゃないです!
<?php
namespace App\Http\Controllers\Customers;
use App\Http\Controllers\Customers;
use App\Http\Requests\Customers\CustomerStoreRequestData;
class StoreCustomerController extends Controller
{
public function __invoke(StoreCustomerRequest $storeCustomerRequest)
{
dump(
$storeCustomerRequest->lastName,
$storeCustomerRequest->firstName,
$storeCustomerRequest->email,
);
}
}
実際に書いてみると、利点に気が付きます。
IDEで $storeCustomerRequest-> までタイプすれば、候補としてメンバ変数が表示されます。
そう、typoを恐れながら書く必要がありません。 ->lastNeme とか ->input(‘lastNeme’)なんてつまらない typoをすることがずっと少なくなります。
インストール
難しいことは要りません。PHPer のみんなが大好きな composer コマンドで簡単にインストールできます。
$ composer require spatie/laravel-data
もちろんバリデーションもできます!
public static function rules(): array
{
return [
'lastName' => [
'required',
'string',
'max:30',
],
...
];
}
public static function messages(): array
{
return [
'lastName' => [
'required' => '必須入力です',
'string' => '正しく入力してください',
'max:30' => '30文字以下で入力してください',
],
...
];
}
ひとつ気をつけることとして Spatie Laravel-data を使う際の rules と messages メソッドは static で宣言する必要があります。
スネークケースなパラメーターをキャメルケースにマッピングしたいですか?
できます!そう、Spatie Laravel-data ならね!
この続きの記事は別記事にまとめます。待ちきれない方は Spatie Laravel-data 公式サイトを見てみましょう!
それでは初回の投稿記事はここまで。また次回お会いしましょう!