分享好友 资讯首页 资讯分类 切换频道
彩虹外链网盘源码PHP网盘与外链分享程序资源
2024-12-30 01:58  浏览:59
# PSR-7 Message Implementation This repository contains a full [PSR-7](https://www.php-fig.org/psr/psr-7/) message implementation, several stream decorators, and some helpful functionality like query string parsing. [![Build Status](https://travis-ci.org/guzzle/psr7.svg?branch=master)](https://travis-ci.org/guzzle/psr7) # Stream implementation This package comes with a number of stream implementations and stream decorators. ## AppendStream `GuzzleHttpPsr7AppendStream` Reads from multiple streams, one after the other. ```php use GuzzleHttpPsr7; $a = Psr7Utils::streamFor('abc, '); $b = Psr7Utils::streamFor('123.'); $composed = new Psr7AppendStream([$a, $b]); $composed->addStream(Psr7Utils::streamFor(' Above all listen to me')); echo $composed; // abc, 123. Above all listen to me. ``` ## BufferStream `GuzzleHttpPsr7BufferStream` Provides a buffer stream that can be written to fill a buffer, and read from to remove bytes from the buffer. This stream returns a "hwm" metadata value that tells upstream consumers what the configured high water mark of the stream is, or the maximum preferred size of the buffer. ```php use GuzzleHttpPsr7; // When more than 1024 bytes are in the buffer, it will begin returning // false to writes. This is an indication that writers should slow down. $buffer = new Psr7BufferStream(1024); ``` ## CachingStream The CachingStream is used to allow seeking over previously read bytes on non-seekable streams. This can be useful when transferring a non-seekable entity body fails due to needing to rewind the stream (for example, resulting from a redirect). Data that is read from the remote stream will be buffered in a PHP temp stream so that previously read bytes are cached first in memory, then on disk. ```php use GuzzleHttpPsr7; $original = Psr7Utils::streamFor(fopen('http://www.google.com', 'r')); $stream = new Psr7CachingStream($original); $stream->read(1024); echo $stream->tell(); // 1024 $stream->seek(0); echo $stream->tell(); // 0 ``` ## DroppingStream `GuzzleHttpPsr7DroppingStream` Stream decorator that begins dropping data once the size of the underlying stream becomes too full. ```php use GuzzleHttpPsr7; // Create an empty stream $stream = Psr7Utils::streamFor(); // Start dropping data when the stream has more than 10 bytes $dropping = new Psr7DroppingStream($stream, 10); $dropping->write('01234567890123456789'); echo $stream; // 0123456789 ``` ## FnStream `GuzzleHttpPsr7FnStream` Compose stream implementations based on a hash of functions. Allows for easy testing and extension of a provided stream without needing to create a concrete class for a simple extension point. ```php use GuzzleHttpPsr7; $stream = Psr7Utils::streamFor('hi'); $fnStream = Psr7FnStream::decorate($stream, [ 'rewind' => function () use ($stream) { echo 'About to rewind - '; $stream->rewind(); echo 'rewound!'; } ]); $fnStream->rewind(); // Outputs: About to rewind - rewound! ``` ## InflateStream `GuzzleHttpPsr7InflateStream` Uses PHP's zlib.inflate filter to inflate deflate or gzipped content. This stream decorator skips the first 10 bytes of the given stream to remove the gzip header, converts the provided stream to a PHP stream resource, then appends the zlib.inflate filter. The stream is then converted back to a Guzzle stream resource to be used as a Guzzle stream. ## LazyOpenStream `GuzzleHttpPsr7LazyOpenStream` Lazily reads or writes to a file that is opened only after an IO operation take place on the stream. ```php use GuzzleHttpPsr7; $stream = new Psr7LazyOpenStream('/path/to/file', 'r'); // The file has not yet been opened... echo $stream->read(10); // The file is opened and read from only when needed. ``` ## LimitStream `GuzzleHttpPsr7LimitStream` LimitStream can be used to read a subset or slice of an existing stream object. This can be useful for breaking a large file into smaller pieces to be sent in chunks (e.g. Amazon S3's multipart upload API). ```php use GuzzleHttpPsr7; $original = Psr7Utils::streamFor(fopen('/tmp/test.txt', 'r+')); echo $original->getSize(); // >>> 1048576 // Limit the size of the body to 1024 bytes and start reading from byte 2048 $stream = new Psr7LimitStream($original, 1024, 2048); echo $stream->getSize();

彩虹外链网盘源码PHP网盘与外链分享程序资源

// >>> 1024 echo $stream->tell(); // >>> 0 ``` ## MultipartStream `GuzzleHttpPsr7MultipartStream` Stream that when read returns bytes for a streaming multipart or multipart/form-data stream. ## NoSeekStream `GuzzleHttpPsr7NoSeekStream` NoSeekStream wraps a stream and does not allow seeking. ```php use GuzzleHttpPsr7; $original = Psr7Utils::streamFor('foo'); $noSeek = new Psr7NoSeekStream($original); echo $noSeek->read(3); // foo var_export($noSeek->isSeekable()); // false $noSeek->seek(0); var_export($noSeek->read(3)); // NULL ``` ## PumpStream `GuzzleHttpPsr7PumpStream` Provides a read only stream that pumps data from a PHP callable. When invoking the provided callable, the PumpStream will pass the amount of data requested to read to the callable. The callable can choose to ignore this value and return fewer or more bytes than requested. Any extra data returned by the provided callable is buffered internally until drained using the read() function of the PumpStream. The provided callable MUST return false when there is no more data to read. ## Implementing stream decorators Creating a stream decorator is very easy thanks to the `GuzzleHttpPsr7StreamDecoratorTrait`. This trait provides methods that implement `PsrHttpMessageStreamInterface` by proxying to an underlying stream. Just `use` the `StreamDecoratorTrait` and implement your custom methods. For example, let's say we wanted to call a specific function each time the last byte is read from a stream. This could be implemented by overriding the `read()` method. ```php use PsrHttpMessageStreamInterface; use GuzzleHttpPsr7StreamDecoratorTrait; class EofCallbackStream implements StreamInterface { use StreamDecoratorTrait; private $callback; public function __construct(StreamInterface $stream, callable $cb) { $this->stream = $stream; $this->callback = $cb; } public function read($length) { $result = $this->stream->read($length); // Invoke the callback when EOF is hit. if ($this->eof()) { call_user_func($this->callback); } return $result; } } ``` This decorator could be added to any existing stream and used like so: ```php use GuzzleHttpPsr7; $original = Psr7Utils::streamFor('foo'); $eofStream = new EofCallbackStream($original, function () { echo 'EOF!'; }); $eofStream->read(2); $eofStream->read(1); // echoes "EOF!" $eofStream->seek(0); $eofStream->read(3); // echoes "EOF!" ``` ## PHP StreamWrapper You can use the `GuzzleHttpPsr7StreamWrapper` class if you need to use a PSR-7 stream as a PHP stream resource. Use the `GuzzleHttpPsr7StreamWrapper::getResource()` method to create a PHP stream from a PSR-7 stream. ```php use GuzzleHttpPsr7StreamWrapper; $stream = GuzzleHttpPsr7Utils::streamFor('hello!'); $resource = StreamWrapper::getResource($stream); echo fread($resource, 6); // outputs hello! ``` # Static API There are various static methods available under the `GuzzleHttpPsr7` namespace. ## `GuzzleHttpPsr7Message::toString` `public static function toString(MessageInterface $message): string` Returns the string representation of an HTTP message. ```php $request = new GuzzleHttpPsr7Request('GET', 'http://example.com'); echo GuzzleHttpPsr7Message::toString($request); ``` ## `GuzzleHttpPsr7Message::bodySummary` `public static function bodySummary(MessageInterface $message, int $truncateAt = 120): string|null` Get a short summary of the message body. Will return `null` if the response is not printable. ## `GuzzleHttpPsr7Message::rewindBody`    以上就是本篇文章【彩虹外链网盘源码PHP网盘与外链分享程序资源】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/news/7760.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
iPhone手机清理(iPhone手机清理垃圾)
  iPhone手机清理:优化你的设备性能与存储空间  随着科技的飞速发展,iPhone已成为我们日常生活中不可或缺的一部分。然而,
手机微信文件怎么传到电脑上(手机微信文件怎么传到电脑上打印出来)
  《手机微信文件如何传到电脑上》  随着科技的进步,我们的生活越来越离不开手机和电脑。在日常工作和生活中,我们经常需要
三国志曹操传手机版下载(三国志曹操传手机版下载最新版本)
  《三国志曹操传手机版下载》——重温经典,掌中天下  在当今数字化时代,手机游戏已经成为人们生活中不可或缺的一部分。而
oppo手机锁屏密码忘了怎么办(oppo手机锁屏密码忘了怎么办最简单的方法型号a23m)
  OPPO手机锁屏密码忘了怎么办  一、引言  在现代社会,手机已成为我们日常生活中不可或缺的一部分。OPPO手机因其出色的性
64g的手机
  关于《64G的手机》的文章  随着科技的飞速发展,智能手机已经成为了我们日常生活中不可或缺的一部分。而内存作为手机性能
b站直播手机屏幕(b站直播手机屏幕太小)
  关于《B站直播手机屏幕》的文章  随着互联网的普及和科技的飞速发展,直播行业日益繁荣。在众多直播平台中,B站以其独特的
大同证券手机版下载(大同证券手机版下载官网)
  大同证券手机版下载指南  随着移动互联网的发展,越来越多的人选择使用手机进行证券投资。大同证券作为一款受欢迎的证券交
手机上电脑(手机上电脑端口怎么打开)
  《手机上电脑》:重新定义移动办公与娱乐体验  随着科技的飞速发展,智能手机已经成为我们日常生活中不可或缺的一部分。如
手机位置跟踪(手机位置跟踪怎么关闭)
  关于手机位置跟踪的文章  随着科技的快速发展,手机已经成为我们日常生活中不可或缺的一部分。然而,随着手机使用的普及,
回合手机游戏(回合手机游戏有哪些)
  回合手机游戏:策略与乐趣的融合  随着移动设备的普及,手机游戏已成为人们休闲娱乐的重要方式之一。其中,回合手机游戏因