Treoir Controller Repository Service Model i Laravel

Cuidíonn an treoirleabhar forfheidhmithe bunúsach don Controller- Repository- leat leat do chód foinse a eagrú ar bhealach atá éasca le bainistiú agus le cothabháil Service model. Laravel Seo sampla nithiúil de conas is féidir leat an struchtúr seo a chur i bhfeidhm:

Model

Seo an áit a shainíonn tú na tréithe agus na modhanna chun idirghníomhú leis an mbunachar sonraí. Laravel soláthraíonn sé meicníocht ORM Eloquent chun oibriú le samhlacha. Mar shampla, cruthaimis model le haghaidh an Posts tábla:

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

Repository

Feidhmíonn siad repository mar idirghabhálaí idir an Controller agus an Model. Tá modhanna ann chun oibríochtaí bunachar sonraí a dhéanamh tríd an model. Cuidíonn sé seo le loighic an bhunachair shonraí a scaradh ó na loighic controller agus déanann sé éasca loighic an bhunachair sonraí a athrú nó a thástáil.

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

Tá an service loighic gnó agus cumarsáid leis an Repository. Déanfaidh an Controller glao modhanna ón Service chun iarratais a láimhseáil agus sonraí comhfhreagracha a sheoladh ar ais. Cuidíonn sé seo le loighic an ghnó a scaradh ón gcóras controller agus déanann sé tástáil agus cothabháil níos éasca.

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

Is controller é seo an áit a láimhseálann tú iarratais úsáideoirí, modhanna glaonna a fháil ó na Service sonraí a aisghabháil nó a sheoladh, agus na torthaí a sheoladh ar ais chuig an úsáideoir.

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

Tríd an struchtúr seo a chur i bhfeidhm, is féidir leat codanna éagsúla de d’ Laravel iarratas a bhainistiú go héifeachtach. Ina theannta sin, má scartar an loighic ghnó, an loighic stórála, agus an chumarsáid idir ranganna, beidh do bhunachar cód solúbtha, inchothaithe agus intástáilte.