Skip to content

Gerfey/laravel-domain-skeleton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Domain Skeleton

Source Code Software License Total Downloads

gerfey/laravel-domain-skeleton creating a skeleton domain framework.

Installation

The preferred method of installation is via Packagist and Composer. Run the following command to install the package and add it as a requirement to your project's composer.json:

composer require gerfey/laravel-domain-skeleton

Usage

Settings

  1. Use command text php artisan vendor:publish and select tag: domain-skeleton
  2. Check files domain-skeleton.php to path .../laravel-project/config/
  3. Create the DOMAIN_SKELETON_DIRECTORY key in the file .env with the name of the default domain group.
  4. Creating a skeleton domain text php artisan make:skeleton:domain Test
  5. Find in file app.php follow the path .../laravel-project/config/ array providers and add a new service provider TestServicesProvider:: class

Create structure

After the command is executed, a structure is created for Domain: Test

- Domain
 - Test
    - Database
        + Migrations
        - Models
            Test.php
        - Repository
            TestRepository.php
    - Http
        - Controller
            TestController.php
        + Middleware
        + Requests
    - Routes
        api.php
    TestServicesProvider.php

Domain/Test/Database/Models/Test.php

<?php

namespace App\Domain\Test\Database\Models;

use Illuminate\Database\Eloquent\Model;

class Test extends Model
{
    /**
     * @var string
     */
    protected $table = 'test';

    /**
     * @var bool
     */
    public $timestamps = false;
}

Domain/Test/Database/Repository/TestRepository.php

<?php

namespace App\Domain\Test\Database\Repository;

use App\Services\Test\Database\Models\Test;
use Gerfey\Repository\Repository;

class TestRepository extends Repository
{
    /**
     * @var string
     */
    protected $entity = Test::class;
}

Domain/Test/Http/Controller/TestController.php

<?php

namespace App\Domain\Test\Http\Controller;

use Illuminate\Routing\Controller as BaseController;
use Illuminate\Http\JsonResponse;

class TestController extends BaseController
{
    public function index(): JsonResponse
    {
        return new JsonResponse([], 200);
    }
}

Domain/Test/Routes/api.php

<?php

use App\Domain\Test\Http\Controller\TestController;
use Illuminate\Support\Facades\Route;

Route::prefix('v1')->group(
    function () {
        Route::get('test', [TestController::class, 'index']);
    }
);

TestServicesProvider.php

<?php

namespace App\Domain\Test;

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Route;

class TestServicesProvider extends ServiceProvider
{
    protected $namespace = 'App\Domain\Test\Http\Controller';

    public function boot()
    {
        if ($this->app->runningInConsole()) {
            $this->loadMigrationsFrom(__DIR__ . '/Database/Migrations');
        }

        parent::boot();
    }

    public function map()
    {
        $this->mapRoutes();
    }

    protected function mapRoutes()
    {
        Route::middleware('api')
            ->prefix('api')
            ->namespace($this->namespace)
            ->group(base_path('app/Domain/Test/Routes/api.php'));
    }
}

For verification, you can make a request via the route /api/v1/test and get a 200 status response.

Copyright and License

The gerfey/laravel-domain-skeleton library is copyright © Alexander Levchenkov and licensed for use under the MIT License (MIT). Please see LICENSE for more information.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages