Vodnik Controller Repository Service Model v Laravel

Osnovni vodnik za implementacijo za Controller- Repository- vam Service model pomaga Laravel organizirati izvorno kodo na način, ki ga je enostavno upravljati in vzdrževati. Tukaj je konkreten primer, kako lahko implementirate to strukturo:

Model

Tukaj definirate atribute in metode za interakcijo z bazo podatkov. Laravel zagotavlja mehanizem Eloquent ORM za delo z modeli. Na primer, ustvarimo model za Posts tabelo:

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

Repository

Deluje repository kot posrednik med Controller in Model. Vsebuje metode za izvajanje operacij baze podatkov prek model. To pomaga ločiti logiko baze podatkov od in controller olajša spreminjanje ali preizkušanje logike baze podatkov.

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

Vsebuje service poslovno logiko in komunicira z Repository. Klicala Controller bo metode iz za Service obdelavo zahtev in vrnitev ustreznih podatkov. To pomaga ločiti poslovno logiko od controller in olajša testiranje in vzdrževanje.

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

Tukaj controller obravnavate zahteve uporabnikov, kličete metode iz za Service pridobitev ali pošiljanje podatkov in vrnete rezultate uporabniku.

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

Z uporabo te strukture lahko učinkovito upravljate različne dele svoje Laravel aplikacije. Poleg tega ločevanje poslovne logike, logike shranjevanja in komunikacije med razredi naredi vašo kodno zbirko prilagodljivo, vzdržljivo in preizkuljivo.