什么是VB类流的PHP等价物?

时间:2012-06-11 08:48:46

标签: php vb.net stream

如本MSDN页面所述

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

什么是PHP等价物?

是否有可能在备注

下执行该页面上列出的三件事情
  

Streams涉及三个基本操作:

     
      
  1. 您可以从溪流中读取。阅读是从数据传输   流式传输到数据结构,例如字节数组。

  2.   
  3. 您可以写入流。写入是从数据传输数据   结构成流。

  4.   
  5. Streams可以支持搜索。寻求是查询和修改   流中的当前位置。寻求能力取决于   一种流的支持存储。例如,网络流有   没有统一的当前位置概念,因此通常会这样做   不支持寻求。

  6.   

2 个答案:

答案 0 :(得分:4)

PHP streams怎么样?它们几乎完全支持您所寻找的内容。

答案 1 :(得分:2)

PHP没有通用类来处理这个问题,它有一个你可能不习惯使用的数据类型 - Resource

资源可用于保存流的文件描述符。它们用于各种各样的地方,包括文件系统描述符,网络流,维护数据库连接甚至数据库结果集。它们还用于维护上下文信息,这种类型的资源是一个流,但其行为更像数据存储。单独使用PHP定义自己的资源类型是不可能的,它们是底层C ++代码的一部分。

在许多方面,资源的行为类似于对象的实例,并且最好以这种方式考虑它们(尽管它们不能在像对象这样的进程之间被序列化或传递)。然而,重要的是要注意,PHP 是面向对象的语言 - 它是一种提供许多OO功能的脚本语言,并且忘记了这一点。 system.io.stream提供的方法的功能是通过程序函数在PHP中提供的,这些函数接受流资源作为参数,并且您应该使用哪些函数取决于您正在使用的流的类型。

socketsfread()等人可以读取和写入大多数流资源类型(但不是全部 - 一个值得注意的例外是fwrite()扩展名创建的例外)。 streams"扩展程序" (在很长一段时间内在所有新的PHP安装中默认启用)尝试提供一个通用层来创建,访问和操作各种不同类型的流,但它有它的局限性:

  • 某些功能不适用于指向Windows上的标准文件描述符或外部进程的流(请参阅stream_select()
  • 虽然流扩展提供了套接字扩展所具有的大部分功能,但它并未提供所有功能(例如,多播客户端)
  • 由于PHP的单线程同步特性,非阻塞多IO是一个完整的PITA实现。这不是流的限制,而是PHP本身的限制。
  • [过去困扰我的其他限制,目前我都无法想到]

如果要以正确的OO方式处理流,则必须编写一个包装过程函数调用的类。