dealnews / data-mapper
实现数据映射模式的PHP库
3.1.1
2024-02-27 19:33 UTC
Requires
- php: ^8.0
- dealnews/constraints: ^2.2.0
- dealnews/repository: ^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.38
- php-parallel-lint/php-parallel-lint: ^1.3
- phpunit/phpunit: ^9.6
README
此库提供了创建数据映射对象的接口和抽象基类。
它还提供了一个基于dealnews/repository的Repository类,该类专门用于与数据映射类一起使用。
数据映射模式
来自维基百科
数据映射是一个数据访问层,它在一个持久数据存储(通常是关系型数据库)和内存中的数据表示(领域层)之间执行双向数据传输。该模式的目标是使内存表示和持久数据存储以及数据映射本身相互独立。该层由一个或多个映射器(或数据访问对象)组成,执行数据传输。映射器的实现范围各异。通用映射器将处理许多不同的领域实体类型,专用映射器将处理一个或几个。
为什么使用数据映射模式?
考虑一个需要将数据从一个存储系统移动到另一个存储系统的应用程序。使用数据映射,应用程序不需要理解不同的存储层。
$db_mapper = new \DB\Widget\Mapper(); // Load a Widget from a database $widget = $db_mapper->load(1); // Save the Widget to some external storage // like a 3rd party API $external_mapper = new \ExternalAPI\Widget\Mapper(); $widget = $external_mapper->save($widget);
使用Repository
Repository允许应用程序在一个地方定义使用映射器映射的类。这减少了重复代码,并在应用程序中实现了更高层次的重构。
# Application\Repository.php $repo = new \DealNews\DataMapper\Repository(); $repo->add_mapper("Widget", new \DB\Widget\Mapper());
# Application\SomeFile.php require "Repository.php"; $widget = $repo->new("Widget"); $widget = $repo->save("Widget", $widget);