for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* This file is part of the PHP Generics package.
*
* @package Generics
*/
namespace Generics\Streams\Interceptor;
* This class provides an caching stream interceptor
* @author Maik Greubel <[email protected]>
class CachedStreamInterceptor extends AbstractStreamInterceptor
{
* @var string
private static $cache = "";
* Create a new instance of CachedStreamInterceptor
public function __construct()
stream_filter_register($this->getFilterName(), CachedStreamInterceptor::class);
}
* {@inheritdoc}
* @see \Generics\Streams\Interceptor\StreamInterceptor::filter()
public function filter($in, $out, int &$consumed, bool $closing): int
if ($closing) {
return PSFS_FEED_ME;
while ($bucket = stream_bucket_make_writeable($in)) {
self::$cache .= $bucket->data;
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
return PSFS_PASS_ON;
* Retrieve the cache buffer
* @return string
public function getCache(): string
return self::$cache;
* @see \Generics\Streams\Interceptor\StreamInterceptor::getFilterName()
public function getFilterName(): string
return strtolower(CachedStreamInterceptor::class);
* @see \Generics\Streams\Interceptor\StreamInterceptor::reset()
public function reset()
self::$cache = "";