Controller Repository Service Model 에 대한 안내 Laravel

Controller- Repository- Service model in 에 대한 기본 구현 가이드는 Laravel 관리 및 유지 관리가 쉬운 방식으로 소스 코드를 구성하는 데 도움이 됩니다. 다음은 이 구조를 구현하는 방법에 대한 구체적인 예입니다.

Model

여기에서 데이터베이스와 상호 작용하기 위한 속성과 메서드를 정의합니다. Laravel 모델 작업을 위한 Eloquent ORM 메커니즘을 제공합니다. model 예를 들어 테이블 에 대한 을 생성해 보겠습니다 Posts.

// app/Models/Post.php  
namespace App\Models;  
  
use Illuminate\Database\Eloquent\Model;  
  
class Post extends Model  
{  
    protected $fillable = ['title', 'content'];  
}  

Repository

은(는) 과( 과) repository 사이의 중개자 역할을 합니다. .NET Framework를 통해 데이터베이스 작업을 수행하는 방법이 포함되어 있습니다. 이는 데이터베이스 논리를 에서 분리하는 데 도움이 되며 데이터베이스 논리를 쉽게 변경하거나 테스트할 수 있게 해줍니다. Controller Model model controller

// app/Repositories/PostRepository.php  
namespace App\Repositories;  
  
use App\Models\Post;  
  
class PostRepository  
{  
    public function create($data)  
    {  
        return Post::create($data);  
    }  
      
    public function getAll()  
    {  
        return Post::all();  
    }  
      
    // Other similar methods  
}  

Service

에는 service 비즈니스 논리가 포함되어 있으며 와 통신합니다 Repository. 에서는 요청을 처리하고 해당 데이터를 반환하기 위해 Controller 의 메서드를 호출합니다. Service 이는 비즈니스 로직을 에서 분리하는 데 도움이 되며 controller 테스트 및 유지 관리가 더 쉬워집니다.

// app/Services/PostService.php  
namespace App\Services;  
  
use App\Repositories\PostRepository;  
  
class PostService  
{  
    protected $postRepository;  
      
    public function __construct(PostRepository $postRepository)  
    {  
        $this->postRepository = $postRepository;  
    }  
      
    public function createPost($data)  
    {  
        return $this->postRepository->create($data);  
    }  
      
    public function getAllPosts()  
    {  
        return $this->postRepository->getAll();  
    }  
      
    // Other similar methods  
}  

Controller

여기서는 controller 사용자 요청을 처리하고, 에서 메서드를 호출하여 Service 데이터를 검색하거나 보내고, 결과를 사용자에게 반환합니다.

// app/Http/Controllers/PostController.php  
namespace App\Http\Controllers;  
  
use Illuminate\Http\Request;  
use App\Services\PostService;  
  
class PostController extends Controller  
{  
    protected $postService;  
      
    public function __construct(PostService $postService)  
    {  
        $this->postService = $postService;  
    }  
      
    public function create(Request $request)  
    {  
        $data = $request->only(['title', 'content']);  
        $post = $this->postService->createPost($data);  
        // Handle the response  
    }  
      
    public function index()  
    {  
        $posts = $this->postService->getAllPosts();  
        // Handle the response  
    }  
      
    // Other similar methods  
}  

이 구조를 적용하면 Laravel 애플리케이션의 다양한 부분을 효율적으로 관리할 수 있습니다. 또한 비즈니스 로직, 스토리지 로직, 클래스 간 통신을 분리하면 코드베이스가 유연해지고 유지 관리 및 테스트가 가능해집니다.