Tin Can PHPライブラリを使用して、LRSレコードからアクターエージェントの名前を抽出しようとしています。私はこのように私の検索の試みが進行するので、人のmbox形式の値(メールアドレス)を持っている:Tin Can PHPライブラリ:クエリ結果の処理
$actor = new TinCan\Agent();
$actor
->setMbox('mailto:[email protected]');
// return raw statement
$retrieve = $lrs->queryStatements(['agent' => $actor]);
私は$retrieve
の値をプリントアウトした場合、私は(簡潔にするため切り捨て)以下の生の文を取得する:
TinCan\LRSResponse Object (
[success] => 1
[content] => TinCan\StatementsResult Object
(
[statements:protected] => Array
(
[0] => TinCan\Statement Object
(
[id:protected] => 4c707377-384d-4547-a858-61696b386b6d
[stored:protected] => 2016-10-24T15:57:43.358Z
[authority:protected] => TinCan\Agent Object
(
[objectType:protected] => Agent
[name:protected] => Grant
[mbox:protected] =>
[mbox_sha1sum:protected] =>
[openid:protected] =>
[account:protected] => TinCan\AgentAccount Object
(
[name:protected] => ###
[homePage:protected] => http://cloud.scorm.com/
)
)
[version:protected] => 1.0.0
[attachments:protected] => Array
(
)
[actor:protected] => TinCan\Agent Object
(
[objectType:protected] => Agent
[name:protected] => Bob Downe
[mbox:protected] => mailto:[email protected]
[mbox_sha1sum:protected] =>
[openid:protected] =>
[account:protected] =>
)
次のように私は、生のステートメントから名前を抽出しよう
:これは、このCASに、Statementクラスのオブジェクトの配列を生成
// take content from raw statements using getStatements() method
$further_output = $retrieve->content->getStatements();
e値の配列。
私は、必要な情報を抽出するために使用されたメソッドにアクセスするために、何とか配列からオブジェクトを取得する必要があります。これは私がそれをした方法です:
// Get actor out of object
$extracted = $further_output[0]->getActor()->getName();
echo "<p>$extracted</p>"; // produces 'Bob Downe'
これは非常に非効率的で、私はそれを行うより良い方法が必要であると確信しています。
私が欲しい情報を抽出する最も効率的な方法は何ですか:
私は2つの質問がありますか?
生のステートメントは、それぞれのプロパティに対して「保護された」と表示されるのはなぜですか。 [ステートメント:プロテクト]、[ID:プロテクト]、[保存:プロテクト]など?
私は、関連性のこれらのリンクを研究してきたが、彼らは私の問題を解決していない:
how to execute a query on tin-can statements
Fetching statements from Learning Locker LRS using TinCan API
私はどのような援助のために感謝されます。
ブライアンに感謝します。非常に便利な方法がある図書館の機能を見落としてしまったと思いました。 「保護された」問題に関して、私はそれが何らかの認証問題ではないことを嬉しく思います。明らかにOOPに関する私の知識には多くのギャップがあります。 –