laramate / nucid-architecture
Nucid Architecture for Laravel
Requires
- php: ^7.3|^8.0
- laramate/composite: ^2.1
- laravel/framework: 7.*|8.*
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^6.0
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',
相对路径
设置服务的相对路径。所有服务都将通过使用 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