首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tin Can PHP库: Person对象

Tin Can PHP库: Person对象
EN

Stack Overflow用户
提问于 2017-01-25 13:54:33
回答 1查看 214关注 0票数 0

我的问题涉及到Tin库的Person对象,以及如何使用它。

库的Person对象(据我所知)是xAPI规范第3部分2.4节(链接:https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Communication.md#24-agents-resource)中代理资源的实现。该规范识别一个Person对象,并指示该对象的目的是

提供从外部服务(如目录服务)派生的代理的组合信息

从这种描述和库的开发人员(见链接)看来,规范的Person对象旨在提供一种方法,在一个对象中收集有关分散在多个不同代理对象中的人的信息。

我在遵循库中的示例时遇到了困难,但是以下(过于简化的)代码似乎在SCORM中有效:

代码语言:javascript
复制
...
$agent1 = new TinCan\Agent();
$agent1
    ->setMbox('david.jones@somehospital.gov.au')
    ->setName('Dr David Jones');

$agent2 = new TinCan\Agent();
$agent2
    ->setMbox('d.jones@medicalorg.org.au')
    ->setName('David Jones');

$person = new TinCan\Person();
$person
    ->setMbox([$agent1->getMbox(), $agent2->getMbox()])
    ->setName([$agent1->getName(), $agent2->getName()]);
...

库的Person对象是否打算保存到LRS?如果是这样的话,我无法使用库的Statement对象找到这样做的任何方法。如果没有,它的目的是什么?

我希望得到澄清。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-25 20:50:06

API没有提供保存此对象的方法。它的目的是让LRS使用它所能使用的任何方法将代表同一实体的多个代理组装到Person对象中。其目的是允许访问语句流的系统能够为多个代理组合这些流,从而更全面地了解该人的总体活动。

例如,我可能有3个(或X)标识符表示我是一个人,让我们假设它们是:

  • mailto:dave.personal@example.com
  • mailto:davelastname@work.example.com
  • {"name": "@dave11785","homePage": "https://twitter.com"}

将任何这些代理标识符(作为完全代理表示)传递给只读资源的Person对象将返回包含所有这些标识符的Person对象,假定LRS有足够的知识将它们映射到一起。因此,对于报告系统,在读取语句流时可以请求它所看到的每个新代理的Person对象,然后将语句与不同的actor属性(例如)协调到一个人的完整活动的单一记录中。这里的关键是,LRS的开发(或集成)必须具备必要的知识,以便将代理人联系在一起。

TinCanPHP提供了所有范围的数据模型对象,因为理论上它可以用来编写一个LRS,就像与一个LRP通信一样。这里的关键实现细节是,它通过GET /agents类提供TinCan\RemoteLRS只读资源,该类将提供一个TinCan\Person对象。由于您的代码没有与TinCan\RemoteLRS类的实例交互,所以它实际上并不与LRS通信,因此SCORM的LRS在本例中是不相关的。如果要使用可用资源进行交互,则返回一个Person对象,该对象只包含您传递给它的代理,因为云不知道如何关联多个代理,但它知道默认是提供给它的代理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41853426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档