다음은 Laravel 데이터:
를 사용하여 데이터 전송 개체(DTO)를 생성하는 방법에 대한 단계별 예입니다.시작하려면 Composer를 사용하여 spatie/laravel-data 패키지를 설치하세요. 이 패키지는 DTO를 생성하고 데이터를 효율적으로 관리하는 데 도움이 됩니다.
composer require spatie/laravel-data
패키지를 설치한 후 데이터 전송을 처리하기 위한 DTO 클래스를 만들 수 있습니다. User 엔터티가 있고 사용자 데이터 전송을 위한 DTO를 생성한다고 가정합니다.
다음 Artisan 명령을 실행하여 새로운 DTO 클래스를 생성하세요:
php artisan make:data UserData
이렇게 하면 App/Data 디렉터리 내에 UserData 클래스가 생성됩니다.
이제 UserData 클래스를 편집하여 DTO에 대해 기대하는 속성과 데이터 유형을 정의해 보겠습니다.
namespace App\Data; use Spatie\LaravelData\Data; class UserData extends Data { public function __construct( public string $name, public string $email, public string $address, public ?string $phone = null // Optional phone field ) {} }
이제 UserData DTO가 생성되었으므로 컨트롤러 내에서 이를 사용하여 들어오는 데이터를 처리하고 변환하고 애플리케이션 레이어 간에 전달할 수 있습니다.
namespace App\Http\Controllers; use App\Data\UserData; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { // Validate the incoming request data $validatedData = $request->validate([ 'name' => 'required|string', 'email' => 'required|email', 'address' => 'required|string', 'phone' => 'nullable|string', ]); // Create a UserData DTO $userData = UserData::from($validatedData); // You can now access $userData->name, $userData->email, etc. User::create([ 'name' => $userData->name, 'email' => $userData->email, 'address' => $userData->address, 'phone' => $userData->phone, ]); return response()->json(['message' => 'User created successfully']); } }
응답을 반환할 때 데이터 변환에도 DTO를 사용할 수 있습니다. DTO를 통해 사용자 데이터를 반환하도록 UserController의 show 메서드를 수정해 보겠습니다.
public function show(User $user) { // Convert the User model to UserData DTO $userData = new UserData( name: $user->name, email: $user->email, address: $user->address, phone: $user->phone ); return response()->json($userData); }
사용자 목록 가져오기와 같이 데이터 컬렉션을 사용하는 경우 DTO 패키지는 컬렉션을 처리하는 간단한 방법도 제공합니다.
public function index() { $users = User::all(); // Convert the collection of User models to a collection of UserData DTOs $userCollection = UserData::collection($users); return response()->json($userCollection); }
spatie/laravel-data 패키지를 사용하면 속성 이름을 바꾸거나 계산된 필드를 추가하는 등 변환을 사용자 정의할 수 있습니다.
class UserData extends Data { public function __construct( public string $name, public string $email, public string $address, public ?string $phone = null ) {} // Add a custom method to compute a full contact string public function fullContact(): string { return "{$this->name} ({$this->email})"; } }
이제 이 DTO로 작업할 때 fullContact()를 사용하여 사용자 정의 형식의 문자열을 얻을 수 있습니다.
Laravel Data의 규칙 기능을 사용하여 DTO에 직접 유효성 검사 규칙을 추가할 수 있습니다.
namespace App\Data; use Spatie\LaravelData\Attributes\Validation\Email; use Spatie\LaravelData\Attributes\Validation\Required; use Spatie\LaravelData\Data; class UserData extends Data { public function __construct( #[Required] public string $name, #[Email] public string $email, public string $address, public ?string $phone = null ) {} }
이 실습 튜토리얼에서는 Laravel Data를 사용하여 DTO(데이터 전송 객체)를 생성하고 사용하는 방법을 살펴보았습니다. DTO 패턴을 사용하면 데이터를 깔끔하게 관리하고 변환하여 애플리케이션 계층 간의 문제를 분리하는 동시에 코드를 더 쉽게 유지 관리할 수 있습니다. spatie/laravel-data 패키지는 DTO 관리를 단순화하여 개발자와 대규모 애플리케이션 모두에 사용하기 쉬운 기능을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3