溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中的流是什么意思

發(fā)布時(shí)間:2021-09-03 19:48:03 來(lái)源:億速云 閱讀:101 作者:chen 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容介紹了“PHP中的流是什么意思”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

概述

流(streams)是PHP4.3版本引入的一個(gè)特性,主要是為了統(tǒng)一文件、sockets以及其他類(lèi)似資源的工作方法。PHP4.3距今已經(jīng)有很長(zhǎng)時(shí)間了,但是很多程序員似乎都不能正確使用PHP中的流,當(dāng)然這也包括我。以前也在一些程序中遇到過(guò)流的使用,如php://input,但是一直沒(méi)機(jī)會(huì)整理,今天就把這部分知識(shí)整理下。

流是由PHP提供的資源,可以供我們透明的使用,而且流是一個(gè)非常強(qiáng)大的工具。適當(dāng)?shù)脑诔绦蛑惺褂昧?,可以將我們的程序帶到一個(gè)新的高度。

PHP手冊(cè)中對(duì)流的描述如下:

復(fù)制代碼 代碼如下:


Streams were introduced with PHP 4.3.0 as a way of generalizing file, network, data compression, and other operations which share a common set of functions and uses. In its simplest definition, a stream is a resource object which exhibits streamable behavior. That is, it can be read from or written to in a linear fashion, and may be able to fseek() to an arbitrary locations within the stream.

每一種流都實(shí)現(xiàn)了一個(gè)包裝器(wrapper),包裝器包含一些額外的代碼用來(lái)處理特殊的協(xié)議和編碼。PHP提供了一些內(nèi)置的包裝器,我們也可以很輕松的創(chuàng)建和注冊(cè)自定義的包裝器。我們甚至可以使用上下文(contexts)和過(guò)濾器來(lái)改變和增強(qiáng)包裝器。

流基礎(chǔ)知識(shí)

PHP中流的形式如:<scheme>://<target>。<scheme>是包裝器的名字,<target>的內(nèi)容取決于不同的包裝器語(yǔ)法。
默認(rèn)的包裝器是file://,也就是說(shuō)每次我們?cè)L問(wèn)文件系統(tǒng)的時(shí)候都使用了流。例如,我們可以使用如下兩種方式來(lái)讀取文件:readfile('/path/to/somefile.txt')和readfile('file:///path/to/somefile.txt'),使用這兩種方式讀取文件,可以得到相同的結(jié)果。

正如前面所說(shuō),PHP提供了一些內(nèi)置的包裝器、協(xié)議和過(guò)濾器。查看我們的機(jī)器上安裝了哪些包裝器,可以使用如下幾個(gè)函數(shù):

復(fù)制代碼 代碼如下:


<?php
    var_dump(stream_get_transports());
    var_dump(stream_get_wrappers());
    var_dump(stream_get_filters());
?>

我本地的環(huán)境輸出內(nèi)容如下:

復(fù)制代碼 代碼如下:


array (size=8)
  0 => string 'tcp' (length=3)
  1 => string 'udp' (length=3)
  2 => string 'unix' (length=4)
  3 => string 'udg' (length=3)
  4 => string 'ssl' (length=3)
  5 => string 'sslv3' (length=5)
  6 => string 'sslv2' (length=5)
  7 => string 'tls' (length=3)
array (size=12)
  0 => string 'https' (length=5)
  1 => string 'ftps' (length=4)
  2 => string 'compress.zlib' (length=13)
  3 => string 'compress.bzip2' (length=14)
  4 => string 'php' (length=3)
  5 => string 'file' (length=4)
  6 => string 'glob' (length=4)
  7 => string 'data' (length=4)
  8 => string 'http' (length=4)
  9 => string 'ftp' (length=3)
  10 => string 'phar' (length=4)
  11 => string 'zip' (length=3)
array (size=12)
  0 => string 'zlib.*' (length=6)
  1 => string 'bzip2.*' (length=7)
  2 => string 'convert.iconv.*' (length=15)
  3 => string 'string.rot13' (length=12)
  4 => string 'string.toupper' (length=14)
  5 => string 'string.tolower' (length=14)
  6 => string 'string.strip_tags' (length=17)
  7 => string 'convert.*' (length=9)
  8 => string 'consumed' (length=8)
  9 => string 'dechunk' (length=7)
  10 => string 'mcrypt.*' (length=8)
  11 => string 'mdecrypt.*' (length=10)

另外,我們可以自定義或者使用第三方的流。

“PHP中的流是什么意思”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI