linkorb / context
上下文:丰富的内存数据结构
Requires (Dev)
- symfony/yaml: ^4.0
This package is auto-updated.
Last update: 2024-09-07 19:25:08 UTC
README
注意:此Context库现在已被新的Sage库所废弃
Context是一个库+工具包,用于操作大型数据库的提取,以便进行转换、转换和展示。
定义
-
上下文:上下文就像一个小型的内存数据库,可以像图一样遍历。它包含一个或多个表格。它不应该包含传统数据库的完整副本,而是设计用来只包含关于特定对象(例如,包含所有数据的客户、包含所有人员、流程、政策等的公司,或包含所有卡片、里程碑和利益相关者的项目)的统一数据集。
-
表格:类似于数据库表,它包含一个或多个列和一个包含实际数据的RecordSet。
-
列:类似于数据库列,它描述了数据的含义。常规(文字)列定义类型(int、string、date等)、要求(必需、允许空值等)和文本描述。您还可以添加特殊列,这些列可以根据键引用其他记录。这允许您创建1-to-n和n-to-1引用。
-
RecordSet:记录的数组。可以有多种实现记录集接口的方法。目前只有内存中的ArrayRecordSet实现。
-
记录:展示之星:与传统的数据库记录相比,但通过紧密绑定到其表格和列定义,提供了丰富的功能。内存中的记录可以作为数组(
$user['name']
)和对象($user->name
)访问,并支持与其他表的许多-to-1关系(例如,$user->country->flagImageUrl
),以及1-to-many关系(例如,foreach($user->addresses as $address) echo $address->city
)。
使用案例
- 快速应用开发:您不需要为对象建模(使用getter/setter等),就可以与它们一起工作。只需定义模式(在yaml中)并加载原始数据(例如来自json、yaml、数组等),然后您就可以遍历上下文及其中的记录。
- 复杂的医疗记录映射/转换:使用上下文加载与患者相关的所有记录,然后轻松通过其关系遍历它。
- 结构化文档:根据其领域建模信息,然后将它加载到上下文中,并使用模板遍历信息。
- GraphQL数据存储:本质上,上下文是一个图。因此,上下文可以用来生成GraphQL服务器,其他应用程序可以使用该服务器以他们选择的形式轻松查询上下文。
- 自然用户界面/电子邮件/视图生成:只需将上下文定义到视图中,然后使用任何模板语言(如twig、handlebars、mustache等)遍历它。无需进一步的控制逻辑。
命名约定
上下文并不真正关心用于表格、列等的命名。但为了保持一致性,我们建议以下命名:
- 表格名称:
PascalCase
- 列名称:
camelCase
这(与snake-case
或kebab_case
相反)将在脚本和模板中使用时使您的代码看起来更自然。
许可
MIT(见LICENSE.md)
由LinkORB工程团队提供
请查看我们的其他项目linkorb.com/engineering。
顺便说一下,我们正在招聘!