Panduan untuk Controller Repository Service Model masuk Laravel

Panduan implementasi dasar untuk Controller- Repository- Service model in Laravel membantu Anda mengatur kode sumber dengan cara yang mudah dikelola dan dipelihara. Berikut adalah contoh nyata bagaimana Anda dapat menerapkan struktur ini:

Model

Di sinilah Anda menentukan atribut dan metode untuk berinteraksi dengan database. Laravel menyediakan mekanisme Eloquent ORM untuk bekerja dengan model. Sebagai contoh, mari buat model untuk Posts tabel:

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

Repository

Bertindak repository sebagai perantara antara Controller dan Model. Ini berisi metode untuk melakukan operasi database melalui model. Hal ini membantu memisahkan logika database dari dan controller memudahkan untuk mengubah atau menguji logika database.

// 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

Berisi service logika bisnis dan berkomunikasi dengan Repository. Ini Controller akan memanggil metode dari untuk Service menangani permintaan dan mengembalikan data yang sesuai. Hal ini membantu memisahkan logika bisnis dari logika bisnis controller dan mempermudah pengujian dan pemeliharaan.

// 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

Ini controller adalah tempat Anda menangani permintaan pengguna, memanggil metode untuk Service mengambil atau mengirim data, dan mengembalikan hasilnya kepada pengguna.

// 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  
}  

Dengan menerapkan struktur ini, Anda dapat mengelola berbagai bagian aplikasi Anda secara efisien Laravel. Selain itu, memisahkan logika bisnis, logika penyimpanan, dan komunikasi antar kelas membuat basis kode Anda fleksibel, dapat dikelola, dan dapat diuji.