<?phpnamespaceGuzzleHttp\Psr7;usePsr\Http\Message\StreamInterface;/** * Stream decorator that begins dropping data once the size of the underlying * stream becomes too full. */classDroppingStreamimplementsStreamInterface{useStreamDecoratorTrait;private$maxLength;/** * @param StreamInterface $stream Underlying stream to decorate. * @param int $maxLength Maximum size before dropping data. */publicfunction__construct(StreamInterface$stream,$maxLength){$this->stream=$stream;$this->maxLength=$maxLength;}publicfunctionwrite($string){$diff=$this->maxLength-$this->stream->getSize();// Begin returning 0 when the underlying stream is too large.if($diff<=0){return0;}// Write the stream or a subset of the stream if needed.if(strlen($string)<$diff){return$this->stream->write($string);}return$this->stream->write(substr($string,0,$diff));}}