1

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 をよく理解している人なら誰でも手を貸してくれると思います。

4

2 に答える 2

1

この問題がありました。文字列を変更する必要があると思います

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

$new_event->title = $service->newTitle($fields['title']);
于 2013-06-06T10:25:57.207 に答える
0

Call to a member function getDOM() on a non-object in FeedEntryParent.php「FeedEntryParent.php」という名前のファイルのどこかでgetDOM()変数を呼び出しており、その変数はオブジェクトではなく、getDOM()メソッドを持っていないことを意味します。

投稿したコードのどこにも getDOM() の呼び出しがないため、投稿されたコードではエラーは生成されません。

getDOM() への呼び出しを追跡します。エラーは通常、行番号を示します。メソッドを呼び出している変数を確認します。その変数はオブジェクトではありません。その変数が設定されている場所を見つけます - それはおそらくあなたの問題がある場所です。

于 2010-07-27T21:45:02.273 に答える