Controller- Repository- Service model in için temel uygulama kılavuzu, Laravel kaynak kodunuzu yönetimi ve bakımı kolay bir şekilde düzenlemenize yardımcı olur. İşte bu yapıyı nasıl uygulayabileceğinize dair somut bir örnek:
Model
Veritabanıyla etkileşime geçmek için nitelikleri ve yöntemleri tanımladığınız yer burasıdır. Laravel Eloquent ORM mekanizmasının modellerle çalışmasını sağlar. model Örneğin, tablo için bir oluşturalım Posts
:
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
ve repository arasında aracı görevi görür. .NET aracılığıyla veritabanı işlemlerini gerçekleştirmek için yöntemler içerir. Bu, veritabanı mantığını veritabanından ayırmaya yardımcı olur ve veritabanı mantığını değiştirmeyi veya test etmeyi kolaylaştırır. 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
İş mantığını içerir service ve Repository. Will, istekleri işlemek ve karşılık gelen verileri döndürmek Controller için yöntemleri çağırır Service. Bu, iş mantığını iş mantığını ayırmaya yardımcı olur controller ve test ve bakımı kolaylaştırır.
// 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 Kullanıcı isteklerini yerine getirdiğiniz, Service verileri almak veya göndermek için yöntemleri çağırdığınız ve sonuçları kullanıcıya döndürdüğünüz yerdir .
// 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
}
Bu yapıyı uygulayarak uygulamanızın farklı bölümlerini verimli bir şekilde yönetebilirsiniz Laravel. Ayrıca iş mantığını, depolama mantığını ve sınıflar arasındaki iletişimi ayırmak kod tabanınızı esnek, sürdürülebilir ve test edilebilir hale getirir.