<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.stream.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.stream-filter-append.php',
    1 => 'stream_filter_append',
    2 => 'A&ntilde;ade un filtro a un flujo al final de la lista',
  ),
  'up' => 
  array (
    0 => 'ref.stream.php',
    1 => 'Funciones de Flujos',
  ),
  'prev' => 
  array (
    0 => 'function.stream-copy-to-stream.php',
    1 => 'stream_copy_to_stream',
  ),
  'next' => 
  array (
    0 => 'function.stream-filter-prepend.php',
    1 => 'stream_filter_prepend',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/stream/functions/stream-filter-append.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.stream-filter-append" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">stream_filter_append</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.3.0, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">stream_filter_append</span> &mdash; <span class="dc-title">Añade un filtro a un flujo al final de la lista</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.stream-filter-append-description">
  <h3 class="title">Descripción</h3>
   <div class="methodsynopsis dc-description">
    <span class="methodname"><strong>stream_filter_append</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$stream</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filter_name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$mode</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$params</code><span class="initializer"> = ?</span></span><br>): <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span></div>

   <p class="para rdfs-comment">
    <span class="function"><strong>stream_filter_append()</strong></span> añade el filtro
    <code class="parameter">filter_name</code> a la lista de filtros adjuntos al
    flujo <code class="parameter">stream</code>.
   </p>
  </div>


  <div class="refsect1 parameters" id="refsect1-function.stream-filter-append-parameters">
   <h3 class="title">Parámetros</h3>
   <p class="para">
    <dl>
     
      <dt><code class="parameter">stream</code></dt>
      <dd>
       <p class="para">
       El flujo de destino.
      </p>
     </dd>
    
    
     <dt><code class="parameter">filter_name</code></dt>
     <dd>
      <p class="para">
       El nombre del filtro.
      </p>
     </dd>
    
    
     <dt><code class="parameter">mode</code></dt>
     <dd>
      <p class="para">
       Por omisión, <span class="function"><strong>stream_filter_append()</strong></span> añadirá
       el filtro a la lista de filtros de lectura si el fichero se abrió
       en modo lectura (<code class="literal">r</code> y/o <code class="literal">+</code>). El
       filtro también se adjuntará a la lista de filtros de escritura
       si el fichero se abrió en modo escritura (<code class="literal">w</code>,
       <code class="literal">a</code> y/o <code class="literal">+</code>).
       <strong><code><a href="stream.constants.php#constant.stream-filter-read">STREAM_FILTER_READ</a></code></strong>,
       <strong><code><a href="stream.constants.php#constant.stream-filter-write">STREAM_FILTER_WRITE</a></code></strong>, y/o
       <strong><code><a href="stream.constants.php#constant.stream-filter-all">STREAM_FILTER_ALL</a></code></strong> pueden también ser utilizadas
       en el parámetro <code class="parameter">mode</code> para controlar
       este comportamiento.
      </p>
     </dd>
    
    
     <dt><code class="parameter">params</code></dt>
     <dd>
      <p class="para">
       Este filtro se añadirá con los parámetros
       <code class="parameter">params</code> al <em>final</em> de
       la lista de filtros, y será llamado al final de las
       operaciones de filtros. Para añadir un filtro al principio
       de la lista, utilice la función
       <span class="function"><a href="function.stream-filter-prepend.php" class="function">stream_filter_prepend()</a></span>.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.stream-filter-append-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve un recurso en caso de éxito, o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
   El recurso puede ser utilizado para referirse a la instancia de este filtro
   durante una llamada a la función <span class="function"><a href="function.stream-filter-remove.php" class="function">stream_filter_remove()</a></span>.
  </p>
  <p class="para">
   <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> es devuelto si <code class="parameter">stream</code> no es un recurso
   o si <code class="parameter">filter_name</code> no puede ser alcanzado.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.stream-filter-append-examples">
  <h3 class="title">Ejemplos</h3>
    <p class="para">
     <div class="example" id="example-1">
      <p><strong>Ejemplo #1 Controlar la aplicación de los filtros</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Apertura de un fichero de prueba en modo lectura/escritura<br /></span><span style="color: #0000BB">$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'test.txt'</span><span style="color: #007700">, </span><span style="color: #DD0000">'w+'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Se aplica el filtro ROT13 al flujo de escritura, pero no al<br /> * de lectura */<br /></span><span style="color: #0000BB">stream_filter_append</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #DD0000">"string.rot13"</span><span style="color: #007700">, </span><span style="color: #0000BB">STREAM_FILTER_WRITE</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Se añade una simple cadena al fichero, será<br /> * transformada por ROT13 al escribir */<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #DD0000">"Ceci est un test\n"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Se vuelve al principio del fichero */<br /></span><span style="color: #0000BB">rewind</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Se lee el contenido del fichero.<br /> * Si se aplicara el filtro ROT13 tendríamos la<br /> * cadena en su estado original */<br /></span><span style="color: #0000BB">fpassthru</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Resultado esperado<br />   ----------------<br /><br />Guvf vf n grfg<br /><br />*/<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.stream-filter-append-notes">
  <h3 class="title">Notas</h3>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <strong>Cuando se utilizan filtros personalizados</strong><br />
   <span class="simpara">
    <span class="function"><strong>stream_register_filter()</strong></span> debe ser llamada antes
    de <span class="function"><strong>stream_filter_append()</strong></span> para registrar el filtro
    bajo el nombre de <code class="parameter">filter_name</code>.
   </span>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Los datos del flujo (locales y remotos) son devueltos en fragmentos,
    los datos no procesados se conservan en el búfer interno.
    Cuando un nuevo filtro es añadido al final del flujo, los datos en
    el búfer interno son pasados al nuevo filtro en ese momento.
    Esto es diferente del comportamiento de
    <span class="function"><a href="function.stream-filter-prepend.php" class="function">stream_filter_prepend()</a></span>.
   </span>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Cuando un filtro es añadido para lectura y escritura, se crean dos instancias
    del filtro. <span class="function"><a href="function.stream-filter-prepend.php" class="function">stream_filter_prepend()</a></span> debe ser
    llamada dos veces con <strong><code><a href="stream.constants.php#constant.stream-filter-read">STREAM_FILTER_READ</a></code></strong> y
    <strong><code><a href="stream.constants.php#constant.stream-filter-write">STREAM_FILTER_WRITE</a></code></strong> para obtener los recursos de los filtros.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.stream-filter-append-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.stream-filter-register.php" class="function" rel="rdfs-seeAlso">stream_filter_register()</a> - Registra un filtro de flujo</span></li>
   <li><span class="function"><a href="function.stream-filter-prepend.php" class="function" rel="rdfs-seeAlso">stream_filter_prepend()</a> - Adjunta un filtro a un flujo al inicio de la lista</span></li>
   <li><span class="function"><a href="function.stream-get-filters.php" class="function" rel="rdfs-seeAlso">stream_get_filters()</a> - Lista los filtros registrados</span></li>
  </ul>
 </div>

</div><?php manual_footer($setup); ?>