【问题标题】:Why is this output blank?为什么这个输出是空白的?
【发布时间】:2011-06-17 10:26:14
【问题描述】:

我知道我一定是做错了什么。当我这样做时:

 echo '<pre>';
 print_r($event->when);
 echo '</pre>';

我明白了:

 Array
(
[0] => Zend_Gdata_Extension_When Object
    (
        [_rootElement:protected] => when
        [_reminders:protected] => 
        [_startTime:protected] => 2011-06-16T10:00:00.000-05:00
        [_valueString:protected] => 
        [_endTime:protected] => 2011-06-17T11:00:00.000-05:00
        [_rootNamespace:protected] => gd
        [_rootNamespaceURI:protected] => 
        [_extensionElements:protected] => Array
            (
            )

        [_extensionAttributes:protected] => Array
            (
            )

        [_text:protected] => 
        [_namespaces:protected] => Array
            (
                [atom] => Array
                    (
                        [1] => Array
                            (
                                [0] => http://www.w3.org/2005/Atom
                            )

                    )

                [app] => Array
                    (
                        [1] => Array
                            (
                                [0] => http://purl.org/atom/app#
                            )

                        [2] => Array
                            (
                                [0] => http://www.w3.org/2007/app
                            )

                    )

                [gd] => Array
                    (
                        [1] => Array
                            (
                                [0] => http://schemas.google.com/g/2005
                            )

                    )

                [openSearch] => Array
                    (
                        [1] => Array
                            (
                                [0] => http://a9.com/-/spec/opensearchrss/1.0/
                            )

                        [2] => Array
                            (
                                [0] => http://a9.com/-/spec/opensearch/1.1/
                            )

                    )

                [rss] => Array
                    (
                        [1] => Array
                            (
                                [0] => http://blogs.law.harvard.edu/tech/rss
                            )

                    )

            )

    )

)

然后我试图通过这样做来获得startTime

$StartTime = $event->when->startTime;

但我什么也得不到。

然而,当我这样做时:

 pr($event->published);

我明白了:

Zend_Gdata_App_Extension_Published Object
(
[_rootElement:protected] => published
[_rootNamespace:protected] => atom
[_rootNamespaceURI:protected] => 
[_extensionElements:protected] => Array
    (
    )

[_extensionAttributes:protected] => Array
    (
    )

[_text:protected] => 2011-06-15T03:32:14.000Z
[_namespaces:protected] => Array
    (
        [atom] => Array
            (
                [1] => Array
                    (
                        [0] => http://www.w3.org/2005/Atom
                    )

            )

        [app] => Array
            (
                [1] => Array
                    (
                        [0] => http://purl.org/atom/app#
                    )

                [2] => Array
                    (
                        [0] => http://www.w3.org/2007/app
                    )

            )

    )

)

我可以这样做:

$dateAdded = $event->published->text;
echo $dateAdded;

我看到了一个输出...

【问题讨论】:

    标签: php zend-framework gdata


    【解决方案1】:

    根据to the official Zend_Gdata_Extension_When documentation,有一个叫getStartTime()的方法可以给你时间。

    如果您执行$event-&gt;when[0]-&gt;getStartTime()$event-&gt;when[0]-&gt;startTime,您将获得开始时间。

    【讨论】:

    • 是的 - 我大约 6 小时前尝试过... 致命错误:调用未定义的方法 Zend_Gdata_Calendar_EventEntry::getStartTime()
    • 致命错误:在非对象上调用成员函数 getStartTime()
    • 再次更新...我阅读了更多内容并查看了您在上面发布的代码,何时是一个数组,它解释了为什么我之前的示例无法正常工作。试试$event-&gt;when[0]-&gt;getStartTime() 甚至$event-&gt;when[0]-&gt;startTime
    • 人——终于奏效了!谢谢你们俩解决这个问题。我一直在看这个!
    【解决方案2】:

    startTime 被标记为受保护。您不能像以前那样从外部引用它。该对象中必须有一个 getter 函数“getStartTime()”函数,可以让您公开引用它。

    编辑:它还返回一个对象数组 - 而不是单个对象,因此您需要像这样引用它:$event[0]-&gt;getterFunction() 或使用 foreach 访问循环中的各个对象来循环遍历数组

    【讨论】:

    • 好像不是这样的。例如,我可以访问 pr($event->published);即使数组显示 [_rootElement:protected] => 已发布,我仍然可以执行 $dateAdded = $event->published->text;然后 echo $dateAdded 看看结果。
    • 为此深入研究类文档,我发现有一个从 Zend_Gdata_App_Base (framework.zend.com/apidoc/1.9/Zend_Gdata/App/…) 继承的神奇 _get 方法。据此,引用受保护的变量应该神奇地调用 getter 方法。尝试echo $event[0]-&gt;startTime(您应该引用数组元素,因为它看起来像您返回的事件对象数组)。我认为它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2022-11-16
    • 1970-01-01
    • 2020-12-18
    • 2020-06-03
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多