2010-07-27 7 views
1

J'essaie de créer une fonction PHP qui ajoute un événement à un calendrier Google. Il semble construire l'objet correctement mais il lance une erreur "Appel à une fonction membre getDOM() sur un non-objet dans FeedEntryParent.php" lors de l'ajout de l'événement. Voici la classe abrégée avec seulement le constructeur et la fonction qui ajoute l'événement:Appel à une fonction membre getDOM() sur un non-objet

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; 
    } 
} 

L'erreur (je crois) comment je fais appel insertEvent() vers la fin du code. La seule raison pour laquelle je pense que c'est que je reçois seulement l'erreur quand elle existe et si je l'enlève l'écho au-dessus imprime l'objet Event comme prévu.

Quelqu'un avec une meilleure compréhension de l'API PHP Goggle qui peut me donner un coup de main, je serais très reconnaissant.

Répondre

0

Call to a member function getDOM() on a non-object in FeedEntryParent.php signifie que quelque part dans le fichier nommé « FeedEntryParent.php » vous avez appelé getDOM() sur une variable et cette variable n'est pas un objet et n'a donc pas une méthode getDOM().

Le code que vous avez posté n'est nulle part un appel à getDOM(), donc l'erreur n'est pas générée dans le code affiché.

Effectuez le suivi de cet appel vers getDOM(). L'erreur vous donne généralement un numéro de ligne. Voyez quelle variable vous appelez la méthode. Cette variable n'est pas un objet. Trouvez où cette variable est définie - c'est probablement là où votre problème est.

1

J'ai eu ce problème. Je pense que vous devez changer la chaîne

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

à

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

Cela a fonctionné pour moi! Merci! – mykisscool

+0

Vous êtes les bienvenus! –