mcoste / directory-files-stream-wrapper
PHP 的流包装器,允许使用单个资源读取多个文件。
1.0.2
2020-12-11 17:57 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: >=8.0
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' 是唯一有意义的模式。