Der grundlegende Implementierungsleitfaden für Controller- Repository -in hilft Ihnen dabei, Ihren Quellcode so zu organisieren, dass er einfach zu verwalten und zu warten ist Service model. Laravel Hier ein konkretes Beispiel, wie Sie diese Struktur umsetzen können:
Model
Hier definieren Sie die Attribute und Methoden für die Interaktion mit der Datenbank. Laravel stellt den Eloquent ORM-Mechanismus für die Arbeit mit Modellen bereit. Erstellen wir zum Beispiel eine model für die Posts
Tabelle:
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
Der repository fungiert als Vermittler zwischen dem Controller und dem Model. Es enthält Methoden zum Ausführen von Datenbankoperationen über model. Dies trägt dazu bei, die Datenbanklogik von der Datenbanklogik zu trennen controller und erleichtert das Ändern oder Testen der Datenbanklogik.
// 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
Der service enthält Geschäftslogik und kommuniziert mit dem Repository. Die Controller rufen Methoden von auf, um Service Anfragen zu bearbeiten und entsprechende Daten zurückzugeben. Dies trägt dazu bei, die Geschäftslogik von der Geschäftslogik zu trennen controller und vereinfacht Tests und Wartung.
// 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
Hier controller bearbeiten Sie Benutzeranfragen, rufen Methoden von auf, um Service Daten abzurufen oder zu senden, und geben Ergebnisse an den Benutzer zurück.
// 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
}
Durch die Anwendung dieser Struktur können Sie verschiedene Teile Ihrer Laravel Anwendung effizient verwalten. Darüber hinaus macht die Trennung von Geschäftslogik, Speicherlogik und Kommunikation zwischen Klassen Ihre Codebasis flexibel, wartbar und testbar.