Category Archives: PHP

Oh grand Oracle du PHP :)

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é.

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.

Industrialisation des développements, ça marche…

J’ai participé à une conférence mardi dernier organisé par Bull, dans le cadre des Mornings du Libre. Deux conférenciers au programme :

  • Alban Henry, responsable avant-vente, pour Zend, nous présentant les différentes solutions proposés par Zend pour industrialiser les développements en PHP
  • Georges Hiraclides, de chez Bull, nous présenta pour sa part : NovaForge, leur usine de développement logiciel.

Pour faire un résumé de NovaForge, j’utiliserais le terme d’agrégateur d’outils de gestion de projet dans le cadre d’une industrialisation globale des processus. En effet, ce dernier regroupe :

  • des outils de Knowledge Management (wiki, forums, etc…)
  • des outils de reporting projet ou de pilotage du macro au micro pour permettre à tous les intervenants d’avoir la meilleure vision possible
  • des outils de développements
  • des outils d’intégration et de test
  • des outils de référentiel : bibliothèque de librairies, bonnes pratiques etc…

Pour le moment accès sur les développements en Java, la version PHP sera prochainement disponible.

C’est la raison pour laquelle Zend était également présent à cette conférence. Alban Henry nous a présenté les différents logiciels et contribution :

  • Zend Engine (le moteur PHP),
  • Zend Framework (l’un des Frameworks PHP les plus populaires)
  • Zend Core : un package stable contenant l’ensemble des librairies et serveurs pour l’utilisation de PHP
  • Zend Studio : l’IDE
  • Zend Platform: l’applicatif côté serveur pour le debug, le reporting…
  • Zend Guard : pour protéger les sources.

Bref tout un panel d’outils permettant d’industrialiser les développements.

Ce que je retiendrais de cette conférence, c’est surtout que toutes les sociétés qui sont passés dans un mode “Industrialisation des développements” a vu ses performances accrus et ses coûts réduits avec un gain de qualité… Je prêchais déjà la bonne parole, je vais continuer à le faire…

NB : je suis reparti de cette conférence avec quelques goodies (stylo, tapis de souris…) mais également avec un Livre Blanc intitulé : Les forces Logicielles, vers la révolution industrielle des développements applicatifs. Je vous en parlerais dans un prochain billet.

Sécurité et PHP

Et voilà, je viens de terminer ce livre, dont je parlais dans ce billet :

Sécurité PHP5 et MySQL

Accès sur PHP5, il peut également être appliqué à PHP4 (encore présent sur certaines plateformes). Côté base de donnée, c’est bien entendu MySQL qui est ciblé, cependant les différentes méthodes appliquées pourraient être transposés avec d’autres bases de données (Oracle, PostgreSQL…).

Mon impression générale est excellente, je ne suis pas déçu de l’investissement. Certains des points abordés m’ont permis :

  • soit de confirmer les méthodes que j’avais mis en place lors de mes précédents développements
  • soit de me permettre ultérieurement d’améliorer la sécurité de mon code.

Le livre m’a également permettre de mettre à jour des méthodes de “piratages” de site que je ne connaissais ou pensais presque impossible à mettre en place. Bref, un livre a posséder absolument !

Prochain livre “technique”, le pavé PHP5 Avancé