Générer une nouvelle extension C pour PHP

Et voilà, afin de repartir sur de bonnes bases pour le projet YATS, je vais le faire de manière propre. Comment ? Tout simplement en générant la base du code via les outils PHP, puis en le complétant avec le code de YATS.

Cet article expliquera donc la génération de la structure d’une extension C pour PHP.


Tout d’abord, on va localiser le script “ext_skel”

user@machine:~/workspace/yats$ locate ext_skel
/usr/share/php5/ext_skel</pre>

Après cela, on va lancer ce script avec --help pour connaitre les arguments possibles :
<pre class="prettyprint lang-bsh">user@machine:~/workspace/yats$ /usr/share/php5/ext_skel --help
/usr/share/php5/ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
           [--skel=dir] [--full-xml] [--no-help]

  --extname=module   module is the name of your extension
  --proto=file       file contains prototypes of functions to create
  --stubs=file       generate only function stubs in file
  --xml              generate xml documentation to be added to phpdoc-cvs
  --skel=dir         path to the skeleton directory
  --full-xml         generate xml documentation for a self-contained extension
                     (not yet implemented)
  --no-help          don't try to be nice and create comments in the code
                     and helper functions to test if the module compiled

Pour YATS, nous allons donc générer la structure initiale :

user@machine:~/workspace$ /usr/share/php5/ext_skel --extname=yats --skel=/usr/share/php5/skeleton/
Creating directory yats
Creating basic files: config.m4 config.w32 .cvsignore yats.c php_yats.h CREDITS EXPERIMENTAL tests/001.phpt yats.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/yats/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-yats
5.  $ make
6.  $ ./php -f ext/yats/yats.php
7.  $ vi ext/yats/yats.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/yats/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.

Ensuite, on édite le fichier M4.

user@machine:~/workspace$ cd yats
user@machine:~/workspace$ vi config.m4

on décommente les lignes

PHP_ARG_ENABLE(yats, whether to enable yats support,
Make sure that the comment is aligned:
[  --enable-yats           Enable yats support]

Après cela, on finalise en recommençant une compilation comme décrit dans l’article “Compiler une extension PHP”.

Pour rappel, on lance ces commandes :

  • $ phpize
  • $ ./configure
  • $ sudo make
  • $ phpize –clean

Bonne séance coding !

Cet article Générer une nouvelle extension C pour PHP est apparu en premier sur RootsLabs.

Vus : 245
Publié par Progi1984 : 78