Вызов функции-члена getDOM() для необъекта
Я пытаюсь создать функцию PHP, которая добавляет событие в календарь Google. Кажется, он правильно строит объект, но выдает ошибку "Вызов функции-члена getDOM() для необъекта в FeedEntryParent.php" при попытке добавить событие. Вот сокращенный класс только с конструктором и функцией, которая добавляет событие:
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, как и предполагалось.
Любой, кто лучше разбирается в PHP API Goggle, может мне помочь, я был бы очень признателен.
2 ответа
У меня была эта проблема. Я думаю, что вы должны изменить строку
$new_event->title = $fields['title'];
в
$new_event->title = $service->newTitle($fields['title']);
Call to a member function getDOM() on a non-object in FeedEntryParent.php
означает, что где-то в файле с именем "FeedEntryParent.php" вы вызвали getDOM()
на переменную, и эта переменная не является объектом и поэтому не имеет getDOM()
метод.
Нигде в размещенном вами коде нет вызова getDOM(), поэтому ошибка не генерируется в размещенном коде.
Отследить этот вызов getDOM(). Ошибка обычно дает вам номер строки. Посмотрите, для какой переменной вы вызываете метод. Эта переменная не является объектом. Найдите, где установлена эта переменная - возможно, именно в этом ваша проблема.