php_stream_cast

(no version information, might be only in CVS)

php_stream_cast -- Convertir una secuencia a otra forma, como un FILE* o un socket

Descripción

int php_stream_cast ( php_stream * secuencia, int moldear_como, void ** ret, int banderas )

php_stream_cast() intenta convertir secuencia a un recurso indicado por moldear_como. Si ret es NULL, la secuencia es consultada para conocer si tal conversión es posible, sin efectuar realmente la conversión (sin embargo, algún estado interno de secuencias *puede* ser modificado en este caso). Si banderas es definido como REPORT_ERRORS, se mostrará un mensaje de error si hay un error durante la conversión.

Nota: Esta función devuelve SUCCESS en caso de tener éxito, o FAILURE si falla. Advierta que usted debe comparar explícitamente el valor de retorno con SUCCESS o FAILURE debido a los valores internos de éstas constantes. Una simple expresión booleana no será interpretada como usted puede esperar.

Tabla 1. Tipos de recurso para moldear_como

ValorSignificado
PHP_STREAM_AS_STDIOSolicita un FILE* ANSI que represente la secuencia
PHP_STREAM_AS_FDSolicita un descriptor de archivo POSIX que represente la secuencia
PHP_STREAM_AS_SOCKETDSolicita un descriptor de socket de red que represente la secuencia

Adicionalmente a los tipos de recurso básicos mencionados anteriormente, el proceso de conversión puede ser alterado mediante el uso de las siguientes banderas, al usar el operador OR para combinar el tipo de recurso con uno o más de los siguientes valores:

Tabla 2. Tipos de recurso para moldear_como

ValorSignificado
PHP_STREAM_CAST_TRY_HARDIntenta lo mejor posible, al precio de recursos adicionales, para asegurarse de que la conversión tenga éxito
PHP_STREAM_CAST_RELEASELe informa a la API de secuencias que otra fuente de código (posiblemente una biblioteca de algún tercero) será responsable de cerrar el recurso/gestor interno. Esto causa que la secuencia sea cerrada de forma tal que el gestor interno es conservado y devuelto en ret. Si esta función tiene éxito, la secuencia debe ser considerada cerrada y no debe ser usada más.

Nota: Si su sistema soporta el uso de fopencookie() (sistemas con glibc 2 o versiones posteriores), la API de secuencias será capaz siempre de sintetizar un apuntador FILE* ANSI sobre cualquier secuencia. Aunque esto es tremendamente útil para pasar cualquier secuencia PHP a cualquier biblioteca de terceros, tal comportamiento no es portable. Es necesario que considere las implicaciones de portabilidad antes de distribuir su extensión. Si la síntesis fopencookie no es deseable, debe consultar a la secuencia para ver si ésta soporta FILE* de forma natural mediante el uso de php_stream_is()

Nota: Si solicita una secuencia basada en sockets para un FILE*, la API de secuencias usará fdopen() para crearlo por usted. Advierta que hacer esto puede causar la pérdida de datos que fueran puestos en búfer en la capa de secuencias si usted entremezcla las llamadas de la API de secuencias con llamadas stdio ANSI.

Vea también php_stream_is() y php_stream_can_cast().

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