Gwida biex Controller Repository Service Model in Laravel

Il-gwida ta ' implimentazzjoni bażika għall Controller --- in tgħinek torganizza l-kodiċi tas-sors tiegħek b'mod li huwa faċli biex timmaniġġja u żżomm. Hawn eżempju konkret ta’ kif tista’ timplimenta din l-istruttura: Repository Service model Laravel

Model

Dan huwa fejn tiddefinixxi l-attributi u l-metodi għall-interazzjoni mad-database. Laravel jipprovdi l-mekkaniżmu Eloquent ORM biex jaħdem ma 'mudelli. Per eżempju, ejja noħolqu model għat- Posts tabella:

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

Repository

L repository -atti bħala intermedjarju bejn il- Controller u l- Model. Fiha metodi biex iwettqu operazzjonijiet ta' database permezz tal- model. Dan jgħin biex tissepara l-loġika tad-database mill- controller u jagħmilha faċli biex tinbidel jew tittestja l-loġika tad-database.

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

Il service fih loġika tan-negozju u jikkomunika mal- Repository. Is Controller -sejħiet metodi mill- Service biex jimmaniġġaw it-talbiet u jirritorna d-dejta korrispondenti. Dan jgħin biex tissepara l-loġika tan-negozju mill- controller u jagħmel l-ittestjar u l-manutenzjoni aktar faċli.

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

Huwa controller fejn tieħu ħsieb it-talbiet tal-utent, issejjaħ metodi mill- biex Service tirkupra jew tibgħat id-dejta, u tirritorna r-riżultati lill-utent.

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

Billi tapplika din l-istruttura, tista' timmaniġġja b'mod effiċjenti partijiet differenti tal Laravel -applikazzjoni tiegħek. Barra minn hekk, is-separazzjoni tal-loġika tan-negozju, il-loġika tal-ħażna, u l-komunikazzjoni bejn il-klassijiet tagħmel il-kodiċi tal-bażi tiegħek flessibbli, manutenzjoni, u testable.