10.1.4 Référence des API communes de flux 
10.1 API de flux les auteurs d'extensions 
10 API PHP : 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
 
  | 
 
  10.1.4.16 php_stream_cast()Convertit un flux 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 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.
         
 |   
 
| 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 : 
      
 
| 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
 .
     
 |