linkorb/context

上下文:丰富的内存数据结构

v1.1.0 2018-11-02 13:44 UTC

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-casekebab_case相反)将在脚本和模板中使用时使您的代码看起来更自然。

许可

MIT(见LICENSE.md

由LinkORB工程团队提供


请查看我们的其他项目linkorb.com/engineering

顺便说一下,我们正在招聘!