Mise à jour de l'application Web de Zend Framework 1.7 à 1.8
-
03-07-2019 - |
Question
J'essaie de mettre à jour mon projet actuel de 1.7 à 1.8. Que dois-je changer pour que ça ne casse pas?
La solution
la plupart des fonctionnalités fonctionneront toujours avec le code hérité. essayez-le sur votre environnement de test et lisez le journal des modifications ZF. Une chose importante est que le chargeur fonctionne différemment maintenant. surtout si vous utilisez le chargement automatique.
Jusqu'au 1.7
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
Depuis 1.8
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Namespace_');
Autres conseils
Réponse courte:
Exécutez votre suite de tests et vérifiez les résultats;)
Réponse longue:
Je me souviens de deux points où la compatibilité ascendante était rompue:
-
Si votre amorçage ne définit pas correctement Zend_Locale, ZF > = 1.7.2 générera une exception indiquant qu'il ne peut pas détecter les paramètres régionaux des navigateurs si vous exécutez un script via la console .
Dans Zend Framework 1.8, le constructeur de Zend_Controller_Action a été modifié.
Je dois mentionner cela car il a cassé mon application jusqu'à ce que je trouve cette erreur après des heures de débogage (pour une raison quelconque, xDebug ni PHP lui-même ne m'ont plus montré que le constructeur de ma classe Controller_Action personnalisée n'était plus le même que celui de Zend_Controller_Action ).
Vous devez donc changer votre constructeur de
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, $invokeArgs = array())
à
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array())