Migrer de version du ZF
Introduction
Cette page n'a pas pour objectif d'être exhaustive. Elle ne recense que les évolutions dont j'ai eu besoin lors de mes migrations.
N'hésitez pas à ajouter en commentaires les modifications dont vous avez eu besoin.
Version 1.0.0-RC2 vers 1.0.0 Stable
La méthode d'instanciation du viewRenderer a changé. Si on veut récupérer le viewRenderer pour changer sa configuration dans le bootstrap (index.php), il faut remplacer :// ancienne version $viewRenderer = Zend_Controller_Action_HelperBroker:: getExistingHelper('viewRenderer'); // à remplacer par : $viewRenderer = Zend_Controller_Action_HelperBroker:: getStaticHelper('viewRenderer');
Version 1.0.0-RC1 vers 1.0.0-RC2
Pas remarqué d'évolution majeure
Version 0.9.3 vers 1.0.0-RC1
Attention, je vous donne ici un truc pour rendre vos anciens codes compatibles. Cela dit, l'esprit du MVC a changé entre la 0.9.3 et la 1.0.0-RC1. Pour voir ce qui a changé avec l'utilisation du ViewRenderer, je vous invite à aller voir le tutoriel d'initiation Kitpages : Initiation au Zend Framework
Pour rendre vos codes compatibles, il faut ajouter la ligne suivante dans index.php
$controller->setParam('noViewRenderer', true);
Version 0.9.2 vers 0.9.3
Pas vu de modif pour l'instant...
Version 0.9.1 vers 0.9.2
La différence principale est la réécriture complète du logger. Ci-dessous dans le code, je reporte un exemple d'utilisation en 0.9.1 et un exemple en 0.9.2.
// -------- 0.9.1 --------- Zend_Log::registerLogger(new Zend_Log_Adapter_File(LOG_FILE)); Zend_Log::log("** URI=".$_SERVER["REQUEST_URI"]); // -------- 0.9.2 --------- $logger = new Zend_Log(); $logger->addWriter(new Zend_Log_Writer_Stream(LOG_FILE)); $logger->debug("** URI=".$_SERVER["REQUEST_URI"]);
A signaler également un changement avec les attachements dans Zend_Mail :
- addAttachement prend maintenant un Zend_Mime_Part en paramètre.
- Pour envoyer un fichier attaché, le plus simple est d'utiliser la fonction createAttachement de Zend_Mail au lieu de l'ancien addAttachement... (voir dans le code du ZF les différences de paramètres... ça se passe dans Zend_Mail::createAttachement)
Version 0.9.0 vers 0.9.1
J'avais bon espoir d'avoir la migration la plus simple depuis la sortie du ZF, et ben non, c'est sans doute la plus longue !!!- Modification des majuscules et minuscules dans Zend_Db
- quand on fait un fetchAll, les résultats du tableau associatif respectent maintenant la casse de mysql.
- Warning, ça peut vous faire pas mal de modifs !!
- A priori, ils ont du désactiver le paramètre PDO::CASE_LOWER dans PDO...
Version 0.8.0 vers 0.9.0-Beta
La migration vers la version 0.9 n'est pas évidente. Cependant la version 0.9 est une version béta. Normalement, l'API doit commencer à se stabiliser. C'est l'occasion de remercier toute l'équipe du Zend Framework pour le boulot accompli.
Les modifications à faire pour la migration :
- Ne plus inclure Zend.php, mais Zend/Loader.php
- Ajouter quelque part un Zend_Loader::loadClass("Zend_Registry");
- Remplacer partout Zend::loadClass par Zend_Loader::loadClass
- Remplacer partout Zend::register par Zend_Registry::set
- Remplacer partout Zend::registry par Zend_Registry::get
- les paramètres de formattages de Zend_Date on changé
- par exemple : $date->get('d/m/Y') devient $date->get('dd/MM/yyyy)
Version 0.7.0 vers 0.8.0
Les modifications nécessaires sont :
- le Zend_Controller_RewriteRouter n'est plus et s'appelle Zend_Controller_Router_Rewrite
- Les noms de tables sont automatiquement entourés de du caractère ` (backquote), attention donc à ne pas échapper deux fois le nom des tables dans vos requêtes SQL.
- Filtres et validation :
- la classe Zend_Filter_Input semble sur le déclin
- Pour filtrer les données, utiliser Zend_Filter et les classes spécifiques du genre Zend_Filter_StripTags
- On parle de filtrage, pas de validation : ça renvoie une chaîne filtrée, ça ne dit pas si la chaîne initiale était valide ou non.
- La classe Zend_Validate et les classes satellites du genre Zend_Validate_EmailAddress permettent de savoir si une chaîne est valide.
- un exemple simple est fourni ci-dessous
- $this->_forward($fcontroller, $faction, $fparams); est à changer en $this->_forward($faction, $fcontroller, null, $fparams); (note : le null c'est le nom du module si jamais on utilise des modules)
- Note : j'en ai bavé pour comprendre ce qui se passait ici...
// validation de l'email $email = $_POST["email"]; $validator = new Zend_Validate_EmailAddress(); if (!$validator->isValid($email)) { Zend_Log::log(print_r($validator->getMessages(),true)); $this->_redirect("comment/edit?error=email+invalide"); } // filtre du sujet et du contenu en n'autorisant que les // balises <b> et <em> $filter = new Zend_Filter_StripTags(array("b","em")); $subject = $filter->filter($_POST["subject"]); $content = $filter->filter($_POST["content"]);
Version 0.6.0 vers 0.7.0
Pour que les erreurs continuent à remonter depuis le controller, il faut ajouter la ligne
$controller->throwExceptions(true);
Version 0.2.0 vers 0.6.0
Voilà la liste des évolutions dont j'ai eu besoin :
- disparition du Zend::loadInterface : à remplacer par require_once
- remplacer
- $router->setRewriteBase('/Tutoriaux/');
- par
- $controller->setBaseUrl('/Tutoriaux/');
- modifier le code qui me permet de savoir quelle action/controller sont appelés avant d'arriver dans l'action concernée. cf code ci dessous
// routes must be defined before Zend::loadClass("Zend_Controller_Request_Http"); $request = new Zend_Controller_Request_Http(); $request->setBaseUrl($baseUrl); $request = $router->route($request); // if routes define a param named language // (you can do the same with action, controller,...) $languageParam = $request->getParam("language",null);
Version 0.1.5 vers 0.2.0
En gros il a fallu changer la façon d'appeler le rewriteRouter. Regardez en bas les modifications de code :
- Invervention de la classe Zend_Controller_Router_Route
- Ajout du setRewriteBase
$controller = Zend_Controller_Front::getInstance(); $router = new Zend_Controller_RewriteRouter(); $router->addRoute( "comment", "comment/:action/:comment", array( "comment"=>null, "controller"=>"comment", "action"=>"display" ) ); $controller->setRouter($router); <!-- à remplacer par --> $controller = Zend_Controller_Front::getInstance(); $router = new Zend_Controller_RewriteRouter(); $cmtRoute = new Zend_Controller_Router_Route( "comment/:action/:comment", array( "comment"=>null, "controller"=>"comment", "action"=>"display" ) ); $router->addRoute("comment",$cmtRoute); $router->setRewriteBase('/Tutoriaux/'); $controller->setRouter($router);
Ajoutez vos propres commentaires :
