2011-09-21 82 views
0

我想通過Zend Gdata從Picasa中獲取一些照片。這是我的代碼:在Yii框架中使用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 

你能幫我解決這個問題呢?非常感謝你。

回答

0

問題的原因是,你得到(可能是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;