mcoste/directory-files-stream-wrapper

PHP 的流包装器,允许使用单个资源读取多个文件。

1.0.2 2020-12-11 17:57 UTC

This package is auto-updated.

Last update: 2024-09-12 14:49:26 UTC


README

允许使用单个资源对象读取目录中的所有文件。

安装

composer require mcoste/directory-files-stream-wrapper

初始化

在能够使用此流包装器之前,您必须注册它。为此,您有两种方法。

简单的方法

您可以使用 PHP 的 stream_wrapper_register() 函数

stream_wrapper_register('protocol', DirectoryFilesStreamWrapper::class);

将 'protocol' 替换为您想要的任何有效字符串。有关更多信息,请参阅 RFC 2396 (第 3.1 节:方案组件)。如果您想使用 DirectoryFilesStreamWrapper::DEFAULT_PROTOCOL_NAME,则可以简单地这样做。

非常简单的方法

更简单的方法是调用静态方法 DirectoryFilesStreamWrapper::register()。就是这样,您可以开始了。

此方法接受一个可选参数,用于指定您想要的协议名称。默认情况下,它使用 DirectoryFilesStreamWrapper::DEFAULT_PROTOCOL_NAME。

用法

注册完成后,您只需像这样打开一个目录即可

$resource = fopen('protocol://path/to/my/directory', 'r');

'protocol' 必须替换为您选择的协议名称(如果未指定参数使用 DirectoryFilesStream::register(),则为 'directory-files')

现在您可以将该资源用作其他任何资源。例如

$line = fgets($resource);

要读取的文件将按照 PHP 函数 natsort() 定义的顺序排序。

限制

只读

此流包装器不允许使用除了 'r' 之外的其他模式。您可以向 fopen() 传递任何模式,但 'r' 将始终被使用。这种限制是必需的,因为在包装器的上下文中,'r' 是唯一有意义的模式。