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 :
|