2010-07-27 104 views
1

我试图创建一个PHP函数,它将事件添加到Google日历中。它似乎是正确构建对象,但它试图添加事件时会抛出一个“对FeedEntryParent.php中的非对象调用成员函数getDOM()”的错误。这里是简写类只有构造函数和,增加了该事件的功能:调用一个非对象的成员函数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,我将不胜感激。

回答

0

Call to a member function getDOM() on a non-object in FeedEntryParent.php意味着某处指定的文件中“FeedEntryParent.php”你已经调用getDOM()上一个变量,该变量不是一个对象,因此不会有getDOM()方法。

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

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

1

我有这个问题。 我认为你必须改变串

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

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

这为我工作!谢谢! – mykisscool 2013-11-21 14:43:37

+0

不客气! – 2013-11-26 06:58:02

相关问题