Services webmasters
Partenaires
Jeux concours gratuits
 
Source Layout
<<<
Le système de squelette automatique de PHP Créer une extension
>>>

8 Développer PHP 4.0
 Manuel PHP

Introduction
Possibilités d'extension
Source Layout
->Le système de squelette automatique de PHP
Créer une extension
Utiliser des extensions
Résolution de problèmes
Présentation des sources
Gestion des arguments
Créer des variables
Duplique le contenu d'une variable : le bâtisseur de copie.
Retourner des valeurs
Afficher des informations
Fonctions de démarrage et d'extinction
Appeler des fonctions utilisateurs
Support du fichier d'initialisation File Support
Par où continuer?
Référence : quelques macros de configuration
API Macros

8.4 Le système de squelette automatique de PHP

PHP 4 dispose d'un système de squelette automatique très souple. Tous les modules sont placés dans un sous-dossier du dossier ext . En plus de ses propres sources, chaque module est constitué d'un fichier config.m4, qui sert à la configuration des extensions (par exemple, consultez http://www.gnu.org/manual/m4/html_mono/m4.php ).

Tout ces fichiers sont générés automatiquement, ainsi que le fichier .cvsignore , par un script shell appelé ext_skel qui est installé dans le dossier ext . En argument, il prend le nom du module à créer. Le script va alors bâtir un dossier complet, du même nom.

Etape par étape, voici le processus :
:~/cvs/php4/ext:> ./ext_skel --extname=mon_module
Creating directory mon_module
Creating basic files: config.m4 .cvsignore mon_module.c php_mon_module.h CREDITS EXPERIMENTAL tests/001.phpt mon_module.php [done].
Pour utiliser votre nouvelle extension, il suffit d'exécuter les étapes suivantes :
1. $ cd ..
2. $ vi ext/mon_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
Recommencez les étapes de 3 à 6 jusqu'à ce que vous soyez satisfait par votre fichier ext/my_module/config.m4 et l'étape 6 confirmera que votre module est compilé dans PHP. Maintenant, commencez à écrire le code de votre extensions, et répétez le processus aussi souvent que nécessaire.

Ces instructions crée les fichies sus-cités. Pour inclure le module dans le processus de configuration automatique et de compilation, vous devez exécutuer le script buildconf , qui génère le script configure en fouillant le dossier ext , pour y inclure tous les fichiers config.m4 qu'on y trouve.

Le fichier par défaut config.m4 qui sert d'illustration, Le fichier config.m4 par défaut est un peu plu complexe :

Si vous n'êtes pas familier avec les fichiers M4, cela peut paraître un peu désorientant à première vue. Il serait certaiment utile que vous vous y mettiez. Mais en fait, c'est très facile :

Note : Tout ce qui est préfixé par dnl est un commentaire, et ne sera pas utilisé.

Le fichier config.m4 est responsable de l'analyse des options de ligne de commande passé à configure , lors de la configuration. Cela signifie qu'il doit faire les vérifications de présence des fichiers externes, les configurations et les mises en place requises.

Le fichier config.m4 crée deux directives dans le script principal : --with-mon_module et --enable-mon_module . Utilisez la première option pour faire référence à des fichiers externes (comme par exemple --with-apache qui fait référence au dossier Apache). Utilisez la seconde option si l'utilisateur n'a qu'a choisir d'activer ou pas l'extension. Indépendamment de l'option de vous choisissez, vous devez mettre en commentaire l'autre, qui est inutile. Par exemple, si vous choisissez --enable-mon_module , vous devez enlever le support pour --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 fait en utilisant la macro PHP_EXTENSION . Pour changer ce comportement par défaut, et le remplacer par l'inclusion sur demande explicite (en utilisant --enable-mon_module ou --with-mon_module ), changez le test de $PHP_MY_MODULE avec == "yes" :


if test "$PHP_MY_MODULE" == "yes"; then dnl
    Action.. PHP_EXTENSION(mon_module, $ext_shared)
    fi
. Cela vous imposera d'utiliser l'option --enable-mon_module à chaque vois que vous reconfigurerez et recompilerez PHP.

Note: Assurez vous de bien exécuter buildconf à chaque fois que vous changez config.m4 !

Nous nous plongerons plus profondément dans les macros M4 plus loin. Pour le momnent, les fichiers par défaut font très bien l'affaire.

Sommaire :

<< Le système de squelette automatique de PHP >>
Source Layout Développer PHP 4.0 Créer une extension
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -