2012-06-11 27 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

相关问题