【问题标题】:Fetching statements from Learning Locker LRS using TinCan API使用 TinCan API 从 Learning Locker LRS 获取语句
【发布时间】:2016-02-29 06:19:10
【问题描述】:

我正在尝试通过 PHP 和 TinCanPHP API 对存储在 Learning Locker 中的语句执行查询。通过这个answer,我能够从 Learning Locker 获取响应。以下是部分回复:

TinCan\LRSResponse Object
(
    [success] => 1
    [content] => TinCan\StatementsResult Object
        (
            [statements:protected] => Array
                (
                    [0] => TinCan\Statement Object
                        (
                            [id:protected] => 9ea9e6b6-8278-4545-a02c-c46113f3ba30
                            [stored:protected] => 2016-02-28T12:04:01.670600+00:00
                            [authority:protected] => TinCan\Agent Object
                                (
                                    [objectType:protected] => Agent
                                    [name:protected] => New Client
                                    [mbox:protected] => mailto:hello@learninglocker.net
                                    [mbox_sha1sum:protected] => 
                                    [openid:protected] => 
                                    [account:protected] => 
                                )

                            [version:protected] => 1.0.0
                            [attachments:protected] => Array
                                (
                                )

                            [actor:protected] => TinCan\Agent Object
                                (
                                    [objectType:protected] => Agent
                                    [name:protected] => Subhayan Roy
                                    [mbox:protected] => mailto:subhayanroy5@gmail.com
                                    [mbox_sha1sum:protected] => 
                                    [openid:protected] => 
                                    [account:protected] => 
                                )

                            [verb:protected] => TinCan\Verb Object
                                (
                                    [id:protected] => http://activitystrea.ms/schema/1.0/search
                                    [display:protected] => TinCan\LanguageMap Object
                                        (
                                            [_map:protected] => Array
                                                (
                                                    [en-US] => Searched
                                                )

                                        )

                                )

返回的语句列表具有权限protected,因此我无法访问它们。如何访问报表?我在这里错过了什么?

【问题讨论】:

    标签: php tin-can-api lrs learning-locker


    【解决方案1】:

    您需要使用库中内置的方法。在这种情况下,您需要的是 getStatements。

    $statementResult->content->getStatements();
    

    在此处查看文档:http://rusticisoftware.github.io/TinCanPHP/doc/api/latest/classes/TinCan.StatementsResult.html#method_getStatements

    要回答您接下来要问的问题(为什么我没有在结果中返回所有语句?),请查看 Statement Result getMore 方法,它为您提供更多 URL 和 Remote LRS moreStatements 方法,它接受更多 URL 并获取下一批语句。请参阅此代码示例:https://github.com/garemoko/TinBadgesPHP/blob/b8789042f4af23f0f7927596e8e7f2a06655db72/TinBadges/RemoteLRS.php#L84-L96

    【讨论】:

    • 谢谢!这有帮助。通过文档我发现有像$statement->getActor()->getName() 这样的方法。所以生活很容易:)
    • Andrew,据我所知getStatements() 是 StatementsResult 类的方法。 Poonam 显然使用了 RemoteLRS 类的 queryStatements() 方法。您是说 getStatements 方法更适合从远程 LRS 检索记录吗?
    • 没有。您必须首先查询语句,然后从返回的结果中获取它们。我和泡茶的方法一样,你需要烧开水壶然后倒出水,这两种方法都不比另一种方法更可取。你需要两者都做。
    • Andrew,一个后续:为了使用 getStatements 方法,您首先需要调用 StatementsResult 对象还是自动完成? (您的解决方案似乎可以在不调用该对象的情况下工作,我想知道为什么。)
    • 因为 queryStatements 返回一个 StatementsResult 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    相关资源
    最近更新 更多