antonyan / ddd-mappers-infrastructure
DDD项目基础设施
Requires
- php: >=7.1.0
- aws/aws-php-sns-message-validator: ^1.1
- aws/aws-sdk-php: ^3.24
- doctrine/annotations: ^1.6
- doctrine/dbal: ^2.8
- doctrine/migrations: ^1.8
- guzzlehttp/guzzle: ^6.3
- maxbanton/cwh: ^1.0
- monolog/monolog: ^1.21
- symfony/dependency-injection: ^4.1
- symfony/event-dispatcher: ^4.1
- symfony/http-foundation: ^4.1
- symfony/http-kernel: ^4.1
- symfony/routing: ^4.1
- symfony/validator: ^4.1
- vlucas/phpdotenv: ^2.5
Requires (Dev)
- phpunit/phpunit: 6.*
- dev-master
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.1
- v4.0
- v3.5.1
- v3.5
- v3.4.0
- v3.3
- v3.2
- v3.1.0
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.11
- v2.10
- v2.9.1
- v2.9
- v2.8.1
- 2.8
- v2.7.5
- v2.7.4
- v2.7.3
- v2.7.2
- v2.7.1
- v2.7
- v2.6
- v2.5.1
- v2.5
- v2.4
- 2.3
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2
- v2.1.2
- v2.1.1
- v2.1
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.1
- v1.6.0
- v1.5.1
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0
- dev-filter_empty_values
- dev-fix_validation_filter
This package is auto-updated.
Last update: 2024-09-06 23:16:32 UTC
README
基础设施层,用于基于数据映射器作为数据源模式DDD项目,数据映射器Data Mapper
概述
如果您使用此层与DDD项目,所有功能将自动插入。入口点是应用类。它使用Symfony HttpKernel作为引擎。
主要流程
- 应用从请求中获取控制器(表现层服务)和方法。
- 请求预处理事件调度:过滤、验证等。
- 调用控制器。
依赖管理
当前应用程序的架构意味着主要业务逻辑将放在服务中。每个模块和上下文都将有代表服务。服务扩展BaseService,从"config"文件夹的上一级获取容器(依赖注入)和配置。在此之上,为每个服务的容器会自动与基础设施容器合并。
基础设施容器
基础设施容器包括数据库连接、MySqlClient、RequestFactory、HttpClient。
数据库交互
连接
如果您使用MySQL作为数据库,您应指定DDD_RBD_NAME、DDD_RBD_USER、DDD_RBD_PASSWORD、DDD_RBD_HOST、DDD_RBD_DRIVER(pdo_mysql)作为环境变量,或者在DDD项目的.env文件中指定。
DbMapper
为了快速应用程序开发(RAD),我们创建了一个名为DbMapper的抽象。如果您只需要CRUD实现,它将直接支持。您只需要在模块配置中指定表和字段映射。对于创建和更新,您需要指定标识符名称。配置示例
'DeliveryDbTranslator' => [
'table' => 'deliveries',
'columns' => [
'id' => 'deliveries.id',
'deliveryCostId' => 'deliveries.deliveryCostId',
'orderId' => 'deliveries.orderId',
'status' => 'deliveries.status',
'deliveryTime' => 'deliveries.deliveryTime',
'locationId' => 'deliveries.locationId',
'deliveryPhone' => 'deliveries.deliveryPhone',
'contactPerson' => 'deliveries.contactPerson',
'notice' => 'deliveries.notice',
],
'create' => 'id',
'update' => ['id'],
],
HTTP交互
HttpMapper
如果您需要从另一个服务(通过HTTP(s))获取资源,您可以使用类似DbMapper的HTTP映射器。配置示例
return [
'httpConfig' => [
'availableUrls' => [
'get' => getenv('SOME_MICROSERVICE_BASE_URL').'/users/:id',
]
],
];
日志记录
为了日志记录目的,我们使用Monolog,但我们当然将其封装以消除依赖。我们支持将日志记录到文件和到CloudWatch。要使用日志记录,您应该创建服务(示例)
class SomeLogger extends LogService
{
/**
* @return string
*/
protected function getChannelName(): string
{
return "specific-channel-name";
}
}
此外,您应该指定环境变量以指定日志目的地LOGGING_TYPE = file或LOGGING_TYPE = cloudWatch
自定义服务
application.error.handler是保留服务,用于覆盖以在异常上处理API失败响应