2016-02-29 6 views
2

Я пытаюсь выполнить запросы для операторов, хранящихся в Learning Locker, через PHP и TinCanPHP API. Идя этим answer, я смог получить ответ от Learning Locker. Вот часть ответа:Извлечение заявлений из Learning Locker LRS с использованием TinCan API

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:[email protected] 
 
            [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:[email protected] 
 
            [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, так что я не в состоянии получить доступ к ним. Как мне получить доступ к заявлениям? Что мне здесь не хватает?

ответ

3

Вам необходимо использовать методы, встроенные в библиотеку. В этом случае вы хотите получить getStatements.

$statementResult->content->getStatements(); 

Смотрите документацию здесь: http://rusticisoftware.github.io/TinCanPHP/doc/api/latest/classes/TinCan.StatementsResult.html#method_getStatements

Чтобы ответить на вопрос, который вы будете задавать следующий (? Почему я не получаю все заявления, возвращаемые в результате), посмотрите на Statement Результат getMore метод, который дает вам больше URL и метод Remote LRS moreStatements, который принимает больше URL-адресов и выбирает следующую партию операторов. Смотрите этот код: https://github.com/garemoko/TinBadgesPHP/blob/b8789042f4af23f0f7927596e8e7f2a06655db72/TinBadges/RemoteLRS.php#L84-L96

+1

спасибо! что помогло. в рамках документации я узнал, что существуют такие методы, как '$ statement-> getActor() -> getName()'. Так что жизнь проста :) –

+0

Андрей, насколько я могу судить 'getStatements()' является методом класса StatementsResult. Очевидно, Poonam использовал метод queryStatements() класса RemoteLRS. Вы говорите, что метод getStatements предпочтительнее для получения записей из удаленного LRS? –

+1

Нет. Вы должны сначала запросить инструкции, а затем получить их из возвращаемого результата. Я точно так же, как чай, нужно кипятить чайник и вылить воду, ни один из методов не предпочтительнее другого. Вам нужно сделать то и другое. –