(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
Valor | Significado |
---|
PHP_STREAM_AS_STDIO | Solicita un FILE* ANSI que represente la
secuencia |
PHP_STREAM_AS_FD | Solicita un descriptor de archivo POSIX que represente
la secuencia |
PHP_STREAM_AS_SOCKETD | Solicita 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
Valor | Significado |
---|
PHP_STREAM_CAST_TRY_HARD | Intenta lo mejor posible, al precio de recursos
adicionales, para asegurarse de que la conversión
tenga éxito |
PHP_STREAM_CAST_RELEASE | Le 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().