9.1.4 Référence des API communes de flôts
9.1 API de flôts les auteurs d'extensions
9 PHP API: Interface pour les extensions
Manuel PHP
. php_stream_stat_path . php_stream_stat . php_stream_open_wrapper . php_stream_read . php_stream_write . php_stream_eof . php_stream_getc . php_stream_gets . php_stream_close . php_stream_flush . php_stream_seek . php_stream_tell . php_stream_copy_to_stream . php_stream_copy_to_mem . php_stream_make_seekable ->php_stream_cast . php_stream_can_cast . php_stream_is_persistent . php_stream_is . php_stream_passthru . php_register_url_stream_wrapper . php_unregister_url_stream_wrapper . php_stream_open_wrapper_ex . php_stream_open_wrapper_as_file . php_stream_filter_register_factory . php_stream_filter_unregister_factory
|
9.1.4.16 php_stream_cast()Convertit un flôt en une autre forme, comme un FILE* ou une socket[ Exemples avec hp_stream_cast ] CVS uniquement
int
php_stream_cast (
php_stream *
stream
,
int
castas
,
void **
ret
,
int
flags
)
php_stream_cast
tente de convertir le flôt
stream
en un autre ressource indiqué par
castas
.
Si
ret
est NULL, le flôt 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.
|
Valeur |
Signification |
PHP_STREAM_AS_STDIO |
Un pointeur ANSI FILE* qui représente le flôt |
PHP_STREAM_AS_FD |
Un pointeur de fichier de type POSIX qui représente le flôt |
PHP_STREAM_AS_SOCKETD |
Un pointeur de socket réseau qui représente le flôt |
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 :
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 flôt que d'autre code (possible une librairie tierce
partie) sera responsable de la gestion des ressources de bas niveau. Cela fait que
le flôt
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 librairie glibc 2 ou plus récent), l'API de flôt sera toujours
capable de créer des pointeurs de fichiers de type ANSI FILE* pour tous les flôts.
Même si c'est extrêmement utile pour passer des flôts PHP à des
librairie 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 flôt pour voir si 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 flôts
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 flôt, si vous mélanger des appels de
l'API de flôt et les appels standards ANSI.
|
Voir aussi
php_stream_is
et
php_stream_can_cast
.
|