====== Le 31 mars 2008, Pxxo 5.1 ====== Cette version vise principalement à améliorer les performances des versions précédentes grâce notamment à la notion de cache. Cette notion est très importante car cela permet de "compiler" ses widgets, de minimiser les traitements du serveur et les traitements du navigateur. Les gains de vitesse sont **IMPRESSIONNANTS**. Plusieurs tests montrent une augmentation de 50% du nombre de widget créés/exécutés par seconde. ===== Stockage du Cache ===== Le stockage du cache se fait soit sur disque soit en mémoire partagée. Le choix du type de stockage est fait automatiquement en fonction de la présence du module APC dans PHP. ===== Type de Cache ===== Il existe plusieurs types de cache dans Pxxo chacun de ces types est défini par plusieurs constantes : ^ Constantes ^ Description ^ | P_C_BASIC | Évite à Pxxo de deviner systématiquement certaines informations (par ex : nom de fichiers ou de répertoire) | | P_C_TEMPLATE | | | P_C_RESOURCE | Évite à Pxxo de créer systématiquement des fichiers de ressources pré existant | | P_C_XSLT | Évite à Pxxo de refaire des transformations XML/XSL déjà réalisées | | P_C_WIDGET | Évite à Pxxo de réexécuter un widget complet | | P_C_USER | | | P_C_WIDGET2 | Évite à Pxxo de réexécuter un widget complet (variante) | | P_C_HTTP | Évite au navigateur de réinterpréter du contenu qui n'a pas changé | Par défaut le type de cache est le suivant : P_C_BASIC | P_C_RESOURCE | P_C_TEMPLATE | P_C_USER On peut modifier ce réglage avec la méthode **setCacheLevel**. Exemple : $this->setCacheLevel(P_C_BASIC | P_C_RESOURCE | P_C_TEMPLATE | P_C_USER | P_C_HTTP); ===== Cache XSL ===== La classe Pxxo_Xslt utilise automatiquement l'extension [[http://code.nytimes.com/projects/xslcache|xslcache]] si celle-ci est chargée dans PHP. ===== Session dans Pxxo ===== Maintenant Pxxo ne démarre plus automatiquement une session PHP. La session est démarrée automatiquement par Pxxo si on utilise des fonctions qui en ont besoin (ex: getPersistentVar). Pour démarrer une session manuellement dans un widget on pourra utiliser la méthode **checkSession** Quelques réglages ont également été fait pour rendre la gestion de sessions plus "standard". ===== Entêtes HTTP ===== Pxxo gère au travers d'un nouveau objet Pxxo_Response les entêtes HTTP envoyées au navigateur. Cet objet est directement utilisable dans les widgets au travers de l'attribut **$this->Response** ===== Zend Framework ===== Le ZendFramework n'est plus intégré au package de Pxxo, il est maintenant dans un package PEAR séparé. Un lien de dépendance permet de l'installer automatiquement. Au passage on passe à la version 1.0.4. ===== La méthode dumphead ===== La méthode **''dumphead''** de Pxxo_Widget prenait en argument un paramètre ''$return'' (true ou false). Ce paramètre est supprimé, il est avantageusement remplacé par la nouvelle méthode **''gethead''** qui retournera par défaut une chaîne de caractère constituant les entêtes HTML du widget. Par ailleurs, cette méthode ''gethead'' accepte un argument **''$type''** qui peut prendre deux valeurs : **''html''** (sa valeur par défaut) et **''array''** qui permet de retourner un tableau php décrivant les ressources CSS/JS du widget. ===== PHP5 : utilisation du typage d'objet implicite ===== PHP5 permet de faire du [[http://fr.php.net/manual/fr/language.oop5.typehinting.php|typage d'objet implicite]]. Pxxo l'utilisera progressivement dans ces différentes méthodes lorsque c'est possible et surtout lorsque c'est nécessaire. Pour le développeur c'est un confort supplémentaire car des messages d'erreur compréhensibles seront générés automatiquement lorsqu'une méthode est appelée avec des arguments d'un mauvais type. Dans cette version, la méthode **''putWidget''** l'utilise sur son second argument qui doit être de type **''Pxxo_Widget''**.