2010-07-27 102 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

相關問題