laramate/nucid-architecture

Nucid Architecture for Laravel

2.1.1 2021-08-05 12:16 UTC

This package is auto-updated.

Last update: 2024-09-05 19:01:56 UTC


README

描述

Nucid Architecture for Laravel 是一个基于服务的 Laravel 应用程序架构。Nucid 支持你构建大型应用程序并保持其可维护性。与其他方法相比,它保持了 Laravel 的概念,使其灵活且可定制。

本项目灵感来源于由 Lucid Architecture 开发者 Abed Halawi 开发的项目。我们对核心概念进行了调整,并编写了一个基于包的新实现,增加了许多新特性。

文档仍在进行中... 对不起 :)

Nucid 架构

Nucid Architecture for Laravel 的主要目标是为你和你的团队以及应用程序提供高度可扩展、易于维护且避免冗余的结构。

服务

现代网络应用程序需要执行的任务远不止显示前端网站。它们需要以不同的格式提供内容,需要一个后端进行管理,并提供了与其他解决方案通信的 API。我们不是在项目的任何地方执行所有这些任务,而是将它们分离成不同的部分。这就是 Nucid 中的服务。它由特性组成。

特性

特性不实现任何具体逻辑,它控制将哪些作业和操作调度以解决当前服务请求的任务。

请注意,作业、操作和特性由单独的包 Laramate/composite 提供。这允许你在其他项目中重用它们,无论它们是否使用 Nucid 架构。

在许多架构概念中,域实现业务逻辑。域是一组主题相关的具体实现,可以包括模型、值对象、工厂、实用类等。它提供了可以从特性调用的作业和操作。

Nucid 不为域的结构定义更多约定。有许多概念,其中大多数都是好的解决方案,没有必要强制一个共同的架构。相反:根据你的项目大小和需求调整它可能更有用。

作业和操作

进行中

请注意,作业和操作实现了 Laravel 的队列和序列化特质。所以你可以执行你所知道的所有 Laravel 作业中的事情。

Nucid 实现

安装

您可以通过 composer 安装此包。

composer require laramate/nucid-architecture

在 composer 安装后,您可以在 Nucid 配置 中自定义路径。

完成配置后,使用 Nucid Artisan 命令设置所需的目录和文件。这将不会覆盖任何现有的文件和文件夹。

 php artisan nucid:install

至少,你应该从 config/app.php 配置文件中删除 laravel 路由服务提供者。

App\Providers\RouteServiceProvider::class

设置服务

发布 Nucid 服务配置文件

 php artisan vendor:publish --tag=laramate-nucid-services

之后,你可以在标准 Laravel 的 config/ 文件夹中找到 nucid_services.php 配置文件。

它包含一个数组,其中包含服务配置,键是服务名称。以下是一个示例

'frontend' => [
    'subdomain'     => null,
    'route_prefix'  => null,
    'relative_path' => 'Frontend',
    'middleware'    => ['web'],
]

服务选项

子域

如果您为服务设置了子域名,则只有当子域名匹配时才会加载服务。例如

'subdomain' => 'api.',

将匹配 api.example.com。

路由前缀

如果您设置了路由前缀,则只有当它匹配请求URI的开始时,服务才会被加载。例如

'route_prefix' => 'backend',

将匹配 www.example.com/backend

相对路径

设置服务的相对路径。所有服务都将通过使用 base_path 来解析,您可以在 Nucid 配置中更改此路径。例如

'route_prefix' => 'Frontend',

配置

通常您不需要发布 Nucid 配置文件,因为几乎所有选项都可以通过设置环境选项来覆盖。

但是,如果您想直接配置它,可以使用以下命令发布 Nucid 配置

 php artisan vendor:publish --tag=laramate-nucid-config

之后,您可以在标准的 Laravel config/ 文件夹中找到 nucid_config.php 配置文件。

激活/禁用 Nucid 服务系统

您可以激活或禁用整个 nucid 服务系统。

'active' => true,

或在您的 .env 文件中设置以下选项

NUCID_SERVICES_STATE=true

默认服务

您可以手动设置默认服务。如果您留空,则将使用服务配置中的第一个服务。

'default' => 'frontend',

或在您的 .env 文件中设置以下选项

NUCID_SERVICES_DEFAULT=frontend

服务基本路径

Nucid 服务的基本路径

'base_path' => 'app'.DIRECTORY_SEPARATOR.'Services',

或在您的 .env 文件中设置以下选项

NUCID_SERVICES_BASE_PATH=app/Services

域名路径

域名路径

'domain_path' => 'app'.DIRECTORY_SEPARATOR.'Domains',

或在您的 .env 文件中设置以下选项

NUCID_SERVICES_DOMAINS_PATH=app/Domains

Nucid 服务子文件夹

'routes_dir'      => 'Routes',
'providers_dir'   => 'Providers',
'controllers_dir' => 'Controllers',
'features_dir'    => 'Features',
'resources_dir'   => 'Resources',
'requests_dir'    => 'Requests',

或在您的 .env 文件中设置以下选项

NUCID_SERVICES_ROUTES_DIR=Routes
NUCID_SERVICES_PROVIDERS_DIR=Providers
NUCID_SERVICES_CONTROLLERS_DIR=Controllers
NUCID_SERVICES_FEATURES_DIR=Features
NUCID_SERVICES_RESOURCES_DIR=Resources
NUCID_SERVICES_REQUESTS_DIR=Requests

Nucid 服务文件名

'routes_file'         => 'routes.php',
'service_config_file' => 'service.php',

或在您的 .env 文件中设置以下选项

NUCID_SERVICES_ROUTES_FILE=routes.php
NUCID_SERVICES_SERVICE_CONFIG_FILE=Providers=service.php

附加任务

将用户模型移动到您的域名文件夹

在您的域名目录内创建一个 User 文件夹。然后将标准的 Laravel 用户模型 app/User.php 移动到这个目录。打开文件并修复命名空间。

现在打开默认配置目录中的 Laravel auth 配置文件 config/auth.php。设置移动后的用户模型。

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => \App\Domains\User\User::class,
    ]
]

更多信息

变更日志

请参阅 CHANGELOG 了解最近的变化。

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。

© 2019 Laramate  •  MIT 许可证  •  www.laramate.de  •  github.com/Laramate