Test de l'EDI PHPEdit

Guillaume Rossolini

Il existe une grande quantité d'éditeurs de code pour PHP. L'un d'eux, qui est davantage un environnement de développement (IDE) qu'un simple éditeur de code, répond au nom de PHPEdit.

Ce tutoriel vous servira à faire vos premiers pas avec PHPEdit et ses divers plug-ins.

Commentez ♪

- Titre : Test de l'EDI PHPEdit

- Auteur : Guillaume Rossolini

- Parution : 11 octobre 2006

- Licence : Copyright ® 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. Remerciements

- I-B. Problématique

- I-C. Quelques noms de logiciels

- II. Une première approche de PHPEdit

- II-A. Installation

- II-A-1. Enregistrement auprès de Waterproof.fr, l'extranet du site

- II-A-2. Les licences

- II-A-3. Le wizard

- II-B. L'éditeur de code

- II-B-1. La coloration syntaxique

- Les langages

- Les tokens

- II-B-2. L'affichage de l'aide PHP

- Documentation officielle

- Aide à la saisie des noms (Code Insight)

- Aide à la saisie des paramètres (Code Hint)

- II-C. Avis personnel

- III. Configurer l'environnement

- III-A. Les extensions

- III-A-1. Chargement

- III-A-2. FTP (serveurs distants)

- III-B. Outils de code

- III-B-1. Prédiction de code (code insight)

- III-B-2. Assistance de code (code hint)

- III-B-3. Vérificateur de syntaxe (syntax checker)

- III-C. L'éditeur

- III-C-1. Tabulations et espaces

- III-C-2. Lignes spéciales

- III-D. L'interface graphique

- III-D-1. Apparence (Look'n'Feel)

- III-D-2. Les raccourcis clavier (actions)

- III-D-3. Divers (miscellaneous)

- III-D-4. Barre d'onglet des fenêtres filles

- III-E. Le débogueur

- III-F. L'aide

- III-G. Disposition de l'espace de travail

- III-H. Avis personnel

- IV. Les extensions de PHPEdit

- IV-A. La gestion de projet

- IV-A-1. Présentation

- IV-A-2. Avis personnel

- IV-B. Les quickmarks

- IV-B-1. Présentation

- IV-B-2. Avis personnel

- IV-C. Les keyboard templates

- IV-C-1. Présentation

- IV-C-2. Avis personnel

- IV-D. Le débogage

- IV-D-1. Lancer une session

- IV-D-2. Les points d'arrêt

- IV-D-3. Le profiler

- IV-D-4. Problèmes rencontrés

- Session timeout expired

- Limites du débogage avec DBG

- IV-D-5. Avis personnel

- IV-E. Les autres outils…

- V. Les plug-ins de PHPEdit

- V-A. FTP

- V-A-1. Publier vers un serveur FTP

- V-A-2. Récupérer depuis un serveur FTP

- V-A-3. Avis personnel

- VI. Conclusion

- VI-A. Épilogue

- VI-B. Liens

I - Introduction

I-A - Remerciements

Je tiens à remercier Sébastien Hordeaux (de Waterproof SARL) de m'avoir permis de tester ce logiciel.

I-B - Problématique

Coder une petite page de test peut se faire avec le plus simple des éditeurs de texte comme le Bloc-notes. Cependant, dès que le script commence à prendre de l'envergure, nous commençons à avoir besoin d'une assistance automatisée. Notre ordinateur pourrait se charger de détecter nos coquilles syntaxiques, nous proposer des noms de fonctions lorsque nous sommes en train d'en écrire, etc.

C'est l'objectif des éditeurs de code. Ces logiciels sont une assistance à la saisie du code. Ils permettent de programmer plus rapidement, plus efficacement et dans de meilleures conditions.

Les simples éditeurs ne sont pourtant pas une solution à long terme. En effet, ils atteignent leurs limites au fur et à mesure que nos projets prennent de l'envergure. Les développeurs PHP ont besoin d'un meilleur logiciel qu'un simple éditeur de code : il leur faut un environnement de développement.

Un environnement de développement (IDE pour Integrated Development Environment) ne se contente pas d'aider à la saisie du code par divers artifices. Il propose d'autres fonctionnalités qui interviennent à un moment ou à un autre de la vie du projet, quel qu'il soit : débogage, test, envoi par FTP, etc.

Le logiciel PHPEdit fonctionne uniquement sous Microsoft Windows.

I-C - Quelques noms de logiciels

Des éditeurs de code :

- PSpad (Jan Fiala) ;

- Crimson Editor (Ingyu Kang) ;

- UltraEdit 32 (IDM Computer Solutions) ;

- Dreamweaver (Adobe) ;

- etc.

Des environnements de développement :

- PHP Eclipse (Eclipse, cf. lien en fin d'article) ;

- NetBeans (NetBeans) ;

- PhpEd (Nu Sphere) ;

- PHPEdit (Waterproof) ;

- Eclipse PDT (Zend) ;

- Zend Studio for Eclipse (Zend) ;

- etc.

II - Une première approche de PHPEdit

PHPEdit est développé en français et traduit dans plusieurs langues. Certaines versions ne sont cependant disponibles qu'en anglais.

Bien que j'utilise la version 3.0 anglaise tout au long de ce tutoriel, vous pouvez télécharger la traduction française.

II-A - Installation

L'installation en elle-même est relativement simple, je ne perdrai pas de temps à la détailler. Pour une première installation, laissez les composants par défaut. Vous aurez l'occasion d'y revenir lorsque vous maîtriserez davantage l'environnement.

II-A-1 - Enregistrement auprès de Waterproof.fr, l'extranet du site

Afin d'utiliser PHPEdit, il est nécessaire de s'enregistrer sur le site. Cela vous permet ensuite d'utiliser l'extranet de waterproof.fr, c'est-à-dire votre espace de membre. C'est dans cet extranet que vous pourrez trouver les informations sur vos licences et vos achats, ainsi que vos données personnelles. Le lien vers l'extranet se situe en haut à droite du site de Waterproof, à la place du formulaire de connexion (une fois que vous vous êtes connecté, bien entendu).

II-A-2 - Les licences

PHPEdit et ses plugins utilisent un système de licences. Lorsque vous téléchargez un produit de Waterproof, le site vous met à disposition (dans votre extranet) une licence d'évaluation si vous n'en aviez pas encore. Cette licence vous permettra d'utiliser pleinement le produit pendant une période de 30 jours à partir de la date d'émission de la licence (donc à partir de la date du premier téléchargement du logiciel).

Dans le cas de l'environnement lui-même (mais pas de ses plugins), vous pouvez demander une licence personnelle à partir de votre extranet : Your Licenses / Licenses Requests / Request a new personal license. Il vous suffit de remplir une lettre de motivation expliquant l'utilisation que vous comptez faire du logiciel. Vous pouvez rédiger en français si l'anglais n'est pas votre point fort. Vous recevrez votre licence personnelle dès qu'un administrateur aura évalué et accepté votre demande.

Dans le cas d'une nouvelle installation, vous n'aurez probablement pas de licence personnelle à disposition. Vous devrez donc vous satisfaire de la licence d'évaluation disponible dans votre extranet après le téléchargement.

À la fin de l'installation, PHPEdit vous demandera de lui fournir vos fichiers de licence. Vous aurez au moins besoin de la licence d'évaluation de PHPEdit. Si vous ne donnez pas de licence pour toutes les extensions, certaines seront désactivées. PHPEdit est capable de télécharger les licences depuis votre Extanet sur le site de waterproof, vous n'avez donc pas besoin de les télécharger manuellement.

Pour changer de licence une fois PHPEdit installé, allez dans Aide / Gérer les licences.

II-A-3 - Le wizard

Le premier démarrage du logiciel lance un wizard de configuration permettant de spécifier les paramètres les plus utilisés dès la première utilisation.

Tel qu'évoqué dans un autre tutoriel, il est recommandé de placer vos scripts à inclure (configuration, tâches communes, etc.) dans un répertoire situé à l'extérieur de la racine du serveur Web. Le wizard qui se lance lors du premier démarrage de PHPEdit vous permet de spécifier le chemin d'accès à ce dossier afin de faciliter vos développements avec l'IDE. Vous pouvez également demander à PHPEdit de créer un cache de ces scripts, de manière à accélérer leur exécution.

PHPEdit installe sa propre copie de PHP (binaires + extensions + fichier de configuration). Je vous recommande de configurer PHPEdit de la même manière que votre machine de développement.

Le répertoire des scripts à inclure pallie le souci évoqué plus loin (partie II-B-2-b. Aide à la saisie des noms), comme quoi PHPEdit ne peut pas inclure les scripts dont le nom est dynamique (concaténation de chaînes, variables et/ou constantes). Cela permet également au logiciel de parcourir vos scripts afin d'améliorer ses propres capacités d'autocomplétion de code (voir plus loin).

Tous les paramètres configurés dans le wizard sont réutilisés lors de la création d'une solution ou d'un projet dans PHPEdit.

II-B - L'éditeur de code

Le plus évident et le plus utile avec un environnement de développement sont qu'il contient un éditeur de code. Commençons donc par voir ce que PHPEdit nous propose de ce côté-ci…

II-B-1 - La coloration syntaxique

Les langages

Ouvrons un script d'exemple pour voir comment réagit PHPEdit.

Il s'est occupé de mettre en couleurs tout le code, de manière à nous aider à identifier le plus rapidement et le plus aisément possible tous les éléments de notre code source.

C'est l'une des fonctionnalités les plus utiles des éditeurs de code. Si les couleurs ne nous plaisent pas, il est possible de les modifier dans la configuration du logiciel.

Seulement, PHPEdit ne s'arrête pas à mettre en couleurs le code de divers langages (PHP, HTML, CSS, SQL et d'autres encore, dont la liste est disponible dans le menu Outils / Langage actif). Il s'adapte à ce que vous faites.

Prenons par exemple ce fichier (un exemple à ne pas reproduire bien sûr, c'est ici pour l'exemple) :

test.php

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Test de couleurs avec PHPEdit</title>
</head>
<body>

<span style="background: lightgreen;" onmouseout="alert('Hello World!');">
<?php
$string = 'Hello World!';
$sql = 'SELECT * FROM user';
?>
</span>

</body>
</html>

Plaçons le curseur dans la zone de code HTML : tout le code HTML est mis en couleurs. Plaçons maintenant le curseur dans la zone PHP : le code HTML est maintenant affiché d'un gris homogène (la couleur des commentaires), tandis que le code PHP de tout le document s'est subitement coloré. Déplaçons maintenant le curseur dans une zone CSS (dans les guillemets de style) : même chose, seules les zones CSS sont mises en couleurs. Nous pouvons encore reproduire cela avec une zone de code JavaScript (dans les guillemets de onmouseout) ou SQL.

Animation en format "flash" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://g-rossolini.developpez.com/tests/phpedit/fichiers/coloration.swf

Pour modifier les couleurs utilisées, allez dans Outils / Préférences / Langages / PHP, puis « Styles ».

Dans de rares occasions, PHPEdit ne met pas correctement le code en couleurs. Cela peut arriver si vous alternez beaucoup entre les blocs PHP et les blocs HTML. La solution est simplement de déplacer le curseur. Ce petit défaut n'est pas gênant, dans la mesure où vous devriez de toute manière adopter une approche évitant de mélanger les langages dans un même fichier : utiliser des gabarits.

Les tokens

Lorsque l'on place le curseur avant un token (comprenez une parenthèse, une accolade ou un crochet ouvrants), PHPEdit trouve automatiquement le token correspondant, souligne la paire en rouge et nous informe dans le bas de son interface.

Par ailleurs, il est possible de lui demander de mettre en couleurs tous les tokens affichés à l'écran. Cela peut être pratique si vous avez par exemple beaucoup de niveaux de parenthèses imbriquées pour une conditionnelle.

Voici comment faire :

- Par le menu Tools / Token match / Highlight all tokens ;

- Par le raccourci Ctrl + T.

Coloration des tokens

Vous pouvez annuler cette coloration en retournant dans ce menu ou en appuyant sur Ctrl + Shift + T.

II-B-2 - L'affichage de l'aide PHP

Vous l'avez peut-être déjà remarqué : lorsque vous laissez le curseur sur le nom d'une fonction, PHPEdit cherche automatiquement dans la documentation de PHP afin de vous afficher tout ce qu'il peut dans un volet de son interface (par défaut, ce volet se trouve dans la partie basse de votre écran). Cette fonctionnalité, aussi simple soit-elle, est l'une de mes préférées dans ce logiciel.

Documentation officielle

Il n'y a pas grand-chose à en dire, mais je comptais marquer son existence. Il suffit de placer le curseur sur le nom d'une fonction pour que sa documentation apparaisse.

L'une des grandes forces de PHP est d'avoir une documentation très complète ainsi que des commentaires d'utilisateurs qui donnent souvent de très bons conseils. PHPEdit met tout cela à portée de main du développeur, de manière très intelligente.

Pour modifier vos préférences, allez dans Outils / Préférences / Aide / Aide contextuelle. Vous pouvez y sélectionner un fichier de votre disque dur ou bien choisir l'aide en ligne. Si vous avez Internet en permanence, cela vous permet de profiter des commentaires ; toutefois, je ne recommande pas d'utiliser l'aide en ligne de cette manière, car cela surcharge inutilement le serveur de php.net et ses miroirs. Puisque vous avez l'aide sur votre disque dur, autant l'utiliser.

Animation en format "flash" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://g-rossolini.developpez.com/tests/phpedit/fichiers/documentation.swf

Aide à la saisie des noms (Code Insight)

Lorsque vous tapez un nom de variable, constante […] ou fonction, PHPEdit vous propose les noms qu'il connaît déjà et qui peuvent correspondre à ce que vous êtes en train d'écrire. S'il ne le fait pas (par exemple si vous revenez à un nom incomplet), vous pouvez appeler cette fonctionnalité à l'aide des touches Ctrl + Espace. PHPEdit vous affiche une liste de noms candidats et vous donne le type de chacun ainsi qu'une courte description de la ligne sélectionnée. Appuyez sur la touche Entrée pour valider votre choix et compléter le nom ou bien sur la touche Échap pour masquer la boîte de suggestions.

Il peut s'agir d'éléments définis dans PHP ou bien par vous-même à un autre endroit de votre code, voire même dans un script que vous avez inclus.

Ctrl + Espace à la fin de la ligne 4 :

<?php

define('PHPEDIT_STRING', 'Test de saisie automatique');
echo PHPE

?>

Cet exemple est obtenu en écrivant 'PHP', en pressant les touches Ctrl+Espace et en ajoutant la lettre 'E'

Dans certains cas, PHPEdit peut également vous aider à saisir les noms des index de vos tableaux associatifs.

Ctrl + Espace entre les apostrophes de la ligne 3 :

<?php

echo $_SERVER[''];

?>

Cet exemple est obtenu plaçant le curseur entre les deux apostrophes et en pressant les touches Ctrl + Espace

PHPEdit a cependant quelques limitations… Elles sont dues aux inclusions dynamiques et aux variables dynamiques : PHPEdit n'incorpore pas le moteur complet de PHP, il ne va donc pas comprendre la totalité de votre code. Nous verrons plus loin que, bien que cette limitation s'applique également aux fichiers inclus, il est possible d'y remédier.

Ctrl + Espace à la fin de la ligne 6 :

<?php

${'variable_1'} = 'Premier essai';
$variable_2 = 'Second essai';

echo $varia

?>

Si nous essayons de compléter le nom entamé à la ligne 6 de cet exemple, en théorie, les noms candidats sont 'variable_1' et 'variable_2'. Seulement, il n'est pas encore possible pour PHPEdit de connaître les noms dynamiques tels que le premier.

L'impact sur votre manière de coder doit être très réduit, dans la mesure où vous devriez avoir peu de noms dynamiques (voire aucun).

Cet exemple est obtenu plaçant le curseur à la fin de la ligne 6 et en pressant les touches Ctrl + Espace

Vous pouvez activer et désactiver tout cela ainsi que configurer le délai d'affichage en allant dans Outils / Préférences / Code Insight et Outils / Préférences / Languages / PHP / Code Accelerators.

Aide à la saisie des paramètres (Code Hint)

Lorsque vous tapez une liste de paramètres, PHPEdit peut vous afficher le prototype de la fonction dont il s'agit.

Ctrl + Espace à la fin de la ligne 5 :

<?php

$variable = 'Essai';

echo html

?>

Placez-vous à la fin de la ligne 5 et complétez à l'aide de Ctrl + Espace en sélectionnant la fonction « htmlentities ». Ne touchez plus à rien et observez l'info bulle qui apparaît : elle vous indique le prototype de la fonction et une description. Le paramètre que vous êtes en train de taper est mis en gras dans ce prototype. S'il s'agit d'une fonction standard, sa documentation officielle s'affiche également dans le volet dédié à cet effet.

Voici ce que vous devez obtenir en premier :

Cet exemple est obtenu plaçant le curseur à la fin de la ligne 5 et en pressant les touches Ctrl + Espace

Après validation du nom « htmlentities », attendez un instant et vous verrez ceci apparaître :

Apparition du prototype de la fonction : nom, paramètres obligatoires, paramètres facultatifs et description

J'imagine que vous commencez à comprendre la différence avec Notepad !

Si vous perdez l'info bulle, vous pouvez la faire apparaître à nouveau en pressant les touches Ctrl + Shift + Espace.

Vous pouvez activer et désactiver tout cela, configurer le délai d'affichage et modifier la transparence de l'info bulle en allant dans Outils / Préférences / Code Hint.

II-C - Avis personnel

Vous avez pu vous rendre compte que PHPEdit rend de fiers services à n'importe quel développeur PHP, même s'il ne gère pas des projets de très grande envergure. Écrire n'importe quel script en PHP devient une tâche plus facile grâce à l'utilisation d'un bon environnement de développement.

Nous allons maintenant voir comment personnaliser l'éditeur avant de passer aux choses sérieuses.

Dans de rares occasions, l'aide à la saisie des noms et des paramètres peut ne pas s'afficher automatiquement alors qu'elle le devrait. La fréquence d'apparition de ce défaut est réduite à chaque mise à jour du logiciel : pensez à vérifier votre version de manière périodique.

PHPEdit peut vous afficher ce type d'aide pour vos propres fonctions, classes, etc. Pour cela, prenez le temps de documenter votre code en utilisant la syntaxe proposée par phpDocumentor (qui est une adaptation de la Javadoc de Sun Microsystems). Sauvegardez fréquemment, car c'est à ce moment que PHPEdit parcourt vos fichiers inclus à la recherche des noms.

III - Configurer l'environnement

Je vais vous guider de manière à configurer votre PHPEdit comme le mien.

Tout ce que nous allons voir ici se trouve dans le panneau de configuration de l'environnement : Outils / Préférences.

III-A - Les extensions

III-A-1 - Chargement

F10 / Extensions

Vous pouvez modifier ici la manière dont PHPEdit charge ses extensions. Cela vous permet de limiter la taille de mémoire utilisée par l'IDE. Je vous recommande de mettre en « Load on startup » les extensions dont vous avez fréquemment besoin, toutes les autres devant être en « Load when needed ».

Le chargement des extensions

III-A-2 - FTP (serveurs distants)

F10 / Extensions / FTP / Servers

L'extension FTP de PHPEdit vous évitera de devoir utiliser un autre programme pour télécharger vos scripts vers et depuis votre serveur Web.

C'est ici que vous pouvez définir les serveurs FTP accessibles à toutes vos solutions. Cliquez sur « Nouveau », remplissez les informations de connexion et cliquez sur « Tester » avant de valider. Répétez l'opération pour tous vos serveurs principaux.

Les serveurs FTP

III-B - Outils de code

F10 / Code tools

III-B-1 - Prédiction de code (code insight)

C'est une fonctionnalité que nous avons déjà vue. Elle est activée par défaut, mais nous pouvons ici demander à ce que l'infobulle suive le curseur lorsque l'on tape au clavier.

Ne mettez pas un délai trop faible, cela ferait ramer votre ordinateur lorsque vous parcourez rapidement votre code.

Le code insight

III-B-2 - Assistance de code (code hint)

C'est également une fonctionnalité que nous avons vue plus tôt. Ici, nous pouvons demander à l'IDE d'afficher l'infobulle avec de l'alpha blending (de la transparence), ce qui est très utile dans la mesure où elle est placée par-dessus des lignes de codes dont nous avons souvent besoin.

Ne mettez pas un délai trop faible, cela ferait ramer votre ordinateur lorsque vous parcourez rapidement votre code.

Le code hint

III-B-3 - Vérificateur de syntaxe (syntax checker)

Le vérificateur de syntaxe peut être activé au cours de la frappe. Cela peut vous éviter des sessions de débogage, mais il faut prendre garde : si votre ordinateur n'est pas très rapide, cela ralentira votre développement plus qu'autre chose… C'est mon cas.

S'il est activé, le vérificateur de syntaxe agit comme le vérificateur orthographique de MS Word.

Vous pouvez spécifier le chemin vers votre propre exécutable PHP afin de coller parfaitement à votre environnement de production.

III-C - L'éditeur

F10 / Editor

III-C-1 - Tabulations et espaces

PHPEdit peut gérer les tabs et les espaces de diverses manières. Je vous recommande cette configuration, mais cela dépend bien entendu de vos propres habitudes de programmation :

Les espaces et les tabs

III-C-2 - Lignes spéciales

Je pense que PHPEdit pourrait gagner à activer un paramètre de cette fenêtre par défaut. Il s'agit de la ligne de focus (c'est-à-dire la ligne où se trouve le curseur), qu'il est possible de mettre en valeur.

Les lignes spéciales

III-D - L'interface graphique

F10 / Graphical user interface

III-D-1 - Apparence (Look'n'Feel)

C'est ici que vous pourrez réinitialiser l'interface si, par malchance, vous perdez de vue un outil de l'environnement. Je vous recommande d'utiliser le style « .Net » tant que possible afin de gagner un maximum à la fois en espace de travail et en fonctionnalités à portée de main.

Le Look'n'Feel

III-D-2 - Les raccourcis clavier (actions)

Je vous recommande de modifier le raccourci pour accéder au générateur de tâches (par défaut Ctrl + Q) : il est trop proche du S à mon goût.

Les raccourcis du clavier

Lors de l'un de vos passages par cette fenêtre de configuration, vous devriez prendre le temps de consulter la liste des actions possibles. Une bonne part d'entre elles n'ont pas de raccourci assigné, ce qui signifie qu'elles sont désactivées. Pourtant, elles sont souvent très utiles, telles les actions concernant les entités HTML.

Cet éditeur de raccourcis a deux petits défauts : d'une part, il ne vous avertit pas lorsque vous attribuez le même raccourci à plusieurs actions ; d'autre part (et je vais chipoter ici), il utilise l'icône d'Internet Explorer pour le fichier HTML même si vous avez un autre navigateur par défaut.

III-D-3 - Divers (miscellaneous)

Je déteste voir les cercles se dessiner autour du nom du script en cours lorsque j'utilise un IDE. C'est ce qui s'appelle ici « draw a locator », je le désactive systématiquement.

Divers

III-D-4 - Barre d'onglet des fenêtres filles

Ici, nous pouvons demander à PHPEdit de placer le bouton de fermeture d'onglet sur la gauche de l'onglet plutôt que sur la droite : c'est bien plus simple pour fermer plusieurs onglets à la suite.

Onglets de fichiers ouverts

III-E - Le débogueur

F10 / Debugger

Je suis parfaitement conscient que PHPEdit installe DBG pour vous. Cependant, il utilise la version de PHP incluse dans son installation : elle ne correspond probablement pas à la version que vous utilisez dans vos développements.

Afin d'éviter les incohérences, il est recommandé de configurer PHPEdit et DBG pour fonctionner avec votre serveur de développement.

Pour cela, vous aurez besoin de la DLL php_dbg.dll correspondant à votre version de PHP. Vous pouvez la télécharger depuis le site de DBG.

Lorsque vous êtes prêt, ouvrez votre fichier php.ini et ajoutez-y les lignes suivantes :

extension=php_dbg.dll

[debugger]
debugger.enabled = on
debugger.profiler_enabled = on
debugger.JIT_enabled = on
debugger.JIT_host = clienthost
debugger.JIT_port = 7869

Enfin, pensez à configurer PHPEdit pour toujours utiliser votre version de PHP (utilisez bien sûr le chemin d'accès correct) :

Plugins - PHP

Code Tools - Syntax checker

Debugger

III-F - L'aide

F10 / Help

Vous pouvez modifier ici le comportement de l'IDE par rapport à l'aide de PHP et d'eZ template.

Pour PHP, vous avez le choix entre :

- La documentation officielle chargée depuis le site Internet (cela prend plus d'espace, mais vous bénéficierez des commentaires) ;

- Une source Internet de votre choix (site officiel, miroir, etc.) acceptant le nom de la fonction en paramètre ;

- Un fichier de votre ordinateur au format CHM ou HTML.

Il va sans dire qu'utiliser la documentation Internet ralentira sensiblement vos développements et augmentera considérablement la charge de ce serveur, surtout si vous n'êtes pas le seul à faire ainsi. Je vous recommande donc la troisième option (documentation locale).

La configuration de l'aide

III-G - Disposition de l'espace de travail

Voir / Disposition de l'espace de travail

Les connaisseurs d'Eclipse sont familiers du terme « vue ».

Une vue est une manière d'agencer les panneaux de votre IDE afin de pouvoir en avoir un maximum sous la main quand vous en avez besoin. Cela suppose de ne pas tous les afficher à la fois (à cause de leur grand nombre) et donc de définir un layout pour chaque utilisation de votre IDE. C'est ce qu'Eclipse appelle une « vue », tandis que PHPEdit utilise l'appellation « workspace layout ».

Les layouts de PHPEdit sont au nombre de trois :

- debug : les panneaux sont agencés de manière à vous permettre d'analyser et de naviguer dans votre code ;

- default : ils sont davantage positionnés pour vous permettre de coder confortablement ;

- quickedit : seule la fenêtre de code est affichée, permettant d'afficher une plus grande quantité de code dans l'écran.

Je vous recommande de sauvegarder votre configuration favorite. Apprivoisez le plus rapidement possible votre IDE.

La barre d'outils de PHPEdit vous permet de changer rapidement de layout : sélectionnez simplement parmi la liste déroulante.

III-H - Avis personnel

Durant la configuration de votre PHPEdit, vous avez probablement remarqué la grande quantité d'endroits où vous pouvez entrer l'emplacement d'un exécutable ou d'une DLL de PHP. Je pense que c'est un point faible de cet IDE : il segmente trop sa configuration.

PHPEdit gagnerait certainement à disposer d'un onglet de configuration global pour PHP permettant de configurer des profils que l'on pourrait facilement interchanger. Je ne parviens de toute manière pas à imaginer de situation dans laquelle je pourrais avoir besoin de la version 4.4 de PHP pour la syntaxe, mais de la version 5.1 pour le débogage…

De manière générale, je trouve très bien de pouvoir configurer l'IDE jusqu'au point d'être en mesure de sélectionner la couleur des marqueurs de paires d'accolades. Cependant, cela complique l'interface de configuration au point de devoir créer un wizard de configuration. Peut-être PHPEdit gagnerait-il à proposer une interface simplifiée de configuration plutôt qu'un Wizard ?

Par ailleurs, je n'ai pas été en mesure de retrouver certains éléments de la configuration du wizard (le répertoire des includes et la gestion du cache). Qu'en est-il du développeur qui modifie sa manière de développer grâce à PHPEdit, doit-il réinstaller tout l'éditeur ?

Enfin (et c'est un détail mineur), le wizard ne semble pas tout à fait au point puisque, sur mon ordinateur, le menu de gauche n'affiche que les puces de la liste (aucun titre n'apparaît puisque le fond est blanc, comme la couleur de la police). Dans la mesure où il m'est possible de lire la partie droite de la fenêtre, cela n'a pas grande importance, mais cela vaut la peine d'être relevé. Cela aurait-il un rapport avec la couleur de mon fond d'écran ?

IV - Les extensions de PHPEdit

IV-A - La gestion de projet

IV-A-1 - Présentation

Tout bon IDE sait gérer un projet complet. PHPEdit ne déroge pas à cette règle. Il le fait même très bien, puisqu'il sait définir des paramètres spécifiques à chaque solution ou projet.

Il me semble que le vocabulaire utilisé ici provient de MS Visual Studio : une solution peut contenir un ou plusieurs projets situés n'importe où dans votre système de fichiers. Un projet correspond à un répertoire de votre ordinateur.

Par défaut, l'explorateur de solutions est placé dans la marge gauche de PHPEdit.

L'explorateur de solutions

Dans cette image, vous pouvez voir que j'ai configuré deux solutions (« Developpez » et « Pixiel ») contenant chacune quelques projets. J'ai également un projet « tests » situé à la fois en dehors de toute solution et dans toutes les solutions : de cette manière, j'y ai toujours accès.

Je vous recommande vivement de ne pas enregistrer vos solutions et vos projets dans l'arborescence du serveur Web de votre station de développement.

Utilisez plutôt quelque chose comme suit :

- C:\Mes Documents\Web\includes\ : Le répertoire de vos scripts à inclure ;

- C:\Mes Documents\Web\PHPEdit\ : Le répertoire de vos solutions et projets PHPEdit ;

- C:\Mes Documents\Web\www\ : Le répertoire accessible par HTTP.

Si vous enregistrez les fichiers de Solutions et de Projets de PHPEdit dans votre arborescence Web, vous vous retrouverez tôt ou tard avec ces mêmes fichiers sur votre serveur Web : ce n'est pas une situation dont vos clients sont supposés être témoins…

L'ajout, la modification et la suppression des solutions et des projets sont trop intuitifs pour nécessiter une explication. Utilisez le menu contextuel et le drag-and-drop comme vous en avez l'habitude. Prenez simplement garde à différencier l'emplacement du fichier de PHPEdit et l'emplacement de votre répertoire de scripts.

Le fichier des paramètres du projet est enregistré à un endroit.

Le répertoire du projet est ailleurs.

IV-A-2 - Avis personnel

PHPEdit gère très bien les projets. Il propose une organisation similaire à celle proposée par un très grand IDE et permet de les configurer à différents niveaux, ce dont je parlerai plus en détail dans la section sur le plug-in FTP.

Comme je l'ai évoqué plus tôt, peut-être que l'interface de création de solutions et de projets pourrait gagner à être très légèrement plus explicite.

Il me semble avoir déjà évoqué le fait que PHPEdit plante de temps à autre. Lors d'un tel plantage, les nouveaux paramètres ne sont pas sauvegardés par l'IDE. Par conséquent, je vous recommande vivement de sauvegarder fréquemment les changements que vous effectuez à vos solutions et projets. C'est de toute manière une attitude que vous devriez adopter de manière générale, plantages ou non : sauvegardez fréquemment tout ce que vous faites.

Si vous rencontrez un problème de gestion du cache, utilisez la commande « refresh » dans l'explorateur de solutions.

IV-B - Les quickmarks

IV-B-1 - Présentation

Les quickmarks sont des marqueurs que PHPEdit dépose dans votre code lorsque vous utilisez certaines fonctionnalités de l'IDE. Par exemple, si vous définissez plusieurs fonctions dans un script, l'IDE vous permet de naviguer rapidement de l'une à l'autre.

Je vais vous guider à travers leur utilisation. Dans un premier temps, placez-vous à la lige 10 d'un script tel que celui-ci :

<?php

function function_1()
{
echo 1;
}

function function_2()
{
echo 2;
}

?>

Dans la barre de boutons de PHPEdit, il y a une liste déroulante « Methods » : utilisez-la pour vous déplacer vers « function_1 ». Voici ce que vous obtenez :

PHPEdit a déposé une quickmark (la petite flèche blanche) à l'emplacement de votre curseur avant de le déplacer dans la fonction demandée. Maintenant, appuyez sur Alt + Fin. C'est ce qui s'appelle « collect last quickmark ». Si vous apprenez à l'utiliser, cela peut vous permettre de réduire considérablement le temps perdu à naviguer dans le code.

Vous pouvez bien sûr déposer volontairement une quickmark si vous le souhaitez : cela se fait au moyen de Alt + Début.

Nous allons maintenant écrire un mini wrapper pour la fonction htmlentities(), trop souvent négligée, car fastidieuse à écrire. Voici notre code de départ :

<?php

function getHtml($string){
return htmlentities($string, ENT_QUOTES, );
}

?>

Le premier paramètre optionnel devrait toujours être ENT_QUOTES, nous n'avons donc pas de remords à le laisser tel quel. Cependant, nous nous rendons maintenant compte que le charset peut changer et, surtout, que nous pouvons avoir besoin de cette information à plusieurs endroits. Nous allons donc avoir besoin d'une constante dans notre script.

Ainsi, déposons une quickmark avant la parenthèse fermante (Alt + Début) : PHPEdit a placé un triangle rouge à cet endroit. Déplaçons le curseur hors de la fonction et ajoutons cette ligne :

define('CFG_CHARSET', 'UTF-8');

Pensez à copier le nom de la constante dans le presse-papiers. Pour terminer, appuyons sur Shift + Esc : PHPEdit a ramené le curseur à l'emplacement de la quickmark et y a collé le contenu du presse-papiers.

Il existe différentes quickmarks, identifiées par des couleurs distinctes :

- Bleue : Déposée par un keyboard template

- Blanche : Déposée par un déplacement dans le code

- Rouge : Déposée manuellement

Les trois quickmarks

IV-B-2 - Avis personnel

Les quickmarks sont une fonctionnalité très utile, mais qui demande un investissement conséquent (pour s'y habituer). Je pense que le gain occasionné vaut les efforts fournis.

Cela dit, c'est avec les keyboard templates que les quickmarks sont les plus utiles.

IV-C - Les keyboard templates

IV-C-1 - Présentation

Les gabarits de code vous permettent de saisir plus rapidement votre code non seulement en PHP, mais dans tous les langages connus de PHPEdit.

Ainsi, lorsque vous écrivez « switch » (notez l'espace), PHPEdit vous créé une structure switch, utilise le contenu du presse-papiers comme condition et dépose des quickmarks aux endroits clefs de la structure. Pour couronner le tout, il surligne la condition pour que vous puissiez aisément la remplacer si le contenu du presse papiers n'est pas adéquat.

Le gabarit du mot clef 'switch'

Bien sûr, le Code Insight permet de sélectionner un gabarit parmi les options disponibles. La liste est accessible à partir du raccourci Ctrl + J.

Choix commençant par 'c'

Pensez à modifier le gabarit du mot clef « class », car il est prévu pour une syntaxe PHP4 au lieu de PHP5.

PHPEdit vous propose des alias pour certains mots clefs. Ainsi, vous pouvez écrire « switch » ou bien « sw » afin de développer une structure switch.

Les alias du mot clef 'switch'

IV-C-2 - Avis personnel

L'utilisation des quickmarks est ingénieuse et, une fois l'habitude prise, vous gagnerez vraiment du temps.

N'hésitez pas à jeter un œil aux gabarits prédéfinis, voire à les modifier selon vos habitudes : F10 / Code Tools / Keyboard Templates.

IV-D - Le débogage

IV-D-1 - Lancer une session

Pour lancer une session de débogage simple, utilisez la touche F9 ou bien la flèche verte de la barre d'outils de PHPEdit.

DBG utilise l'exécutable de PHP pour exécuter votre script et vous retourner les erreurs de syntaxe à PHPEdit, qui vous permet de naviguer dans votre code de manière à les corriger.

Vous pouvez également lancer une session avec des paramètres GET à l'aide des touches Shift + F9.

IV-D-2 - Les points d'arrêt

Que serait un débogueur sans points d'arrêt ?

Un point d'arrêt est une marque que vous, développeur, posez dans votre script afin d'indiquer au débogueur qu'il doit faire une pause à cet endroit. Cela permet d'inspecter l'état des variables à cet endroit du code sans que tout le script soit exécuté et ainsi de vérifier que l'exécution suit un déroulement normal.

PHP DBG supporte cette fonctionnalité et PHPEdit est une très bonne interface. Par défaut, la touche F5 vous permet de poser ou d'enlever un point d'arrêt sur la ligne actuelle. Un point d'arrêt est marqué d'un cercle rouge dans la marge et toute la ligne de code est surlignée de cette même couleur.

Lors du lancement de la session de débogage, PHPEdit marque une pause à l'emplacement de chacun de vos points d'arrêt et vous indique dans la vue (workspace layout) « Debug » la valeur de chacune des variables du script à cet endroit précis. Vous pouvez également voir la liste des appels de fonctions (call stack), le journal de débogage (debugger log), etc.

En bref, DBG est un outil de statistiques de votre code.

IV-D-3 - Le profiler

En utilisant des points d'arrêt, vous pouvez « profiler » vos scripts, c'est-à-dire savoir quelles sont les portions qui demandent le plus de temps CPU. C'est quelque chose que vous pourriez faire à l'aide des ticks dans votre code PHP, mais l'IDE le fait pour vous… Cela vous évite de mélanger votre logique applicative avec la logique de test, ce qui n'est assurément pas un mal !

Lancer le profiler lors d'une session de débogage

Le profiler permet de savoir ce qui est exécuté dans vos scripts et, surtout, combien de temps PHP est resté sur chaque ligne. Trois classements sont proposés :

Par ordre alphabétique (à mon sens le moins utile)

Par contexte (par fonction/méthode)

Par module (par script)

Le temps présenté par le profiler n'est évidemment pas le temps réel que votre serveur en production passera à exécuter les mêmes portions de code : trop de paramètres entrent en ligne de compte. Cependant, les proportions représentées seront très similaires. C'est là-dessus qu'il faut vous concentrer.

IV-D-4 - Problèmes rencontrés

Session timeout expired

PHPEdit utilise DBG, un débogueur gratuit pour PHP. Par conséquent, il hérite de ses défauts : DBG semble malheureusement un peu chatouilleux si vous utilisez divers IDE.

J'ai été confronté à un message d'erreur « session timeout expired » : si vous l'obtenez, vérifiez la configuration décrite plus tôt.

Si vous utilisez le débogueur pour vérifier la syntaxe de votre script, il y a une solution plus simple : le vérificateur de syntaxe (un bouton « ABC » dans l'interface de PHPEdit). Vérifiez le bas de l'IDE pour obtenir les messages d'erreur. S'il y en a, vous pouvez cliquer droit sur l'icône pour en obtenir la liste.

Erreur de syntaxe

Limites du débogage avec DBG

Malheureusement (bis), DBG ne permet pas de déboguer vos scripts comme s'ils étaient exécutés sur votre serveur puisqu'il est impossible de définir des paramètres POST, SESSION ou COOKIE par exemple : seuls les paramètres GET peuvent être spécifiés. Une session de débogage ne correspond pas à une session de navigation de l'internaute, mais à un seul chargement d'un script (et des scripts inclus).

Il n'est pas non plus possible de simuler une charge, par exemple lancer une session de débogage permettant de voir le comportement du script quand plusieurs centaines d'utilisateurs se connectent à la fois. Cela permettrait de voir le profil des scripts en fonction du cache opcode, ce qui n'est pas pris en compte lors de sessions individuelles de débogage.

IV-D-5 - Avis personnel

Le débogage avec DBG semble n'être qu'au stade des balbutiements. Il est possible de spécifier des points d'arrêt et de faire toutes sortes de choses (notamment profiler), mais il n'est pas encore possible de tester un script en situation réelle (comme réagir à une action de l'utilisateur : $_POST, $_COOKIE et leurs congénères). Il est possible de simuler ces requêtes en tordant un peu notre logique applicative, mais, dès que la variable $_SESSION s'en mêle, il est préférable d'arrêter les bricolages.

Je me répète, et PHPEdit n'est d'ailleurs pas en cause, mais le débogage au moyen de DBG a encore du chemin à faire.

IV-E - Les autres outils…

PHPEdit propose d'autres extensions, tellement que cet article deviendrait inintéressant et bien trop long à lire.

Voici celles qui n'ont pas besoin de documentation extensive :

- Code Beautifier : Permet de refaire toute la mise en forme du code source ;

- Commentaires : Permet de commenter une fonction en quelques clics ;

- Générateur de documentation : Génère la documentation de votre projet à l'aide de phpDocumentor ;

- Rapport de tâches : Génère la liste de tâches de votre projet à partir des commentaires du code source (@todo) ;

- GExpert.org Grep : Recherche avancée (y compris à l'aide d'expressions rationnelles) dans un fichier ou un dossier ;

- GExpert.org Code Library : Bibliothèque d'extraits de code ;

- GExpert.org Clipboard History : Historique du presse-papiers.

V - Les plug-ins de PHPEdit

Ce qui fait qu'un logiciel est davantage un IDE qu'un éditeur est sa capacité à intervenir à d'autres étapes du développement que celle de l'écriture du code.

PHPEdit a fait beaucoup de chemin depuis ses premières versions. Il propose aujourd'hui des plug-ins permettant d'utiliser un système de contrôle de versions comme CVS ou Subversion, un moteur de gabarits du même style que la PHPLib nommé eZ publish, ainsi qu'un outil pour envoyer vos scripts sur un site Web en FTP.

Je crois avoir remarqué également la venue imminente d'un plugin de bases de données, ce qui sera extrêmement pratique lors du test et du débogage des projets.

Je mettrai cette section à jour au fur et à mesure que j'aurai eu l'occasion de tester convenablement les extensions.

V-A - FTP

V-A-1 - Publier vers un serveur FTP

J'ai déjà expliqué comment configurer les serveurs globaux dans PHPEdit. Nous allons maintenant voir qu'il est possible de configurer des serveurs FTP pour une solution particulière (ils seront donc invisibles des autres solutions), ce qui est très pratique si vous avez de nombreux projets et/ou solutions.

Cliquez droit sur le projet (ou dossier ou script) que vous souhaitez envoyer sur votre serveur Web par FTP, puis « FTP Publish… » : PHPEdit vous propose alors la liste des serveurs globaux et ceux de la solution, ainsi qu'un bouton pour configurer les serveurs de la solution.

Chaque solution hérite des serveurs globaux (mais pas l'inverse). Peut-être une prochaine version mettra-t-elle davantage en évidence cette distinction ? En attendant, comparez ces deux écrans (et je vous invite à tester tout cela par vous-mêmes) :

Serveurs globaux de l'application

Serveurs spécifiques à la solution

Après avoir sélectionné le serveur dans la liste déroulante, validez et observez le gestionnaire des tâches (par défaut situé dans le bas de l'IDE) opérer le téléchargement vers votre serveur FTP. Vous pouvez consulter les détails du transfert en double cliquant sur la tâche.

Au passage, vous pouvez noter la puissance de PHPEdit par rapport à la segmentation de la configuration. Ce que j'ai évoqué plus tôt comme une contrainte s'avère ici être un énorme avantage, puisque cela vous permet de configurer des serveurs FTP au niveau de l'application, de l'utilisateur système, de la solution ou même de mélanger ces deux dernières possibilités.

V-A-2 - Récupérer depuis un serveur FTP

PHPEdit ne vous permet pas uniquement de publier vos données, mais également de récupérer ce qui se trouve déjà sur votre serveur FTP.

Cliquez droit sur le projet que vous souhaitez récupérer puis « FTP Checkout… » : PHPEdit va télécharger le dossier FTP vers le répertoire correspondant de votre système.

Il n'est actuellement pas possible de « checkout » un simple fichier, seulement un projet ou un dossier. Je trouve que cela manque cruellement, surtout dans le cas de projets répartis entre plusieurs développeurs sans système de contrôle de version : il faut alors avoir recours à un logiciel de transfert FTP externe, ce qui est tout le contraire de l'objectif de l'existence de ce plug-in.

V-A-3 - Avis personnel

Je n'ai pas été en mesure de trouver un gestionnaire des connexions FTP actives. Dans certains cas, il serait utile de pouvoir fermer une connexion sans attendre le timeout et sans devoir fermer l'éditeur, puisque certains hébergeurs limitent le nombre de connexions simultanées par utilisateur.

VI - Conclusion

VI-A - Épilogue

À mon sens, PHPEdit est un très bon IDE.

Dans ses plus récentes versions, il a su pallier ses problèmes de plantages et, même s'il n'est pas d'une stabilité exemplaire, il permet néanmoins de développer sans craindre de perdre du temps.

Mieux, il propose de très bonnes solutions pour gagner du temps (affichage de l'aide sur la fonction utilisée, utilisation de gabarits de clavier et de marqueurs rapides, etc.) et chaque nouvelle version améliore les fonctionnalités existantes.

Enfin, des plug-ins sont constamment en développement pour aider au mieux le développeur. Couplé à sa solution wIT de rapport de bugs, PHPEdit est un environnement complet de travail en équipe.

C'est mon logiciel de choix depuis plusieurs années.

VI-B - Liens

Ressources internes :

- Comparatif « outils » : Les éditeurs de code, par Hugo Étiévant ;

- Test logiciel : L'éditeur WebExpert 6.50 de Visicom, par BWP-Necromance et Pierre-Baptiste Naigeon

- Test logiciel : PHPEclipse : Programmez librement pour le Web, par Jean-Pierre Grossglauser

- Tutoriel « serveurs » : Comment alterner entre plusieurs versions d'Apache et de PHP, par Guillaume Rossolini.

Ressources externes :

- Waterproof

- La communauté PHPEdit

- DBG