Panduan pelaksanaan asas untuk Controller- Repository- Service model in Laravel membantu anda menyusun kod sumber anda dengan cara yang mudah diurus dan diselenggara. Berikut ialah contoh konkrit bagaimana anda boleh melaksanakan struktur ini:
Model
Di sinilah anda menentukan atribut dan kaedah untuk berinteraksi dengan pangkalan data. Laravel menyediakan mekanisme ORM Eloquent untuk bekerja dengan model. Sebagai contoh, mari kita buat model untuk Posts
jadual:
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
The repository bertindak sebagai perantara antara Controller dan Model. Ia mengandungi kaedah untuk melaksanakan operasi pangkalan data melalui model. Ini membantu untuk memisahkan logik pangkalan data daripada controller dan menjadikannya mudah untuk menukar atau menguji logik pangkalan data.
// 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
Ia service mengandungi logik perniagaan dan berkomunikasi dengan Repository. Kaedah akan Controller memanggil daripada untuk Service mengendalikan permintaan dan mengembalikan data yang sepadan. Ini membantu untuk memisahkan logik perniagaan daripada dan controller menjadikan ujian dan penyelenggaraan lebih mudah.
// 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
Di controller sinilah anda mengendalikan permintaan pengguna, memanggil kaedah daripada Service untuk mendapatkan atau menghantar data dan mengembalikan hasil 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 menggunakan struktur ini, anda boleh mengurus bahagian Laravel aplikasi anda dengan cekap. Selain itu, mengasingkan logik perniagaan, logik storan dan komunikasi antara kelas menjadikan pangkalan kod anda fleksibel, boleh diselenggara dan boleh diuji.