在非对象上调用成员函数getDOM()

时间:2010-07-27 21:18:44

标签: php zend-framework zend-gdata gcal

我正在尝试创建一个将事件添加到Google日历的PHP函数。它似乎正在构建对象,但它在尝试添加事件时抛出“在FeedEntryParent.php中的非对象上调用成员函数getDOM()”错误。这是缩写类,只有构造函数和添加事件的函数:

class GCal_datasource {
    private $user = 'xxxxxxx';
    private $pass = 'xxxxxxxxx';
    private $client;
    private $gdata_cal;

    private $calendar; 
    private $visibility;

        public function __construct($settings = NULL){
        session_start();        
        require_once 'Zend/Loader.php';     
        Zend_Loader::loadClass('Zend_Gdata');
        Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
        Zend_Loader::loadClass('Zend_Gdata_HttpClient');
        Zend_Loader::loadClass('Zend_Gdata_Calendar');

        if($settings == NULL){
            $settings = array();
            $settings['calendar'] = 'default';
            $settings['visibility'] = 'full';
        }       

        $this->calendar = $settings['calendar']; 
        $this->visibility = $settings['visibility'];    
        $this->client = $this->get_ClientLoginHttpClient();
        $this->gdata_cal = new Zend_Gdata_Calendar($this->client);      
    }

    public function create_event($fields){
        $gc = $this->gdata_cal;
        $new_event = $this->gdata_cal->newEventEntry();
        echo '<pre>';
        print_r($fields);
        echo '</pre>';

        if(isset($fields['quick_add'])){ 
            $new_event->content = $gc->newContent($fields['quick_add']);
            $new_event->quickAdd = $gc->newQuickAdd(true);
        } else if (isset($fields['title']) && isset($fields['when'])) { 
            $new_event->title = $fields['title'];
            $where = $gc->newWhere($fields['where']);
            $new_event->where = array($where);
            $desc = $gc->newContent($fields['desc']);
            $new_event->content = $desc;
            $new_event->content->type = 'text';
            $new_event->when = self::build_when_array($fields['when']);
            if(isset($fields['web_content'])){
                $new_event->link = web_event_array($fields['web_content']);
            }   
        }

        echo '<pre>';
        print_r($new_event);
        echo '</pre>';

        $gc->insertEvent($new_event);
        return $created_event->id->text;
    }
}

错误(我相信)是我在代码末尾调用insertEvent()的方式。我认为的唯一原因是我只有在它存在时才会得到错误,如果我删除它上面的回声,它会按预期打印出Event对象。

任何能够更好地掌握Goggle PHP API的人都可以帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:1)

我有这个问题。 我想你必须改变字符串

$new_event->title = $fields['title'];

$new_event->title = $service->newTitle($fields['title']);

答案 1 :(得分:0)

Call to a member function getDOM() on a non-object in FeedEntryParent.php表示在名为“FeedEntryParent.php”的文件中的某个位置,您在变量上调用了getDOM(),并且该变量不是对象,因此没有getDOM()方法。

您发布的代码中没有任何地方是对getDOM()的调用,因此在发布的代码中不会生成错误。

追踪对getDOM()的调用。该错误通常会为您提供行号。查看您调用该方法的变量。该变量不是对象。找到该变量的设置位置 - 这可能就是您的问题所在。