nucleardog/streams

流合约和包装器

v1.0.0 2024-07-04 13:58 UTC

This package is auto-updated.

Last update: 2024-09-04 14:52:15 UTC


README

PHP的简单流库。

概述

这提供了一些标准化的接口,用于提供类似流的对象。

  • Stream:允许访问底层流和关闭流。
  • Readable:读取字节数据流。
  • Writeable:写入字节数据流。
  • Seekable:允许在流中移动指针。

这允许你精确地声明你的代码需要什么,你的流提供了什么功能,并允许编译器为我们验证这一点。进一步地,它还允许你将底层PHP流替换为更“有趣”的实现。

用法

在以下位置提供了一个基本的PHP流资源包装器

  • ReadStream:支持读取的流
  • SeekableStreamStream:支持读取和定位的流
  • WriteStream:支持写入的流
  • SeekableWriteStream:支持写入和定位的流

这些实现不应在您的代码中进行类型提示。您应该依赖于所需的特定接口。这些类旨在提供将现有PHP流传递给使用这些接口的样板代码。

有一些便捷的方法可用

  • ReadStream::fromPath(string $path)fopen一个路径,并返回一个ReadStream或SeekableReadStream。
  • ReadStream::fromString(string $contents):在内存中打开一个缓冲区,将传递的字符串放入其中,并返回一个ReadStream或SeekableReadStream。
  • ReadStream::fromStream($stream):确定传入的流是否可定位,并将其包装在ReadStream或SeekableReadStream中。
  • WriteStream::fromPath(string $path)fopen一个路径,并返回一个WriteStream或SeekableWriteStream。
  • WriteStream::fromStream($stream):确定传入的流是否可定位,并将其包装在WriteStream或SeekableWriteStream中。

接口

Stream
    unwrap(): resource
    close(): void

Readable
    read(int $bytes): string
    eof(): bool
    copy(Writeable $stream, ?int $length = null): void

Writeable
    write(string $data): void

Seekable
    offset(): int
    seek(int $offset): void
    length(): int

法律

版权 2024 Adam Pippin hello@adampippin.ca

根据Apache License,版本2.0(“许可证”)许可;除非遵守许可证,否则不得使用此项目。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证中规定的权限和限制的具体语言,请参阅许可证。