2012-06-11 56 views
1

由於discribed這個MSDN網頁什麼是VB類流的PHP等價物?

http://msdn.microsoft.com/en-us/library/system.io.stream.aspx

會是什麼PHP相當於上?

它甚至有可能做下言論

該網頁上列出的三件事流涉及三個基本操作:

  1. 您可以從流讀取。讀取是將來自 流的數據傳輸到數據結構,如字節數組。

  2. 您可以寫入流。寫入是將數據從數據 結構轉換成流。

  3. 流可以支持尋求。尋求是查詢和修改流中的當前位置。尋找能力取決於流類型的後備存儲類型。例如,網絡流有沒有統一概念的當前位置,因此 通常不支持查找。

回答

2

PHP沒有通用類來處理這個問題,它有一個數據類型,您可能不會使用它 - Resource

資源可用於保存流的文件描述符。它們廣泛用於各種場合,包括文件系統描述符,網絡流,維護數據庫連接以及數據庫結果集。它們也用於維護上下文信息,這種類型的資源是而不是的一個流,但行爲更像一個數據存儲。無法單獨使用PHP來定義自己的資源類型,它們是底層C++代碼的一部分。

在許多方面資源的行爲就像一個對象的實例,最好用這種方式來思考它們(儘管它們不能被序列化或在對象之類的進程之間傳遞)。然而,需要注意的是,PHP是而不是面向對象的語言 - 它是一種腳本語言,它提供了許多面向對象的功能,並且忘記了這種危險。 system.io.stream提供的方法的功能在PHP中通過接受流資源作爲參數的過程函數提供,並且您應該使用哪些函數取決於您正在使用的流類型。

最上游的資源類型(但不是全部 - 一個值得注意的例外是那些由sockets擴展創建)可以讀出,並通過fread()fwrite()等寫入。該streams「擴展」(在所有新的PHP安裝默認啓用了很長一段時間),試圖提供一個通用層來創建,訪問和對各種不同類型的流進行操作,但它有它的侷限性:

  • 某些功能不適用於指向Windows上的標準文件描述符或外部進程的流(請參閱stream_select()
  • 儘管流擴展提供了套接字擴展所具有的許多功能,但它並未提供全部功能(例如多播客戶端)
  • 由於PHP的單線程同步特性,非阻塞多IO是ac完成PITA實施。這不是流的限制,而是PHP本身的限制。
  • [已咬傷了我在過去的其他限制,其中沒有我可以在那一刻想到的。如果你要處理的正確OO方式流

,你將不得不編寫一個包裝過程函數調用的類。

4
PHP streams

什麼?它們幾乎完全支持你似乎在尋找的東西。

+0

非常感謝! – Rob

相關問題