Gapps类中的retrieveAllNicknames()函数(与Google Provisioning API相关)返回如下所示的元素:
<atom:entry>
<atom:id>
https://apps-apis.google.com/a/feeds/example.com/nickname/2.0/suse
</atom:id>
<atom:category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/apps/2006#nickname"/>
<atom:title type="text">suse</atom:title>
<atom:link rel="self" type="application/atom+xml"
href="https://apps-apis.google.com/a/feeds/example.com/nickname/2.0/suse"/>
<atom:link rel="edit" type="application/atom+xml"
href="https://apps-apis.google.com/a/feeds/example.com/nickname/2.0/suse"/>
<apps:nickname name="suse"/>
<apps:login userName="SusanJones"/>
</atom:entry>
我可以编写一个循环来获取昵称元素的值,如下所示:
$nicknames = $service->retrieveAllNicknames();
foreach ($nicknames->entries as $entry) {
echo "<p>". $entry->nickname."</p>";
}
但是,我如何访问login元素的userName属性?我试过$entry->login['userName']
,它会产生一条错误消息“不能使用类型为Zend_Gdata_Gapps_Extension_Login的对象作为数组”,而$entry->login
则是我希望工作的(我不必指定“ name“nickname元素的属性,为什么我需要指定login的userName属性?”但是那个抛出了这个错误:“方法Zend_Gdata_Gapps_Extension_Login :: __ toString()不能抛出异常”。
那么如何访问该属性?
修改 我也通过登录尝试了一个嵌套循环(假设每个条目可能有多个),如下所示:
$nicknames = $service->retrieveAllNicknames();
foreach ($nicknames->entries as $entry) {
$nick = $entry->nickname;
foreach ($entry->login as $loginName) {
$login .= " ".$loginName->userName;
}
echo "<p>".$login." - ". $nick."</p>";
}
产生“未定义的变量:在第29行登录/Applications/MAMP/htdocs/google_api/get_nicknames.php”一遍又一遍(每个条目一个),其中第29行是回显线。
答案 0 :(得分:1)
根据http://framework.zend.com/manual/en/zend.gdata.gapps.html的文档,您可以使用以下代码:
$feed = $gdata->retrieveAllNicknames();
foreach ($feed as $nickname) {
echo ' * ' . $nickname->nickname->name . ' => ' .
$nickname->login->username . "\n";
}