PHPackages                             douglaszuqueto/laravel-5.2-ddd - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. douglaszuqueto/laravel-5.2-ddd

ActiveProject[Framework](/categories/framework)

douglaszuqueto/laravel-5.2-ddd
==============================

Laravel 5.2 DDD.

1.0.0(10y ago)315MITPHP &gt;=5.5.9

Since Jun 8Compare

[ Source](https://github.com/douglaszuqueto/laravel-5.2-ddd)[ Packagist](https://packagist.org/packages/douglaszuqueto/laravel-5.2-ddd)[ RSS](/packages/douglaszuqueto-laravel-52-ddd/feed)WikiDiscussions Synced today

READMEChangelogDependencies (6)Versions (2)Used By (0)

Laravel 5.2 - DDD
=================

[](#laravel-52---ddd)

### Passo a passo de como organizar uma aplicação default Laravel para arquitetura DDD

[](#passo-a-passo-de-como-organizar-uma-aplicação-default-laravel-para-arquitetura-ddd)

- 1º Recorte todos arquivos de dentro da pasta **app**;
- 2º Crie uma pasta chamada **Core**(dentro da pasta app) e cole todos os arquivos recortados;
- 3º Renomeie todos os namespaces dos arquivos contidos dentro da pasta **Core** para App\\Core\\
- 4º Na mesma pasta do passo anterior, na pasta **Providers**, abra o RouteServiceProvider e procure pelo trecho; "require app\_path('Http/routes.php');", observe que o path não é mais esse, pois agora esse arquivo está dentro da pasta Core, então mude o path para **require app\_path('Core/Http/routes.php');**
- 5º Voltando a raiz do projeto, pasta **bootstrap** abra o arquivo app.php;

```
$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);
```

Logo de cara, como fizemos no passo anterior, acrescente no namespace o **Core**.

Veja o resultado:

```
$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Core\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Core\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Core\Exceptions\Handler::class
);
```

- 6º Na pasta config(raiz do projeto), abra o arquivo app.php para renomear alguns Service Providers;

    De -&gt;

    ```
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    ```

    Para -&gt;

    ```
    App\Core\Providers\AppServiceProvider::class,
    App\Core\Providers\AuthServiceProvider::class,
    App\Core\CProviders\EventServiceProvider::class,
    App\Core\CProviders\RouteServiceProvider::class,
    ```
- 7º Voltando a pasta app, vamos primeiramente criar um Dominio Base. para isso, crie a estrutura a seguir;

    - Domains
        - User
            - Entities
- 8º Crie uma Entidade chamada **User**, e não esqueça que o namespace deve seguir no seguinte formato: **App\\Domains\\User\\Entities**, assim respeitando a hierarquia montada;
- 9º Agora vamos criar uma Application, para isso, permanecendo dentro da pasta **app**, monte a seguinte estutura;

    - Applications
        - User
            - Http
                - Controllers
                    - UserController.php
                - routes.php
            - Providers
                - UserServiceProvider.php

O Arquivo UserServiceProvider, é o principal arquivo de configuração dessa Application, nela você vai apontar o caminho dos **Controllers** bem como o arquivo de **rota**;

Abaixo, veja o arquivo completo.

```
