გზამკვლევი Controller Repository Service Model შიგნით Laravel

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 განაცხადის სხვადასხვა ნაწილი. გარდა ამისა, ბიზნეს ლოგიკის, შენახვის ლოგიკის და კლასებს შორის კომუნიკაციის გამიჯვნა თქვენს კოდების ბაზას მოქნილს, შენარჩუნებას და შესამოწმებლად ხდის.