PHP中的流是什么呢
流(streams)是PHP4.3版本引入的一個(gè)特性,主要是為了統(tǒng)一文件、sockets以及其他類似資源的工作方法。PHP4.3距今已經(jīng)有很長(zhǎng)時(shí)間了,但是很多程序員似乎都不能正確使用PHP中的流,當(dāng)然這也包括我。以前也在一些程序中遇到過(guò)流的使用,如php:/pic/p>
概述
流是由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中流的形式如::/pic/p>
默認(rèn)的包裝器是file:/pic/path/to/somefile.txt')和readfile('file:/pic/path/to/somefile.txt'),使用這兩種方式讀取文件,可以得到相同的結(jié)果。
正如前面所說(shuō),PHP提供了一些內(nèi)置的包裝器、協(xié)議和過(guò)濾器。查看我們的機(jī)器上安裝了哪些包裝器,可以使用如下幾個(gè)函數(shù):
復(fù)制代碼 代碼如下:
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:/pic/strong>
PHP有它自己的訪問(wèn)輸入/輸出(I/O)流的包裝器。PHP有基本的php:/pic/pic/pic/O資源。還有一個(gè)php:/pic/p>
因?yàn)閜hp:/pic/p>
復(fù)制代碼 代碼如下:
1.php:/pic/pic/form-data
2.僅當(dāng)Content-Type為application/x-www-form-urlencoded且提交方法是POST方法時(shí),$_POST數(shù)據(jù)與php:/pic/p>
3.php:/pic/p>
流上下文(Stream Contexts)
這部分內(nèi)容在編程中幾乎沒(méi)有遇到過(guò),本人研究起來(lái)也比較吃力,大家感興趣的話可以自行百度。
【PHP中的流是什么呢】相關(guān)文章:
PHP中的流是什么01-09
PHP中的Streams是什么07-30
PHP中的trait是什么08-03
PHP中MySql操作是什么02-09
PHP7.1中重大更新是什么01-11
php是什么11-15
PHP中的Trait11-20
PHP簡(jiǎn)介是什么07-01
PHP框架是什么11-13
- 相關(guān)推薦