Zend_Gdata NicknamesFeed - 如何在php中访问userName属性

时间:2011-09-08 19:08:07

标签: php zend-framework

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 .= "&nbsp;&nbsp;".$loginName->userName;
  }
  echo "<p>".$login." - ". $nick."</p>";
}

产生“未定义的变量:在第29行登录/Applications/MAMP/htdocs/google_api/get_nicknames.php”一遍又一遍(每个条目一个),其中第29行是回显线。

1 个答案:

答案 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";
}