Contexte de développement
Toutateam est un outil développé en PHP, s'appuyant sur une base de données
MySQL
Les versions supportées par Toutateam pour ces environnements sont :
- Pour PHP : version 4.x et 5.x
- Pour MySQL
: version 4.x et supérieur
Le PHP est un langage interprété. Cela apporte un certain nombre d'avantage, dont celui de ne pas avoir besoin de compilateur, et d'être modifiable très facilement : techniquement, un éditeur de texte suffit pour créer et gérer un projet complet.
Cependant, rester sur le Notepad pour gérer un projet d'envergure a des limites.
Le développement de Toutateam se fait à l'aide d'un certain nombre d'outils performants, qui ont permis de changer l'envergure des développements, en apportant des facilités de gestion du code et de débuggage.
Ces outils seront décrits dans cet article.
Environnement de Développement Intégré, ou IDE
Environnement de base : Eclipse IDE + Plug-in PHP
Le projet Toutateam est géré dans son intégralité à l'aide
du plugin PHPEclise de
l'environnement de développement Eclipse, conçu par IBM et diffusé maintenant en tant que logiciel libre.
Développé en Java, Eclipse IDE est en fait une formidable boite à outils de développement. Conçue à la base pour le développement en Java, il existe maintenant un grand nombre de plug-ins permettant de l'utiliser pour le développement de bien d'autres langages.
Le plugin PHPEclipse fait partie de ces extensions.
Ensemble, cet environnement de développement permet de :
- Compléter automatiquement la syntaxe lors de la saisie, pour les fonctions PHP bien entendu, mais aussi pour les fonctions, méthodes, classes et variables du projet en cours
- Gérer l'ensemble des fichiers rattachés à un projet
- Lister les fonctions, variables et classes présentes dans un fichier source ouvert
- Détecter automatiquement les erreurs de syntaxe et les warnings
- Naviguer très rapidement dans le code, en retrouvant en un click la définition d'une fonction ou d'une variable
- Gérer les révisions et les versions d'un source avec un gestionnaire de versions (CVS, SVN, ...)
- Debuggage en ligne
- ... et bien d'autes fonctions encore
Plug-in Aptana
Aptana est une extension de Eclipse apportant des fonctions d'édition similaire à celles de PHPEclipse, mais pour le HTML et le CSS
Aptana complète la syntaxe dans chacun de ces deux langages, et vérfie les fautes de frappe.
Autre avantage de Aptana : la possibilité de gérer l'upload et le download FTP des fichiers du site, ainsi que la synchronisation
Aptana est téléchargeable ici
Téléchargement de Eclipse
Le téléchargement et l'installation de Eclipse IDE sont simplifiés par l'existence d'un certain nombre de distributions préconçues. Ces distributions sont disponibles sur
la page de distributions du site de Eclipse
Parmi celles-ci, la distribution Innopract est intéressante car elle permet de sélectionner les paquets souhaités afin de réaliser une installation minimale et personnalisée.
Méthodes de débuggage
Le débuggage d'une application PHP pose toujours problème, car elle tourne en général sur un environnement distant, un serveur Apache, sur lequel on n'a pas forcémment de contrôle. Plusieurs moyens sont disponibles pour réaliser le débuggage des applications
Sorties écran
Méthode simple et rustique, mais pratique et rapide : la sortie écran
Utiliser des
echo "Mon texte : ".$maVariableASurveiller;
par exemple.
Cependant, pour rendre ces sorties plus efficaces, il existe plusieurs méthodes pour améliorer le message :
- Ajouter un retour chariot ET une baliser
en fin de chaque ligne
- Ajouter le nom de la fonction au début de la ligne :
echo "MaFonction
: Mon texte de debug : ".$maVariable."
\n";
- Ajouter automatiquement le numéro de ligne au début de la ligne :
echo __LINE__." MaFonction
: mon texte de debug";
- Ajouter automatiquement le nom de la fonction :
echo __FUNCTION__."@".__LINE__." ==> mon texte de debug
\n";
- Ultime finesse du style, ajouter aussi le nom du fichier. Là il vaut mieux réaliser du copier-coller pour placer ses lignes de debug.
echo basename(__FILE__).":".__FUNCTION__."@".__LINE."==> mon debug
\n";
Afficher le nom de la fonction, ET la ligne, permet, à postériori, de repérer plus facilement un texte de debug oublié, ou de le retrouver.Autre amélioration : le debug conditionnel. Prévoyez toujours de conserver les messages de debug (on en a souvent besoin plusieurs fois). Pour qu'ils n'apparaîssent pas à chaque lancement, placez un
if($debug)
au début de chaque ligne. Placez ensuite un
$debug=false;
au début du script à débugger, et passer la variable à true pour le débuggage.
Un grand nombre de debug de ce type sont encore présents dans Toutateam.
Veillez à ne pas laisser de $debug=true sur un site en production. Mal placée, la ligne de débug peut interférer avec l'envoi des entêtes du site et empêcher le démarrage des sessions, et donc de l'authentification !!
Fichier de log
Le principe est le même que pour le débuggage en sorties écran. Le message est le même, mais se fait par l'usage de la fonction
Tools::Trace($monMessage);
Un fichier
tracefile.log
sera créé à la racine du script exécuté. S'il s'agit du index.php, le fichier log sera créé à la racine du site. S'il s'agit par exemple du calendrier, le fichier sera probablement créé dans le répertoire /calendar/ , par exemple.
Avantage de cette méthode :
Ne génère pas de sortie, et peut donc être utilisée sur un site en production
Débuggeur en ligne
Plus complexe, l'usage du débugger en ligne permet de gagner un temps considérable un permettant de vérifier pas à pas l'état des variables dans un fichier au cours de son exécution !
Cependant l'usage du débugger est délicat.
Il est couvert sur le site de l'éditeur : PHPEclipse
L'usage du débugger en ligne requiert la présence d'une extension spécifique dans la configuration de Apache.
Sécurisation du code
Utilisation de RATS pour détecter les risques potentiels dans les scripts