Udhëzuesi bazë i zbatimit për Controller- Repository- Service model in Laravel ju ndihmon të organizoni kodin tuaj burimor në një mënyrë që është e lehtë për t'u menaxhuar dhe mirëmbajtur. Këtu është një shembull konkret se si mund ta zbatoni këtë strukturë:
Model
Kjo është ajo ku ju përcaktoni atributet dhe metodat për ndërveprim me bazën e të dhënave. Laravel ofron mekanizmin Eloquent ORM për të punuar me modele. Për shembull, le të krijojmë një model për Posts
tabelën:
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
Vepron repository si ndërmjetës midis Controller dhe Model. Ai përmban metoda për të kryer operacionet e bazës së të dhënave përmes model. Kjo ndihmon për të ndarë logjikën e bazës së të dhënave nga controller dhe e bën të lehtë ndryshimin ose testimin e logjikës së bazës së të dhënave.
// 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
Përmban service logjikën e biznesit dhe komunikon me Repository. Do Controller të thërrasë metodat nga për Service të trajtuar kërkesat dhe do të kthejë të dhënat përkatëse. Kjo ndihmon për të ndarë logjikën e biznesit nga controller dhe e bën më të lehtë testimin dhe mirëmbajtjen.
// 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
Është controller vendi ku trajtoni kërkesat e përdoruesve, thirrjet nga metodat për Service të tërhequr ose dërguar të dhëna dhe për t'i kthyer rezultatet përdoruesit.
// 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
}
Duke aplikuar këtë strukturë, ju mund të menaxhoni në mënyrë efikase pjesë të ndryshme të Laravel aplikacionit tuaj. Për më tepër, ndarja e logjikës së biznesit, logjikës së ruajtjes dhe komunikimit midis klasave e bën bazën tuaj të kodit fleksibël, të mirëmbajtur dhe të testueshme.