Ayé enfin terminé…

Je suis content car je viens enfin de terminer la lecture du livre dont j’avais parlé dans un précédent billet

PHP Avancé

Même si beaucoup de chose m’était déjà connu, j’ai pu compléter mes connaissances ou approfondir certains points. Je pense plus généralement que les livres sont un excellent complément aux informations que l’on pourrait trouver sur le net.

Bref, je suis content d’avoir enfin terminé cela. Je pense maintenant m’attaquer au développement de module ou librairies qui pourraient être utiles dans des cas divers et variés…

De l’utilité des frameworks…

Avant tout, je pense qu’il faut séparer les frameworks PHP et ceux en Javascript.

Les Frameworks Javascript sont une véritable révolution dans le “petit” monde du web. Il en existe plusieurs mais deux sont réellement utilisés à grande ampleur :

  • prototype (actuellement en déclin)
  • jquery (en pleine croissance avec une foison de plug-ins)

C’est en grande partie grâce à ces frameworks que les applications web2.0 sont apparus (mais pas uniquement, on remerciera également Adobe).

J’en viens maintenant aux frameworks PHP. Actuellement, je dirais qu’il en existe 2 :

  • le Zend Framework, actuellement en version 1.6 qui est plus une bibliothèque de librairies. Elles sont utiles mais ne composent pas, pour moi, un framework.
  • Symfony, actuellement dans sa version 1.1. Ce dernier étant pour moi un framework à part entière.

Ces derniers sont pour moins un véritable problème. En effet, ils répondent, il est vrai, à tous les besoins possibles et imaginables. Cependant, ils chargent beaucoup d’élément qui demande du support et dont on ne sait pas toujours comment le déroulement s’effectue.

Je préfère donc réutiliser les briques que j’ai développé moi-même (par exemple pour la gestion des templates ou encore pour la connexion à la base de donnée). Je garde ainsi le contrôle du code, tout en répondant trés précisément au besoin des applications que j’ai à développer.

Je concluerais en disant que pour utiliser un Framework quel qu’il soit, il faut véritablement se poser la question de ce que l’on veut faire et comment on veut le réaliser. On utilisera ensuite l’outils le plus adapté.

Firefox3, premier retour…

Après avoir explosé le record de téléchargement en une journée (8 millions qui seront inscrit dans le Guiness des records), je reviens sur l’utilisation de Firefox 3.

Première étape, l’installation ! L’installeur est un fichier très léger (moins de 8Mo ), trés rapide à installer. Un seule bémol mais cela est corrigé progressivement dans le temps : les plug-ins qui n’étaient pas encore disponible pour FF3…

Deuxième étape, l’utilisation ! C’est ici que ça commence réellement. Mon tout premier test fût Gmail plutôt lente sur FF2. Résultat, j’ai été scotché sur mon siége, je croyais difficilement possible de rendre l’interface aussi “instantanée”. On clique, la page s’affiche ! Bref, Tristan Nitot ne nous avait pas menti en indiquant que l’application serait 4 fois plus rapide. Le reste du surf sur le net, même avis, les pages contenant de l’Ajax sont plus rapides et la gestion et performance du Javascript est augmentée !

Pour résumé, j’aurais beaucoup de mal à repasser sur Firefox 2… A noter également que Firefox 3 intégre une partie du draft de spécification du HTML5

Testons nos variables (les expressions régulières)…

J’ai abordé le sujet dans mon précédent billet. Les expressions régulières ou rationnelles sont puissantes et rapides, une fois qu’elles sont maitrisés. En PHP, il existe deux types d’expressions régulières :

  • les POSIX
  • les PCRE (Perl Compatible Regular Expressions)

C’est le second type qui est le plus performant mais plutôt que de faire un long laïus dessus, je propose de lire ce tutoriel qui les explique très clairement : Les expressions régulières PCRE (Perl Compatible Regular Expressions).

Les expressions régulières me permettent de tester les variables qui proviennent de formulaires en POST ou en GET, tout particulièrement lorsque ces dernières vont “attaquer” ensuite une base de donnée. Cela évite tout problème d’injection SQL. J’ai, par ailleurs, mis en place une librairie avec différents types de données (nom, prénom, titre, email, ville, etc…) que je réutilise pour valider les informations récoltées.

Je n’ai pas, pour le moment, trouvé de meilleure solution pour tester des variables que les expressions régulières. Pourquoi m’en priverais-je si elles sont en plus performantes ? 😉

Les bienfaits des tests de variable en PHP

J’ai fait ce billet pour deux raisons principales :

  1. avoir un coup de gueule auprès des personnes qui ne sont pas capable de mettre en place leur test de variables
  2. montrer quelques exemples simples pour éviter des erreurs Notice ou Warning en PHP.

Avant tout, la première chose à faire est d’effectuer ses développements avec le niveau le plus haut d’erreur E_ALL. Très souvent cela indique énormément d’erreur mais la contre partie est que l’on aura par la suite moins de problème d’erreur et de compréhension au niveau du code.

Premier exemple que je rencontre très régulièrement : la non initialisation d’une clé d’un tableau. Ce type d’erreur se voit par un Notice :

Notice: Undefined index ‘champ’ in ‘fichier.php’ on line 10

Ce type d’erreur est très simple à corriger. J’utilise pour ma part la fonction isset(). Cela donne le bout de code suivant :

if (isset($tableau['champ'])) {
traitement normal
} else {
on assigne une valeur par défaut

}

On peut appliquer le même type de traitement pour les données des variables $_GET, $_POST, …

Le second exemple concerne plus la sécurisation des données venant provenant des formulaires et / ou URL pour valider en utilisant les expressions régulières. Mais ce second exemple fera l’objet d’un prochain billet.