【发布时间】:2012-06-28 21:56:28
【问题描述】:
根据我对 PHP 中流的理解,流是一个接口,它提供了方法
读取和写入资源,此接口由不同的
实现
用于提供特定功能的流包装器类型(http、ftp、文件等)。
所以当我们说 fopen() 打开流时,它是否意味着特定流的实例化
包装对象?
如果我错了,请澄清我
谢谢
【问题讨论】:
根据我对 PHP 中流的理解,流是一个接口,它提供了方法
读取和写入资源,此接口由不同的
实现
用于提供特定功能的流包装器类型(http、ftp、文件等)。
所以当我们说 fopen() 打开流时,它是否意味着特定流的实例化
包装对象?
如果我错了,请澄清我
谢谢
【问题讨论】:
并非所有流都在该级别实现,大多数内置程序都在 C 级别,所以不,就 PHP 而言不是streamwrapper 对象。该界面确保它像流一样工作,而不是相反。 (本质上:所有流包装器都可以像流资源一样访问,但并非所有流资源都由流包装器类提供)。但是,您可以覆盖 file:/// 包装器和其他内置函数,非常有趣。
【讨论】:
ftp 的情况下,它是tcp 网络连接,在(本地)文件的情况下,它获取指向文件描述符的指针,因此,它会根据您实际使用的是什么类型。很难将“开放”定义为“在开始阅读或写作之前你必须做的所有事情”。