aura / marshal
Aura Marshal 包是一个数据对象打包工具;它从数据源中获取结果,并将这些结果集打包成您自定义的域模型对象,同时保留数据关系。
Requires
- php: ^7.2 || ^8.0
Requires (Dev)
- yoast/phpunit-polyfills: ^1.0.0
README
marshal(动词):排列整齐;有秩序地展示;清晰地安排:整理事实;整理自己的论点。-- dictionary.com
Aura Marshal 包是一个数据对象打包工具。它从数据源中获取结果,并将这些结果集打包成您自定义的域模型对象,同时保留数据关系。
前言
安装
此库需要 PHP 7.2 或更高版本;我们原则上推荐使用最新版本的 PHP。它没有用户空间依赖。
您可以通过 Composer 以 aura/marshal 的形式安装和自动加载。
或者,下载一个版本 或克隆此存储库,然后要求或包含其 autoload.php 文件。
质量
要在命令行中运行单元测试,请执行 composer install
,然后在包根目录中执行 ./vendor/bin/phpunit
。这需要 Composer 以 composer
的形式可用。
此库试图遵守 PSR-1、PSR-2 和 PSR-4。如果您注意到合规性疏忽,请通过拉取请求发送补丁。
社区
要提问、提供反馈或与 Aura 社区进行其他沟通,请加入我们的 Google Group、关注 @auraphp 或在 Freenode 上的 #auraphp 上与我们聊天。
概述
您可以使用任何数据库访问层与 Aura Marshal 一起使用,例如 ...
mysql
或其他 PHP 数据库函数集PDO
Aura SQL
Solar_Sql_Adapter
Zend_Db_Adapter
Doctrine2 DBAL
... 或其他任何东西。(理论上,您应该能够从 XML、CSV、Mongo 或其他任何东西中检索数据,并将其加载到 Aura Marshal。)
使用 Aura Marshal,您可以使用您选择的数据检索工具并编写自己的查询来从数据源检索数据。然后,您将结果数据加载到实体类型对象中,并根据您为它定义的映射方案为您创建实体和集合对象。
Aura Marshal 使您在使用域模型时轻松避免 N+1 问题。它还使用身份映射(每个类型)以避免保留相同对象的多个副本。
重要的是要记住,尽管 Aura Marshal 在许多方面类似于 ORM,但它 并非 是真正的 ORM。
- 它没有查询构建功能
- 它不会自动发出查询
- 它不会为您处理持久化
- 它不会从数据源懒加载结果
- 它不会从数据源读取元数据或模式
这些功能不在Aura Marshal包的范围内。它们的缺失为编写自己手调SQL的高级用户提供了大量的灵活性,特别是对于那些需要将结果集映射到域模型中的旧代码库。
Aura Marshal通过使用Type
对象(定义域模型中的实体类型)来工作。每个Type
都有一个定义,指示其身份字段、如何构建实体和集合,以及其他Type
对象的关系。通过类型Manager
访问Type
对象。您将数据加载到Manager
中的每个Type
,然后从每个Type
检索实体和集合。
文档
此包已完全文档化,请参阅此处。