// Controller becomes thin: public function store(CreatePostRequest $request, CreatePostAction $action) $post = $action->execute($request->getDto(), $request->user()); return new PostResource($post);
// Instead of this (typical Laravel): public function store(PostRequest $request) $post = Post::create($request->validated()); return redirect()->route('posts.show', $post); Melnick D. Conquering Laravel With PHP. Your Gu...
// Conquering Laravel approach: class CreatePostAction public function execute(CreatePostDTO $dto, User $author): Post // Business logic + domain events here $post = $author->posts()->create($dto->toArray()); event(new PostCreated($post)); return $post; CreatePostAction $action) $post = $action->