我正在尝试从日历中获取事件列表。 我在看 developers.google.com/google-apps/calendar/v3/reference/calendarList/list
我假设$ service是从$ cal = new apiCalendarService($ client)创建的;该文档不是非常具体。
当我尝试执行下面的代码时,我收到错误 PHP致命错误:在非对象上调用成员函数getItems()
但如果我这样做就行了
$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;
}
}
感谢您的帮助
答案 0 :(得分: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');
仍然有效,唯一不同的是你现在有了一个对象,你可以在这一行下面的代码中使用它。
答案 1 :(得分: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>';
}