Sprache:

Suche

Wie strukturiert man eine Laravel-Anwendung für Domain Driven Design?

  • Teilen:
Wie strukturiert man eine Laravel-Anwendung für Domain Driven Design?

Beim Domain-Driven Design (DDD) liegt der Schwerpunkt auf der Organisation des Codes rund um die Geschäftsdomäne. In Laravel können Sie Ihre Dateien nach dem DDD-Ansatz strukturieren, indem Sie für jede Domäne oder jeden begrenzten Kontext einen Ordner erstellen. Dadurch wird Ihr Code modularer, wartbarer und skalierbarer. Hier sehen Sie ein Beispiel für eine DDD-Struktur in einem Laravel-Projekt:

app/
|-- Console/
|-- Exceptions/
|-- Http/
|-- Providers/
|-- Domain/ (or src/)
    |-- Product/
        |-- Models/
            |-- Product.php
        |-- Repositories/
            |-- EloquentProductRepository.php
            |-- ProductRepositoryInterface.php
        |-- Services/
            |-- ProductService.php
        |-- Events/
            |-- ProductCreated.php
        |-- Policies/
            |-- ProductPolicy.php
        |-- Requests/
            |-- CreateProductRequest.php
            |-- UpdateProductRequest.php
        |-- Resources/
            |-- ProductResource.php
        |-- Controllers/
            |-- ProductController.php
    |-- User/
        |-- Models/
            |-- User.php
        |-- Repositories/
            |-- EloquentUserRepository.php
            |-- UserRepositoryInterface.php
        |-- Services/
            |-- UserService.php
        |-- Events/
            |-- UserRegistered.php
        |-- Policies/
            |-- UserPolicy.php
        |-- Requests/
            |-- CreateUserRequest.php
            |-- UpdateUserRequest.php
        |-- Resources/
            |-- UserResource.php
        |-- Controllers/
            |-- UserController.php
config/
database/
public/
resources/
routes/
storage/
tests/
vendor/

In diesem Beispiel hat das Projekt zwei Domänen: Produkt und Benutzer. Jeder Domänenordner enthält relevante Modelle, Repositories, Dienste, Ereignisse, Richtlinien, Anforderungen, Ressourcen und Controller. Dieser Ansatz ermöglicht eine bessere Trennung von Belangen und hält die Codebasis sauber und organisiert.

Lesen Sie auch: Laravel Livewire-Kommentar-System

Denken Sie daran, die Namensräume in jeder Datei zu aktualisieren, damit sie der neuen Ordnerstruktur entsprechen. Vergessen Sie auch nicht, die PSR-4-Autoloading Konfiguration in composer.json datei:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "App\\Domain\\": "app/Domain/"
    }
},

Nach der Änderung der composer.json Datei, führen Sie composer dump-autoload um die Autoloading-Dateien neu zu generieren.

Verwandte Seiten: 
 

Handhabung von Routen in Laravel für DDD 

Subdomain-Routen in Laravel für DDD 

TWT Staff

TWT Staff

Writes about Programming, tech news, discuss programming topics for web developers (and Web designers), and talks about SEO tools and techniques