承接 digitalcz/streams 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

digitalcz/streams

Composer 安装命令:

composer require digitalcz/streams

包简介

Opinionated abstraction around PHP streams implementing PSR-7 StreamInterface

README 文档

README

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require CI codecov

Opinionated abstraction around PHP streams implementing PSR-7 StreamInterface. It aims to improve working with files or remote streams in unified way.

Heavily inspired by guzzle/psr7.

Install

Via Composer

$ composer require digitalcz/streams

Usage

All streams implement DigitalCz\Streams\StreamInterface, which extends PSR-7 Psr\Http\Message\StreamInterface and adds a few convenience methods (copy(), void-returning close()/seek(), …).

Stream

A wrapper around any PHP stream resource. Use Stream::from() to build one from a string, a resource or another PSR-7 stream — the data is held in php://temp.

use DigitalCz\Streams\Stream;

// From a string
$stream = Stream::from('Hello world');
echo $stream->getContents();        // "Hello world"

// From an existing resource
$stream = Stream::from(fopen('php://memory', 'rb+'));

// From another PSR-7 stream
$stream = Stream::from($psrStream);

// Wrapping a resource directly (optionally with a known size)
$stream = new Stream(fopen('data.bin', 'rb'));

// Copy another stream into this one (returns bytes written)
$bytes = $stream->copy($otherStream);

File

A stream backed by a real file on disk. Adds getPath() and delete().

use DigitalCz\Streams\File;

$file = new File('/path/to/file.txt');      // opened with mode "rb+" by default
echo $file->getPath();

// Build a file from a string / resource / PSR-7 stream.
// A string that is an existing path opens that file, otherwise it is the content.
$file = File::from('contents written to a temp file');

$temp = File::temp();                        // empty file in the system temp dir
$file->delete();                             // close and unlink

TempFile

Like File, but backed by tmpfile() — the underlying file is removed automatically once the stream handle is closed.

use DigitalCz\Streams\TempFile;

$temp = TempFile::from('temporary content');
echo $temp->getPath();
$temp->close();                              // file is deleted on close

BufferedStream

Wraps a non-seekable / one-shot source stream and buffers what it reads into php://temp, so the source can be re-read and seeked. It is read-only.

use DigitalCz\Streams\BufferedStream;

$buffered = new BufferedStream($nonSeekableSource);
$head = $buffered->read(1024);
$buffered->rewind();                         // works even if the source could not seek
$all = $buffered->getContents();

StreamWrapper

Turns a StreamInterface back into a native PHP stream resource, usable with any function that expects one (fread, fgets, stream_copy_to_stream, …).

use DigitalCz\Streams\StreamWrapper;

$resource = StreamWrapper::from($stream);
$line = fgets($resource);

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

$ composer csfix    # fix codestyle
$ composer checks   # run all checks 

# or separately
$ composer tests    # run phpunit
$ composer phpstan  # run phpstan
$ composer cs       # run codesniffer

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email devs@digital.cz instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 12.58k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-02-17

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固