https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Fluxos&feed=atom&action=historyCurso POO PHP Fluxos - Historial de revisiones2024-03-29T13:38:53ZHistorial de revisiones de esta página en el wikiMediaWiki 1.36.2https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Fluxos&diff=36362&oldid=prevVlourido: /* Fluxos */2013-07-15T16:07:57Z<p><span dir="auto"><span class="autocomment">Fluxos</span></span></p>
<p><b>Página nueva</b></p><div>== Fluxos ==<br />
<br />
Os fluxos son un xeito de xeralizar certas operacións comúns aos ficheiros e aos recursos de rede, entre outros. En PHP, os fluxos identifícanse por variables de tipo [http://es1.php.net/manual/es/language.types.resource.php resource]. Por exemplo, as funcións [http://docs.php.net/manual/es/function.file.php file] e [http://docs.php.net/manual/es/function.file-get-contents.php file_get_contents] empregan fluxos para traballar co sistema de ficheiros. E a función [http://docs.php.net/manual/es/function.fopen.php fopen] abre un fluxo e devolve o recurso asociado ao mesmo, que podemos empregar máis adiante no resto de operacións sobre o fluxo.<br />
<br />
As funcións que traballan con fluxos operan de xeito distinto según sexa o tipo de recurso ao que se accede (por exemplo, un ficheiro local ou un ficheiro remoto mediante HTTP). Aos distintos tipos de recursos soportados por PHP chámaselles [http://www.php.net/manual/es/wrappers.php envolturas]. PHP soporta unha serie de envolturas base como <nowiki>http://</nowiki>, file:// ou ogg://.<br />
<br />
PHP inclúe un amplo conxunto de [http://es1.php.net/manual/es/ref.stream.php funcións para traballar con fluxos].<br />
<br />
=== Contexto ===<br />
<br />
PHP tamén permite especificar un contexto para os fluxos. No contexto figuran o conxunto de opcións específicas para unha envoltura determinada. Por exemplo, ao abrir un fluxo a un recurso web empregando o protocolo HTTP, podemos especificar como contexto o método a empregar (GET) ou algún encabezado específico como "Cookie". Isto faise creando o contexto coa función '''[http://es1.php.net/manual/es/function.stream-context-create.php stream_context_create]''' a partir dun array.<br />
<br />
<source lang="php"><br />
$opcions = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: es\r\n"."Cookie: usuario=Victor\r\n"<br />
)<br />
);<br />
$contexto = stream_context_create($opcions);<br />
<br />
// Envía unha petición HTTP a www.iessanclemente.net coas cabeceiras adicionais<br />
$fich = fopen('www.iessanclemente.net', 'r', false, $contexto);<br />
</source><br />
<br />
Do mesmo xeito, unha vez que temos un fluxo aberto podemos empregar a función '''[http://es1.php.net/manual/es/function.stream-get-contents.php stream_get_contents]''' para obter o seu contido en forma de cadea, e a función '''[http://es1.php.net/manual/es/function.stream-get-meta-data.php stream_get_meta_data]''' para recuperar información adicional acerca do fluxo, como as cabeceiras HTTP se é o caso.<br />
<br />
<source lang="php"><br />
$fich = fopen("http://www.iessanclemente.net/", "rb");<br />
echo var_dump(stream_get_meta_data($fich));<br />
</source><br />
<br />
=== Características avanzadas dos fluxos ===<br />
<br />
É posible definir [http://es1.php.net/manual/es/stream.filters.php filtros] sobre os fluxos. Os filtros son operacións que se levan a cabo sobre a información que se le ou escribe nun fluxo. Para rexistrar un filtro emprégase a función [http://es1.php.net/manual/es/function.stream-filter-register.php stream_filter_register].<br />
<br />
Pódese incluso crear un envoltorio personalizado para empregar fluxos como método de acceso a calquera información que precisemos. PHP define a clase ficticia [http://es1.php.net/manual/es/class.streamwrapper.php streamWrapper] que contén a lista dos métodos que deberían figurar nunha clase para que poida traballar como xestor dun envoltorio a medida. Unha vez creada a clase, deberase rexistrar o envoltorio empregando a función [http://es1.php.net/manual/es/function.stream-wrapper-register.php stream_wrapper_register].<br />
<br />
<br />
--[[Usuario:Vlourido|Víctor Lourido]] 17:24 15 jul 2013 (CEST)</div>Vlourido