douglaszuqueto/laravel-5.1-ddd

Laravel DDD 5.1

1.0.0 2016-06-08 01:34 UTC

This package is not auto-updated.

Last update: 2024-09-23 12:51:43 UTC


README

如何将默认 Laravel 应用程序组织为 DDD 架构的步骤

  • 1. 剪切 app 文件夹内的所有文件;
  • 2. 在 app 文件夹内创建一个名为 Core 的文件夹,并将剪切的文件粘贴进去;
  • 3. 将 Core 文件夹内所有文件的命名空间重命名为 App\Core\
  • 4. 在上一步的相同文件夹内,在 Providers 文件夹中打开 RouteServiceProvider,找到 "require app_path('Http/routes.php');",注意路径已经不再是这样,因为现在该文件位于 Core 文件夹内,所以将路径更改为 require app_path('Core/Http/routes.php');
  • 5. 回到项目根目录,打开 bootstrap 文件夹中的 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
);

首先,像前面步骤一样,在命名空间中添加 Core

查看结果

$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. 在项目根目录的 config 文件夹中打开 app.php 文件,以重命名一些 Service Providers;

    从 ->

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

    到 ->

    App\Core\Providers\AppServiceProvider::class,
    App\Core\Providers\AuthServiceProvider::class,
    App\Core\CProviders\EventServiceProvider::class,
    App\Core\CProviders\RouteServiceProvider::class,
  • 7. 回到 app 文件夹,我们首先创建一个基础域。为此,创建以下结构;

      • 用户
        • 实体
  • 8. 创建一个名为 用户 的实体,并请记住命名空间应遵循以下格式: App\Domains\User\Entities,这样就可以尊重已建立的层次结构;

  • 9. 现在,我们将创建一个应用程序,为此,保持处于 app 文件夹内,构建以下结构;

    • 应用程序
      • 用户
        • Http
          • 控制器
            • UserController.php
          • routes.php
        • 提供者
          • UserServiceProvider.php

UserServiceProvider 文件是此应用程序的主要配置文件,其中您将指向 控制器 的路径以及 路由 文件;

下面,请查看完整的文件。

<?php

namespace App\Applications\User\Providers;

use Illuminate\Routing\Router;
use Illuminate\Support\ServiceProvider;

class UserServiceProvider extends ServiceProvider
{
    protected $namespace = 'App\Applications\User\Http\Controllers';

    public function boot(Router $router)
    {
        $this->registerRoutes($this->app['router']);
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
    }

    protected function registerRoutes(Router $router)
    {
        $router->group(['namespace' => $this->namespace], function ($router) {
            require app_path('Applications/User/Http/routes.php');
        });
    }
}

完成此操作后,不要忘记在 config/app.php 文件中注册 ServiceProvider。

App\Applications\User\Providers\UserServiceProvider::class,
  • 10. 使用 artisan 或外部服务器运行项目,查看是否一切正常。如果您想进行更多迭代,创建一个路由和一个控制器,并测试应用程序。

参考资料