Controller Repository Service Model Įėjimo vadovas Laravel

Pagrindinis diegimo vadovas Controller- Repository- Service model padeda Laravel tvarkyti šaltinio kodą taip, kad jį būtų lengva valdyti ir prižiūrėti. Štai konkretus pavyzdys, kaip galite įgyvendinti šią struktūrą:

Model

Čia apibrėžiate sąveikos su duomenų baze atributus ir metodus. Laravel suteikia Iškalbingo ORM mechanizmą darbui su modeliais. Pavyzdžiui, sukurkime model lentelę Posts:

// app/Models/Post.php  
namespace App\Models;  
  
use Illuminate\Database\Eloquent\Model;  
  
class Post extends Model  
{  
    protected $fillable = ['title', 'content'];  
}  

Repository

Veikia repository kaip tarpininkas tarp Controller ir Model. Jame yra duomenų bazės operacijų atlikimo per model. Tai padeda atskirti duomenų bazės logiką nuo duomenų bazės controller ir palengvina duomenų bazės logikos keitimą arba testavimą.

// 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

Jame service yra verslo logika ir jis palaiko ryšį su Repository. Iškvies užklausų apdorojimo ir atitinkamų duomenų grąžinimo Controller metodus. Service Tai padeda atskirti verslo logiką nuo verslo controller ir palengvina testavimą bei priežiū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

Čia controller tvarkote vartotojų užklausas, iškviečiate metodus, kad Service gautumėte arba siųstumėte duomenis ir grąžintumėte rezultatus vartotojui.

// 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  
}  

Taikydami šią struktūrą galite efektyviai valdyti įvairias Laravel programos dalis. Be to, atskirus verslo logiką, saugojimo logiką ir ryšį tarp klasių, kodų bazė tampa lanksti, prižiūrima ir išbandoma.