Controller- Repository- Service model in- ის განხორციელების ძირითადი სახელმძღვანელო Laravel გეხმარებათ თქვენი წყაროს კოდის ორგანიზებაში მარტივი სამართავი და შენარჩუნება. აქ არის კონკრეტული მაგალითი იმისა, თუ როგორ შეგიძლიათ განახორციელოთ ეს სტრუქტურა:
Model
აქ თქვენ განსაზღვრავთ მონაცემთა ბაზასთან ურთიერთქმედების ატრიბუტებსა და მეთოდებს. Laravel უზრუნველყოფს Eloquent ORM მექანიზმს მოდელებთან მუშაობისთვის. მაგალითად, შევქმნათ model ცხრილისთვის Posts
:
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
მოქმედებს repository როგორც შუამავალი შორის 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
შეიცავს service ბიზნეს ლოგიკას და ურთიერთობს Repository. გამოიძახებს Controller მეთოდებს Service მოთხოვნის დამუშავებისა და შესაბამისი მონაცემების დასაბრუნებლად. ეს ხელს უწყობს ბიზნესის ლოგიკის განცალკევებას controller და ამარტივებს ტესტირებას და შენარჩუნებას.
// 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 არის სადაც თქვენ ამუშავებთ მომხმარებლის მოთხოვნებს, გამოიძახებთ მეთოდებს Service მონაცემების მისაღებად ან გაგზავნისთვის და უბრუნებთ შედეგებს მომხმარებელს.
// 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
}
ამ სტრუქტურის გამოყენებით, თქვენ შეგიძლიათ ეფექტურად მართოთ თქვენი Laravel განაცხადის სხვადასხვა ნაწილი. გარდა ამისა, ბიზნეს ლოგიკის, შენახვის ლოგიკის და კლასებს შორის კომუნიკაციის გამიჯვნა თქვენს კოდების ბაზას მოქნილს, შენარჩუნებას და შესამოწმებლად ხდის.