Depuis la version 4, PHP intègre un système de construction automatique vraiment flexible. Tous les modules résident dans un sous-dossier du dossier ext. En plus de ses propres sources, chaque module est constitué d'un fichier config.m4, pour la configuration de l'extension. (pour une exemple, lisez http://www.gnu.org/software/m4/manual/m4.html)
Tous ces fichiers souches sont générés automatiqement, avec les fichiers .cvsignore, par un petit script shell nommé ext_skel qui réside dans le dossier ext. Il prend comme argument le nom du module que vous voulez créer. Le script shell crée alors un dossier portant le nom du module, et y place les fchiers souches appropriés.
Etapes par étapes, le processus ressemble à ceci :
:~/cvs/php4/ext:> ./ext_skel --extname=my_module Creating directory my_module Creating basic files: config.m4 .cvsignore my_module.c php_my_module.h CREDITS EXPERIMENTAL tests/001.phpt my_module.php [done]. To use your new extension, you will have to execute the following steps: 1. $ cd .. 2. $ vi ext/my_module/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-my_module 5. $ make 6. $ ./php -f ext/my_module/my_module.php 7. $ vi ext/my_module/my_module.c 8. $ make Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and step 6 confirms that your module is compiled into PHP. Then, start writing code and repeat the last two steps as often as necessary. |
Le fichier config.m4 par défaut montré dans Exemple 46-1 est un peu plus complexe :
Si vous n'êtes pas familier avec les fichiers M4 (maintenant, c'est peut être le bon moment pour l'être), ils peuvent êtreun peu confus de prime abord ; mais ils sont finalement simples ;)
Note : Tout ce qui est préfixé par dnl est traité en tant que commentaire et n'est pas analysé.
Le fichier config.m4 est responsable de l'analyse des options de la ligne de commande passée au fichier configure au moment de la configuration. Cela signifie qu'il doit vérifier l'existance des fichiers externes requis et réalise des tâches similaires à la configuration et la préparation à l'exécution.
Le fichier par défaut crée deux directives de configuration dans le script configure : --with-my_module et --enable-my_module. Utilisation de la première option lorsqu'il y a référence à des fichiers externes (comme la directive --with-apache qui réfère au dossier Apache). Utilisation de la seconde option lorsque l'utilisateur a simplement décidé d'activer votre extension. Suivant l'option que vous utilisez, vous devez décommenter l'autre, et pas seulement celle choisie ; par exemple, si vous utilisez --enable-my_module, vous devez supprimer le support de --with-my_module et vice-versa.
Par défaut, le fichier config.m4 créé par ext_skel accepte les deux directives et active automatiquement votre extension. L'activation de l'extension est faite en utilisant la macro PHP_EXTENSION. Pour modifier le comportement par défaut pour inclure votre module dans le binaire PHP lorsque l'utilisateur le désire (en spécifiant explicitement --enable-my_module ou --with-my_module), modifiez le test $PHP_MY_MODULE en == "yes":
if test "$PHP_MY_MODULE" == "yes"; then dnl Action.. PHP_EXTENSION(my_module, $ext_shared) fi |
Note :Assurez-vous d'exécuter buildconf à chaque fois que vous modifiez config.m4!
Nous entrerons plus dans les détails des macros M4 disponibles pour vos scripts de configuration plus loin dans ce chapitre. Pour le moment, nous utiliserons simplement les fichiers par défaut.
Précédent | Sommaire | Suivant |
Source Layout | Niveau supérieur | Creating Extensions |