Llamados a Funciones de Usuario

Para llamar funciones de usuario desde una función interna, debe usar la función call_user_function().

call_user_function() devuelve SUCCESS en caso de éxito, y FAILURE si la función no pudo ser encontrada. ¡Debe chequear ese valor de retorno! Si devuelve SUCCESS, usted es responsable por la destrucción del valor tipo pval retval (o devolverlo como el valor de retorno de su función). Si devuelve FAILURE, el valor de retval será indefinido, y no debe tocarlo.

Todas las funciones internas que hacen llamados a funciones de usuario deben ser reentrantes. Entre otras cosas, esto quiere decir que no debe usar variables globales o estáticas.

call_user_function() recibe seis argumentos:

HashTable *tabla_de_funciones

Esta es la tabla asociativa en la que será buscada la función.

pval *objeto

Este es un apuntador a un objeto sobre el que es invocada la función. Debe ser NULL si es llamada una función global. Si no es NULL (es decir, apunta hacia un objeto), el argumento tabla_de_funciones es ignorado, y en su lugar se toma de la matriz asociativa del objeto. El objeto *puede* ser modificado por la función que es invocada sobre él (la función tendrá acceso sobre el objeto mediante $this). Si por alguna razón no desea que eso ocurra, envíe en su lugar una copia del objeto.

pval *nombre_funcion

El nombre de la función a llamar. Debe ser un pval de tipo IS_STRING cuyos miembros function_name.str.val y function_name.str.len se encuentren definidos con valores apropiados. El nombre_funcion es modificado por call_user_function() - es convertido a minúsculas. Si necesita conservar los caracteres originales, envíe una copia del nombre de función en su lugar.

pval *retval

Un apuntador a una estructura pval, en la cual es guardado el valor de retorno de la función invocada. La estructura debe ser reservada previamente - call_user_function() NO reserva memoria por sí sola.

int conteo_param

El número de parámetros que son pasados a la función.

pval *params[]

Una matriz de apuntadores a valores que serán pasados como argumentos a la función, el primer argumento ubicado en la posición 0, el segundo en la posición 1, etc. La matriz es una matriz de apuntadores a valores pval; Los apuntadores son enviados tal cual a la función, lo que quiere decir que si la función modifica sus argumentos, los valores originales son modificados (pasados por referencia). Si no desea esta clase de comportamiento, pase una copia en su lugar.

Hosting by: hurra.com
Generated: 2007-01-26 18:00:38