Использование Zend Gdata в фреймворке Yii - PullRequest
0 голосов
/ 21 сентября 2011

Я пытаюсь получить несколько фотографий из Picasa от Zend Gdata.Это мой код:

public function getAlbumFeed($albumName){
    require_once('Zend/Loader.php');
    spl_autoload_unregister(array('YiiBase','autoload'));
    spl_autoload_register(array('Zend_Loader_Autoloader','autoload'));
    spl_autoload_register(array('YiiBase','autoload'));
    Zend_Loader::loadClass('Zend_Gdata');
    Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
    Zend_Loader::loadClass('Zend_Gdata_Photos');
    Zend_Loader::loadClass('Zend_Http_Client');

    $svc=Zend_Gdata_Photos::AUTH_SERVICE_NAME;
    $client=Zend_Gdata_ClientLogin::getHttpClient($this->email, $this->password, $svc);
    $gphoto=new Zend_Gdata_Photos($client);

    $query=$gphoto->newAlbumQuery();
    $query->setUser('default');
    $query->setAlbumName($albumName);

    try{
        $feed=$gphoto->getAlbumFeed($query);
    }
    catch(Zend_Gdata_App_Exception $e){
        throw new HttpException("Your photos can't find", 404);
    }
    return $feed;
}

Но когда я запускаю этот скрипт, мой веб-сайт выдает ошибку:

Fatal error: Class 'CExceptionEvent' not found in D:\xampp\htdocs\yii\framework\base\CApplication.php on line 703

Не могли бы вы помочь мне решить эту проблему?Большое спасибо.

1 Ответ

0 голосов
/ 21 сентября 2011

Причиной проблемы является то, что вы получаете исключение (вероятно, HttpException в конце вашего кода), и Yii хочет создать экземпляр CExceptionEvent, чтобы он мог вызвать CApplication::onException событие.

Однако автозагрузчик классов Yii был удален из стека автозагрузки, и в результате PHP не может найти класс.

Попробуйте закомментировать код, который удаляет и добавляет автозагрузчик Yii, и посмотрите, имеет ли это значение:

// spl_autoload_unregister(array('YiiBase','autoload'));
spl_autoload_register(array('Zend_Loader_Autoloader','autoload'));
// spl_autoload_register(array('YiiBase','autoload'));

Вы также можете позвонить spl_autoload_functions, чтобы проверить, что именно происходит с вашим стеком spl_autoload - возможно, что-то его испортило:

print_r(spl_autoload_functions());
die;  // see what the line above prints

$svc=Zend_Gdata_Photos::AUTH_SERVICE_NAME;
...