Bloc-note d'un développeur web
Dans : Développement Web
30 août 2009Une des tâches les plus rébarbatives est bien l’ajout d’une licence d’utilisation à tous les fichiers sources de ses projets. Ajoutez à cela que, comme tout bon développeur, je n’aime pas répéter la même opération plus de deux fois, je me suis codé l’an dernier une tâche Phing pour automatiser cela1 : Header.
Phing Header se découpe en deux tâches : HeaderTask et HeaderPhpTask.
La tâche HeaderTask permet d’ajouter un en-tête à n’importe quel fichier. Elle peut être comparée au paramètre imbriqué header de la tâche Concat d’Ant2.
Plus spécifique, la tâche HeaderPhpTask est à utiliser pour ajouter un en-tête aux fichiers PHP. Le tag PHP <?php précédera ainsi le contenu à concaténer ; le premier tag PHP étant supprimé.
Vous pouvez également cloner le projet depuis son dépôt GitHub.
Si vous suivez la documentation de Phing, il vous faut copier le répertoire3 header contenu dans l’archive dans le dossier classes/phing/tasks/my de votre installation Phing.
Personnellement je préfère utiliser un chemin externe à l’installation de base de Phing. Pour ce faire, il suffit de créer l’arborescence phing/tasks/my à l’endroit désiré (par exemple /Library/WebServer/share/php) et de déclarer ce dernier via la propriété include_path de votre fichier php.ini. Ce qui nous donne ici :
include_path = ".:/Library/WebServer/share/php:/usr/local/php5/lib/php"
et l’arborescence suivante :
/Library/WebServer/share/php/
`-- phing/
`-- tasks/
`-- my/
`-- header/
|-- HeaderPhpTask.php
`-- HeaderTask.phpVous devrez déclarer ces nouvelles tâches à l’aide de la tâche Taskdef dans vos fichiers de build. Par exemple :
<taskdef name="header" classname="phing.tasks.my.header.HeaderTask" />Les tâches HeaderTask et HeaderPhpTask se partagent la liste d’attributs qui suit :
| Nom | Type | Description | Defaut | Requis |
|---|---|---|---|---|
| file | String | Le chemin du fichier en-tête à charger. | n/a | Oui |
| eol | String | Préciser le caractère de fin de ligne. | PHP_EOL |
Non |
| preservelastmodified | Boolean | Conserver la date de dernière modification de tous les fichiers. | false | Non |
| failonerror | Boolean | Stopper le processus à la première erreur survenue. | true | Non |
| verbose | Boolean | Activer le mode verbeu. | false | Non |
| encoding | String | Préciser l’encodage du fichier en-tête. | UTF-8 | Non |
| toencoding | String | Préciser l’encodage des fichiers de destination. | UTF-8 | Non |
La valeur par défaut est dépendante de la plateforme utilisée. Pour les système Unix, le caractère de fin de ligne par défaut est LF. Pour les systèmes de types DOS (incluant Windows), il s’agit de CRLF. Enfin, CR est la caractère utilisé par défaut sur les systèmes Mac OS.
<!-- load the header php task --> <taskdef name="phpheader" classname="phing.tasks.my.header.HeaderPhpTask" /> <phpheader file="${project.basedir}/LICENSE" tofile="${project.basedir}/build/foo.php"/> </phpheader>
<!-- load the header php task --> <taskdef name="phpheader" classname="phing.tasks.my.header.HeaderPhpTask" /> <phpheader file="${project.basedir}/LICENSE"> <fileset dir="${project.basedir}/build"> <include name="**/*.php" /> <exclude name="**/foo*.php" /> </fileset> </phpheader>
<!-- load the header task --> <taskdef name="header" classname="phing.tasks.my.header.HeaderTask" /> <header file="${project.basedir}/LICENSE" encoding="ISO-8859-1" tofile="${project.basedir}/build/foo.txt" />
Copyright (C) 2008 Mehdi Kabab, distribué sous licence LGPL version 3 ou supérieure.
Fonctionnalités en attente de développement.
nous travaillons par conséquent sur des projets PHP. Cependant, la tâche est utilisable pour tout type de fichier non binaire. ↩
la tâche Concat n’est malheureusement pas encore disponible dans Phing. ↩
ou directement les fichiers HeaderTask.php et HeaderPhpTask.php. Il vous suffira d’adapter en conséquence le chemin d’accès lors de leur déclaration via taskdef. ↩