2

我正在尝试从日历中获取事件列表。我正在查看developers.google.com/google-apps/calendar/v3/reference/calendarList/list

我假设 $service 是从 $cal = new apiCalendarService($client); 创建的 该文档不是很具体。

当我尝试执行下面的代码时,我收到错误 PHP Fatal error: Call to a member function getItems() on a non-object

但如果我这样做,它会起作用

$calendarList = $cal->calendarList->listCalendarList();
print "<h1>Calendar List</h1><pre>" . print_r($calendarList, true) . "</pre>";

另外,如果我尝试示例代码@

developers.google.com/google-apps/calendar/v3/reference/events/list#examples 我得到了同样的错误 PHP 致命错误:调用非对象上的成员函数 getItems()

这有效:

$events = $cal->events->listEvents('rtparies@gmail.com');    print "<h1>Events</h1><pre>" . print_r($events, true) . "</pre>";[/PHP]

这失败了:

foreach($events->getItems()as $event){
echo $event->getSummary();

}

我无法想象所有这些例子都是不好的,所以对我做错了什么有什么建议吗?

示例如下:

$calendarList = $service->calendarList->listCalendarList();
while(true){
  foreach($calendarList->getItems()as $calendarListEntry){
      echo $calendarListEntry->getSummary();
   }
  $pageToken = $calendarList->getNextPageToken();
  if($pageToken){
      $optParams = array('pageToken'=> $pageToken);
      $calendarList = $service->calendarList->listCalendarList($optParams);
  }else{
      break;
  }
}

谢谢你的帮助

4

2 回答 2

5

您需要$calendarList像当前代码那样获取对象,而不是数组。

利用

$client->setUseObjects(true); 

就在之前

$service = new apiCalendarService($client);

解释:

$events = $cal->events->listEvents('rtparies@gmail.com');

返回一个数组。如果您不需要对象进行进一步处理,这将是可以的。

由于需要对象,因此需要将对象的使用设置为 true:

$client->setUseObjects(true);

现在,

$events = $cal->events->listEvents('rtparies@gmail.com');

仍在工作,唯一的区别是您现在有一个对象,您可以将其用于此行下方的代码。

于 2012-08-14T17:13:52.793 回答
0

尝试更新您的代码:

     foreach($calendarList->getItems()as $calendarListEntry){
    echo '<h1>event->getSummary()='.$event->getSummary().'</h1>';
    $client->setUseObjects(true);   
    $events = $cal->events->listEvents($event->id);
    echo 'events=<pre>'; print_r($events); echo '</pre>';       
 }
于 2013-04-08T16:01:23.647 回答