PHP et les Outils de Développement d’Apple
Apple fournit un ensemble performant d’outils de développement avec Mac OS X. Développés à l’origine par NeXT pour les programmeurs travaillant avec Objective-C, les outils ont depuis évolué vers une utilisation comprenant un large panel de langages sources, incluant Java, C++ et AppleScript. Le package des outils de développement de Mac OS X inclut aussi les fichiers d’en-tête du systême et un compilateur C, ce qui en fait une addition essentielle pour quiconque souhaite un environnement UNIX BSD complet. Il y a au coeur des outils de développement de Mac OS X un éditeur de texte en même temps qu’un IDE complet, Project Builder.
Bien que son utilisation se fasse principalement avec des applications construites dans les cadres Carbon et Cocoa, Project Builder est un excellent outil pour les développeurs Web travaillant dans des langages tels que PHP ou Perl. Associé avec une interface graphique Apple standard, il fournit aussi des raccourcis clavier de type emacs qui paraîtront familiers aux utilisateurs UNIX : des combinaisons de touches telles que Ctrl-A ou Ctrl-E peuvent être utilisées pour déplacer le curseur vers le début ou la fin d’une ligne. Sa syntaxe reconnaît les commentaires et les chaînes entre guillemets dans une variété de langages, rendant le code source plus facile à lire. Tout ceci est étroitement intégré avec CVS, un systême de gestion de logiciels communément utilisé dans la communauté de l’open source. Quand il s’agit de s’occuper d’un grand nombre de fichiers, Project Builder permet au développeur de classer ces fichiers en groupes pour une navigation plus aisée. Il offre de multiples fenêtres d’éditeur, des vues éclatées, et une facilité de recherche-et-remplacement multi-fichiers qui peut rechercher aussi bien des chaînes de caractères pleines que des expressions régulières.
Les autres outils du package de développement incluent GNU Autoconf, les deux versions BSD et GNU de make, et une application très utile appelée FileMerge, qui fournit une interface graphique à l’utilitaire UNIX diff. Project Builder utilise FileMerge pour montrer les différences entre deux versions d’un fichier et permet aux développeurs de fusionner les changements du recueil CVS dans une nouvelle version. Quelques uns des meilleurs éléments des Outils de Développement s’avèrent être peu utiles pour les scripts Web cependant, comme l’Interface Builder graphique et l’excellente interaction entre Project Builder et le débogueur gdb.
J’utilise régulièrement Project Builder et CVS pour créer et maintenir des applications PHP complexes avec des douzaines de fichiers sources. Dans cet article, j’illustrerai quelques uns des avantages de Project Builder et je montrerai quelques trucs que j’ai appris.
Obtenir les Outils de Développement
Au début des années 1990, la version développeur de NeXTSTEP était vendue pour $500 de plus que la version utilisateur standard. Vous pouvez aujourd’hui obtenir les Outils de Développement pour peu ou pas de coûts. Le CD des Outils de Développement est inclus avec la plupart des nouveaux Mac. Apple offre aussi le CD aux nouveaux membres de l’ Apple Developer Connection, et le vend à $20 sur le site Web des membres de l’ADC à http://connect.apple.com/. Si vous n’avez pas le CD, mais une bonne connection Internet, vous pouvez choisir de télécharger le package de développement du site de l’ADC ; c’est un téléchargement important, qui pèse près de 218MB.
Au moment de l’écriture de cet article, la version de décembre 2001 des Outils de Développement était la plus récente. Pour les gens qui ont Mac OS X version 10.1 ou plus, la plus ancienne version utilisable est celle de septembre 2001; celle d’avant (mai 2001) marche seulement sur l’OS X 10.0 original. (NdT : Peu de temps après cet article, les Outils de Développement ont été mis à jour en Décembre 2002).
Après l’installation des Outils de Développement, Project Builder devrait être disponible dans /Developer/Applications/, et vous devriez être capable de double-cliquer sur tout fichier ayant une extension .c pour que Project Builder l’ouvre. Vous pourriez aussi créer un nouveau fichier de code source C et l’ouvrir dans une fenêtre de Terminal (en utilisant la commande open) en tapant :
touch file.c open file.c
Quand vous ouvrez un simple fichier de cette manière, il apparaît dans l’éditeur de Project Builder. L’aide en ligne de Project Builder est disponible par la combinaison Commande-? . Vous utiliserez souvent Project Builder avec des groupes de fichiers, ou des projets, et pour voir toutes ses possibilités en action, vous devez créer un projet.
Créer un Projet
Pour que vous ayez un projet exemple sur lequel travailler, vous pouvez retirer un large projet PHP open source d’un recueil CVS et importer ensuite ses fichiers dans Project Builder. Pour cet exemple, j’ai choisi PEAR, une bibliothèque de classes PHP disponible sur http://pear.php.net, qui consiste en fait en presque 2000 fichiers. Il faut quelques commandes shell pour récupérer une copie de travail de PEAR. Vous devez d’abord initialiser la variable d’environnement CVSROOT . Si vous utilisez le shell bash, utilisez cette commande :
CVSROOT=:pserver:cvsread@cvs.php.net:/repository
Si vous utilisez tcsh, utilisez celle-ci :
setenv CVSROOT ":pserver:cvsread@cvs.php.net:/repository"
Vous pouvez alors retirer PEAR avec les commandes suivantes :
cvs login
[enter password: anonymous]
cvs checkout pear
La commande cvs checkout ira chercher le code PEAR du recueil. Lancez maintenant Project Builder et créez un nouveau projet, comme ceci :
- Allez dans File -> New Project
- Dans l’assistant de “New Project”, choisissez Empty Project puis cliquez Next
- Dans la zone Project Name, entrez PHP-pear
- Dans la zone Location, entrez le nom du répertoire où vous avez récupéré la source CVS puis cliquez Finish
A ce niveau, la fenêtre principale de Project Builder devrait apparaître. Sur la gauche, vous verrez la fenêtre File and Groups ; sur la droite, une fenêtre d’éditeur qui donne quelques notes de version. Au-dessus du texte vous verrez quatre boutons nommés Find, Build, Run, et Debug. Parmi eux, seul le bouton Find est utile aux développeurs Web ; les autres sont utilisés pour compiler et tester des applications écrites en C ou en Objective-C.
Vous pouvez ensuite importer tous les fichiers PEAR dans ce nouveau projet avec une seule commande.
- Allez dans Project -> Add Files
- Dans la colonne du grand répertoire pear , cliquez sur le listing du haut (Archive_Tar) et descendez la souris juqu’à ce que tous les fichiers soient surlignés. Puis cliquez sur Open.
- Dans l’affichage suivant qui apparaît et demande un “Reference Style”, choisissez Group Relative.
- Cliquez sur Add.
La référence de style “group relative” dit à Project Builder de créer une structure de projet qui imite la hiérarchie d’un répertoire, où chaque répertoire correspond à un groupe. C’est la seule manière pour Project Builder d’utiliser les groupes ; un petit projet C pourrait avoir un groupe pour les fichiers d’en-tête, un pour les fichiers sources, et un pour les exécutables, même si tous les fichiers sont dans un simple répertoire. (Pour plus d’informations sur la création et l’utilisation de groupes, voir le sujet Fichiers de l’aide de Project Builder.) Une fois que vous avez sélectionné Add, Project Builder montrera tous les dossiers du répertoire pear/ sur son côté gauche. Il verra automatiquement les répertoires CVS du projet et autorisera CVS. Chaque fois que vous révélez un groupe, une petite note CVS Status… apparaîtra dans le coin gauche du bas de la fenêtre de Project Builder indiquant qu’il envoie une requête au serveur CVS pour des mises à jour de chaque fichier du groupe.

Editer
La table ci-dessous montre quelques raccourcis clavier de Project Builder. Il se peut que ces clés ne soient pas listées dans le menu Edit, mais elles sont supportées par NSTextView de Cocoa, et sont donc disponibles dans presque toutes les applications Cocoa. Même un champ de texte d’une page Web affichée dans OmniWeb supporte les raccourcis clavier de type emacs comme Ctrl-A and Ctrl-E.
| Alt-Flèche de Gauche | Revient un mot en arrière |
| Alt-Flèche de Droite | Avance d’un mot |
| Ctrl-A | Va au début de la ligne |
| Ctrl-E | Va à la fin de la ligne |
| Commande-Flèche du Haut | Va en haut du fichier |
| Commande-Flèche du Bas | Va à la fin du fichier |
| Ctrl-H | Efface le caractère précédent |
| Ctrl-D | Efface le caractère suivant |
| Alt-Efface | Efface le mot précédent |
L’éditeur possède un nombre d’autres fonctions notables. Quand vous éditez un fichier, vous effectuez plusieurs niveaux de défaire et de refaire, avec les combinaisons de touches commande-z and commande-shift-z ; il est même possible de défaire les changements jusqu’au moment précédent celui où le fichier est sauvegardé. Quand vous avez besoin de voir deux fichiers en même temps, commande-” (commande-shift-guillemets) séparera la fenêtre d’éditeur en deux, et commande-’ (commande-apostrophe) refermera plus tard les deux éditeurs en un seul. Pour rechercher une chaîne dans l’éditeur courant, vous pouvez obtenir une boîte de dialogue chercher-et-remplacer standard avec commande-f. Il y a plus puissant cependant, c’est la fonction de Batch find concernant le projet dans son ensemble, disponible en sélectionnant le menu Find ou avec le raccourci clavier commande-shift-F. Dans la fenêtre vous pouvez alors chercher dans le projet complet ou même dans un sous-ensemble choisi de fichiers une simple chaîne de caractères ou une expression rationnelle complexe.
Comme je l’ai précedemment mentionné, l’un des traits les plus intéressants de Project Builder est son intégration avec CVS et FileMerge. Pour en voir un exemple, ouvrez l’une des listes du projet PEAR, faites quelques changements, et sauvegardez-les sur le disque. Puis ouvrez le menu CVS et sélectionnez Compare/Merge with latest revision. Project Builder lancera une commande cvs diff pour comparer le fichier avec la version du référentiel, et listera les différences dans FileMerge. Si vous étiez autorisé à effectuer des changements dans le référentiel, mais que vous ayez besoin de fusionner vos changements avec ceux d’un autre développeur, FileMerge vous permettrait de naviguer facilement parmi les changements en utilisant les touches Flèches Haut et Bas, puis de sélectionner l’une ou l’autre version pour le fichier fusionné avec les touches Droite ou Gauche.

De ce qu’on trouve dans un Projet
A ce niveau, il est intéressant de comprendre ce que Project Builder fait en coulisse. Fermez la fenêtre PEAR, quittez Project Builder, et regardez dans le répertoire où vous avez téléchargé les fichiers PEAR. Project Builder a créé un dossier, appelé PHP-pear.pbproj, qui contient deux fichiers, project.pbxproj et username.pbxuser. Le répertoire PHP-pear.pbproj est ce à quoi Mac OS X se réfère comme étant une enveloppe, un répertoire dont le contenu encapsule un document unique. Les deux fichiers pbxproj à l’intérieur sont tous deux des listes de propriété: des fichiers de texte Unicode contenant des données structurées. De nombreuses listes de propriété de Mac OS X sont des fichiers XML, mais ces deux derniers s’avèrent être encodés en un vieux format non-XML. Vous pouvez en fait regarder dans ces fichiers avec quelques outils un peu différents. Dans la fenêtre de Terminal où vous avez cherché à l’origine la source CVS, essayez ceci :
cd PHP-pear.pbproj
ls
open -a TextEdit project.pbxproj
open -a PropertyListEditor *.pbxuser
La fenêtre de TextEdit montre le texte brut du fichier de projet (vous pourriez facilement l’altérer, aussi faites attention de ne sauvegarder aucun changement). L’application PropertyListEditor vous permet de naviguer dans l’arborescence d’une liste de propriétés ou de la passer en format XML. Le contenu de ces fichiers peut être ténébreux, mais une chose est claire à leur propos : le fichier pbxproj encode la structure même du projet (ses fichiers et groupes) alors que le fichier pbxuser contient vos préférences personnelles et les coordinations de fenêtres. Cette distinction prend tout son sens si vous voulez partager le projet avec d’autres développeurs ; vous pouvez confier le répertoire pbproj et le fichier pbxproj à l’arbre CVS, mais vous ne pouvez confier le fichier pbxuser. Quand d’autres développeurs recouvreront le paquet pbproj de CVS et l’ouvriront, Project Builder créera silencieusement de nouveaux fichiers pbxuser pour eux.
Quelques Bizarreries
Project Builder a été construit initialement pour les développeurs mais possède de nombreux éléments qui seront utiles aux développeurs Web. Cependant, par cette utilisation en dehors de son domaine premier, on tend à trouver de petites gênes ici et là (On pourrait en appeler une partie des “bogues”, mais les développeurs s’adressent aussi à eux en tant que “feature creep”). Par exemple, de nombreux projets Web contiennent des fichiers de HTML plein, mais quand Project Builder voit un fichier avec une extension .html il tente quelques fois de faire un rendu HTML, comme il le fait pour son fichier de “release notes” (notes de mise à jour), plutôt que de vous laisser éditer la source HTML. Cependant, si vous créez le fichier HTML dans Project Builder même (en utilisant File — > New File), il semble que Project Builder l’ouvre pour l’édition plutôt que pour le renvoi.
Un autre problème des développeurs PHP concerne la coloration de syntaxe. En PHP, une chaîne délimitée par des apostrophes peut contenir des caractères guillemets littéraux. Ce qui suit est une ligne de code licite :
$anchor = ' <a target="right" href="';
Les guillemets à la fin de la chaîne dérangent le colorateur de syntaxe de Project Builder. Vous pouvez remettre le colorateur en piste en utilisant une deuxième paire de guillemets dans un commentaire de type shell, comme ceci:
$anchor = '<a target="right" href="'; #"
Conclusion
Mac OS X est mon environnement de prédilection pour le développement d’applications PHP et en Perl, d’abord parce que Project Builder bosse mieux que la plupart des éditeurs que je connais en ce qui concerne la navigation dans une importante collection de fichiers. Il me permet de saisir les interdépendances d’une grande collection de fichiers, et j’arrive toujours à trouver vite et facilement le code que je cherche. Avec Apache et PHP sur mon Mac OS X, le déboguage devient très facile. Et quand je décide de passer à du code en Java ou en C, je peux rester sur le même environnement et profiter de nombreux autres avantages de Project Builder.
La meilleure source d’information sur Project Builder est son aide en ligne. Apple dispose aussi d’une page Web à http://developer.apple.com/tools/projectbuilder/, et il y a une liste de discussion pour les utilisateurs de ce logiciels à http://lists.apple.com/.

Textes originaux en anglais sur O’Reilly : PHP with Apple’s Developer Tools par John David Duncan
Chargement
Commentaires récents