2011-09-21 3 views
0

J'essaye d'aller chercher des photos de Picasa par Zend Gdata. Ceci est mon code:Utilisation de Zend Gdata dans le framework Yii

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

Mais quand je lance ce script, mon site renvoient une erreur:

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

Pourriez-vous me aider à résoudre ce problème? Merci beaucoup.

Répondre

0

La cause du problème est que vous obtenez une exception levée (probablement HttpException à la fin de votre code), et veut construire Yii une instance CExceptionEvent afin qu'il puisse déclencher l'événement CApplication::onException. Cependant, le chargeur automatique de classe de Yii a été retiré de la pile de chargement automatique et par conséquent PHP ne peut pas trouver la classe.

Essayez de commenter le code qui supprime et ajoute le chargeur automatique de Yû et voir si cela fait une différence:

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

Vous pouvez également appeler spl_autoload_functions pour vérifier ce qui se passe exactement avec votre pile spl_autoload - peut-être quelque chose l'a corrompu:

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

$svc=Zend_Gdata_Photos::AUTH_SERVICE_NAME; 
Questions connexes