Den grunnleggende implementeringsveiledningen for Controller- Repository- Service model i Laravel hjelper deg med å organisere kildekoden din på en måte som er enkel å administrere og vedlikeholde. Her er et konkret eksempel på hvordan du kan implementere denne strukturen:
Model
Det er her du definerer attributtene og metodene for å samhandle med databasen. Laravel gir Eloquent ORM-mekanismen for å jobbe med modeller. La oss for eksempel lage en model for Posts
tabellen:
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
Den repository fungerer som et mellomledd mellom Controller og Model. Den inneholder metoder for å utføre databaseoperasjoner gjennom model. Dette bidrar til å skille databaselogikken fra controller og gjør det enkelt å endre eller teste databaselogikken.
// 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
Den service inneholder forretningslogikk og kommuniserer med Repository. De Controller vil kalle metoder fra for å Service håndtere forespørsler og returnere tilsvarende data. Dette bidrar til å skille forretningslogikken fra controller og gjør testing og vedlikehold enklere.
// 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
Det controller er her du håndterer brukerforespørsler, anropsmetoder fra for å Service hente eller sende data og returnere resultater til brukeren.
// 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
}
Ved å bruke denne strukturen kan du effektivt administrere ulike deler av Laravel applikasjonen din. I tillegg, separering av forretningslogikk, lagringslogikk og kommunikasjon mellom klasser gjør kodebasen din fleksibel, vedlikeholdbar og testbar.