Laravel でアクセサーとミューテーターを定義する新しい方法!
ご存じのとおり、以下のように accessor and mutator in laravel を定義する方法があります.
たとえば、ユーザー モデル (App\Models\User) にいる場合:
「名」ゲッターの場合
「ファーストネーム」の場合
このシナリオを達成するための新しい方法がありますが、Taylor Otwell が実際に言及したと言わざるを得ません.これは非常に便利で素晴らしいものです.
以下のように、セッターとゲッターの両方を 1 つのメソッドで定義できます.
これは、アクセサーとミューテーターの両方を 1 つの属性関数で定義する別の方法となります.これらのいずれも書きたくない場合は、単純に get/set に null 値を渡すことができます.
ユーザーモデルがそれを取り締まるために、さらに2つの例を見てみましょう.
それだけです...何か質問はありますか?
たとえば、ユーザー モデル (App\Models\User) にいる場合:
「名」ゲッターの場合
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
「ファーストネーム」の場合
public function setFirstNameAttribute($value)
{
$this->attribute['first_name'] = strtolower($value);
}
このシナリオを達成するための新しい方法がありますが、Taylor Otwell が実際に言及したと言わざるを得ません.これは非常に便利で素晴らしいものです.
以下のように、セッターとゲッターの両方を 1 つのメソッドで定義できます.
public function firtName() :Attribute
{
return new Attribute (
get: fn($value, $attributes) => $attribute['first_name'],
set: fn($value) => 'first_name' => $value
);
}
これは、アクセサーとミューテーターの両方を 1 つの属性関数で定義する別の方法となります.これらのいずれも書きたくない場合は、単純に get/set に null 値を渡すことができます.
ユーザーモデルがそれを取り締まるために、さらに2つの例を見てみましょう.
public function fullName() :Attribute
{
return new Attribute(
get: fn($value, $attributes) => $attributes['first_name'] . ' ' . $attributes['last_name'],
set: function($value) {
[$firstName, $lastName] = explode(" ", $value);
return [
'first_name' => $firstName,
'last_name' => $lastName
];
}
);
}
public function password() :Attribute
{
return new Attribute(
get: null,
set: fn($value) => bcrypt($value)
);
}
それだけです...何か質問はありますか?
Reference
この問題について(Laravel でアクセサーとミューテーターを定義する新しい方法!), 我々は、より多くの情報をここで見つけました https://dev.to/rezakhademi/new-way-to-define-accessors-and-mutators-in-laravel-1kh1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol