PHP中的Streams是什麼

來源:文萃谷 2.25W

Streams 是在PHP 4.3.0版本被引入的,它被用於統一文件網絡、數據壓縮等類文件的操作方式,為這些類文件操作提供了一組通用的函數接口。簡而言之,一個stream就是一個具有流式行為的資源對象。也就是説,我們可以用線性的.方式來對stream進行讀取和寫入。並且可以用使用fseek()來跳轉到stream內的任意位置。下面就跟隨小編一起來看看吧!

PHP中的Streams是什麼

每個Streams對象都有一個包裝類,在包裝中可以添加處理特殊協議和編碼的相關代碼。PHP中已經內置了一些常用的包裝類,我們也可以創建和註冊自定義的包裝類。我們甚至能夠使用現有的context和filter對包裝類進行修改和增強。

  Stream 基礎知識

Stream 可以通過://方式來引用。其中是包裝類的名字,中的內容是由包裝類的語法指定,不同的包裝類的語法會有所不同。

PHP默認的包裝類是file://,也就是説我們在訪問文件系統的時候,其實就是在使用一個stream。我們可以通過下面兩種方式來讀取文件中的內容,readfile('/path/to/')或者readfile('file:///path/to/'),這兩種方式是等效的。如果你是使用readfile(''),那麼PHP會選取HTTP stream包裝類來進行操作。

正如上文所述,PHP提供了不少內建的包轉類,protocol以及filter。 按照下文所述的方式,可以查詢到本機所支持的包裝類:

print_r(stream_get_transports());

print_r(stream_get_wrappers());

print_r(stream_get_filters());

在我機器上的輸出結果為:

Array

(

[0] => tcp

[1] => udp

[2] => unix

[3] => udg

[4] => ssl

[5] => sslv3

[6] => sslv2

[7] => tls

)

Array

(

[0] => https

[1] => ftps

[2] =>

[3] => 2

[4] => php

[5] => file

[6] => glob

[7] => data

[8] => http

[9] => ftp

[10] => zip

[11] => phar

)

Array

(

[0] => zlib.*

[1] => bzip2.*

[2] => v.*

[3] => 13

[4] => per

[5] => wer

[6] => p_tags

[7] => convert.*

[8] => consumed

[9] => dechunk

[10] => mcrypt.*

[11] => mdecrypt.*

)

熱門標籤