Cómo utilizar el lenguaje C para desarrollar una biblioteca de extensiones PHP en la plataforma Windows
Función funcional: PHP enfrenta el número simbólico de números enteros. Su implementación interna es en realidad larga y sin signo. En una máquina de 32 bits, PHP puede representar el número entero 2^31. -1. La aplicación general toca 2^31-1, el número en 2^32 se puede expresar como una cadena. Se expresa en int_ext mixto (cadena en). se devuelve el número entero y se devuelve la cadena.
Pasos para publicar la extensión: (primero debe cargar el código fuente de PHP y cargar php-5.3.14)
1 Construya el archivo extendido esqueleto
2 Construye el esqueleto extendido
3 Construye el esqueleto extendido
p>4 Construye un esqueleto extendido
5 Construye un esqueleto extendido esqueleto
6 Construir un esqueleto extendido 3.14)
1 Construir un esqueleto extendido
[plain] ver Plaincopyprint?
01.cd php-5.3.14/ text
02.../ext_skel --extname=int_ext
cd php-5.3.14/ext
./ext_skel --extname=int_ext
2 Modificar parámetros de compilación
[plain]¿Ver Plaincopyprint?
01.cd php-5.3.14/ext/int_ext
02.vi config.m4
cd php-5.3.14/ext/int_ext
vi config.m4 drop PHP_ARG_ENABLE(int_ext, si se habilita el soporte int_ext
[ --enable-int_ext habilita el soporte int_ext]) Modificado dos líneas antes de dnl:
[plain] ¿ver Plaincopyprint?
01.1.dnl; de lo contrario, use enable:
02.2. php_arg_enable(int_ext, si se habilita la compatibilidad con int_ext,
02.2. para habilitar la compatibilidad con int_ext,
02.2 Si se habilita la compatibilidad con int_ext,
03.3 dnl garantiza que los comentarios estén alineados:
04.4.[dnl, en caso contrario, utilice enable. :
2. PHP_ARG_ENABLE(int_ext, si se habilita la compatibilidad con int_ext,
3. dnl garantiza que los comentarios estén alineados:
4.[--enable- int_ext habilita la compatibilidad con int_ext]) p>
3 Escribir código C
[plain]¿Ver Plaincopyprint?
01.cd php-5.3.14/ext/ int_ext
02.vi php_int_ext.h
03.
cd php-5.3.14/ext/int_ext
vi php_int_ext.h
# PHP_FUNCTION (confirm_int_ext_compiled); frente a nueva línea PHP_FUNCTION(int_ext);
cd php-5.3.14/ext/int_ext
vi php_int_ext.h p>
# PHP_FUNCTION( confirm_int_ext_compiled); nueva línea PHP_FUNCTION(i);
nt_ext);[plain] ver Plaincopyprint?
01.cd php-5.3.14/ext/int_ext
02.vi int_ext.c
03. #PHP_FE(confirm_int_ext_compiled, NULL) face add PHP_FE( int_ext, NULL) agregado:
04.1. zend_function_entry int_ext_functions[] = {
05.2.PHP_FE(confirm_int_ext_compiled, NULL) /* Usar Para realizar pruebas, se eliminará más adelante. */
03.#PHP_FE(confirm_int_ext_compiled, NULL) se agrega al frente de int_ext y se elimina más tarde. */
06.3.PHP_FE(int_ext, NULL) /* Para pruebas, se eliminará más adelante. */
07.4.{null, null, null}/* Debe ser la última línea en int_ext_functions[] */
07.3.PHP_FE(confirm_int_ext_compiled, NULL) /* Usado para Pruebe y elimine más tarde. funciones[] */
08.5.};
cd php-5.3.14/ext/int_ext
vi int_ext.c
#PHP_FE(confirm_int_ext_compiled, NULL) Agregar PHP_FE a la cara.(int_ext, NULL) Agregar:
1. zend_function_entry int_ext_functions[] = {
2. /* Usado para pruebas, eliminado más tarde. */