Manuel PHP
Précédent |  | Suivant

# php_stream_cast

(no version information, might be only in CVS)

php_stream_cast -- Convertit un flux en une autre forme, comme un FILE* ou une socket

## Description

int php_stream_cast ( php_stream * stream, int castas, void ** ret, int flags )

php_stream_cast() tente de convertir le flux stream en un autre ressource indiqué par castas. Si ret est NULL, le flux est interrogé pour savoir une telle conversoin est posible, sans effectuer réellemnt la conversion (mais certains état interne pourrait être changés dans ce cas). Si flags vaut `REPORT_ERRORS`, un message d'erreur apparaîtra si une erreur survient durant la conversion.

> Note : Cette fonction retourne `SUCCESS` en cas de réussite et `FAILURE` en cas d'échec. Soyez prévenu que vous devez faire une comparaison explicite avec `SUCCESS` ou `FAILURE` à cause des valeurs sous jacentes de ces constantes. Une simple comparaison d'expression booléenne ne sera pas interprétée comme vous le souhaitez.

Tableau 44-1. Types de ressources de castas

Valeur | Signification
--- | ---
PHP_STREAM_AS_STDIO | Un pointeur ANSI FILE* qui représente le flux
PHP_STREAM_AS_FD | Un pointeur de fichier de type POSIX qui représente le flux
PHP_STREAM_AS_SOCKETD | Un pointeur de socket réseau qui représente le flux

En plus des types de ressources basiques ci-dessus, le processus de conversion peut être modifié en utilisant les paramètres ci-dessous, ou bien en utilisant l'opérateur OR pour combiner le type de ressource avec une ou plusieurs des valeurs suivantes :

Tableau 44-2. Types de ressources pour castas

Valeur | Signification
--- | ---
PHP_STREAM_CAST_TRY_HARD | Essaie aussi fort que possible, même si c'est au prix de quelques ressources supplémentaires, que la conversion réussisse
PHP_STREAM_CAST_RELEASE | Informque l'API de flux que d'autre code (possible une bibliothèque tierce partie) sera responsable de la gestion des ressources de bas niveau. Cela fait que le flux stream sera fermé de telle façon à ce que le gestionnaire soit préservé et retourné dans le paramètre ret. Si la fonction réussit, le paramètre stream doit être considéré comme fermé, et inutilisable en l'état.

> Note : Si votre système supporte la fonction fopencookie() (les systèmes utilisant la bibliothèque glibc 2 ou plus récent), l'API de flux sera toujours capable de créer des pointeurs de fichiers de type ANSI FILE* pour tous les flux. Même si c'est extrêmement utile pour passer des flux PHP à des bibliothèque tierce partie, un tel système n'est pas portable. Il est demandé que vous considériez la portabilité e vos fonctions avant de diffuser votre extension. Si l'utilisation de fopencookie() n'est pas désirable, il est recommandé d'interroger le flux pour voir s'il supporte naturellement la conversion en FILE* en utilisant la fonction php_stream_is()

> Note : Si vous demandez une socket réseau à la place d'un FILE*, l'API de flux va utiliser la fonction fdopen() pour la créer pour vous. Soyez prévenu que faire cela risque de perdre les données qui ont été mises en buffer dans le flux, si vous mélanger des appels de l'API de flux et les appels standards ANSI.

Voir aussi php_stream_is() et php_stream_can_cast().

Précédent | Sommaire | Suivant
php_stream_make_seekable | Niveau supérieur | php_stream_can_cast