laminas/laminas-cache
Laminas Cache provides flexible caching for PHP applications, with adapters for common backends, cache storage, patterns, plugins, and PSR-compatible integrations. Includes tools for configuring, managing, and testing cache behavior in Laminas apps.
The CaptureCache pattern is useful for generating static resources to return
via HTTP request. When used in such a fashion, the web server needs to be
configured to run a PHP script generating the requested resource so that
subsequent requests for the same resource can be shipped without calling PHP
again.
This pattern comes with basic logic for managing generated resources.
For use with an Apache 404 handler extend the Apache configuration, e.g.
.htdocs:
ErrorDocument 404 /index.php
And add the cache to the related application script, e.g. index.php:
use Laminas\Cache\Pattern\CaptureCache;
use Laminas\Cache\Pattern\PatternOptions;
$capture = new CaptureCache(
new PatternOptions([
'public_dir' => __DIR__,
])
);
// Start capturing all output, excluding headers, and write to the public
// directory:
$capture->start();
// Don't forget to change the HTTP response code
header('Status: 200', true, 200);
// do stuff to dynamically generate output
| Option | Data Type | Default Value | Description |
|---|---|---|---|
public_dir |
string |
none | Location of the public web root directory in which to write output. |
index_filename |
string |
"index.html" | The name of the index file if only a directory was requested. |
file_locking |
bool |
true |
Whether or not to lock output files when writing. |
file_permission |
int|false |
0600 (false on Windows) |
Default permissions for generated output files. |
dir_permission |
int|false |
0700 (false on Windows) |
Default permissions for generated output directories. |
umask |
int|false |
false |
Whether or not to umask generated output files / directories. |
Using the following Apache 404 configuration:
# .htdocs
ErrorDocument 404 /index.php
Use the following script:
// index.php
use Laminas\Cache\Pattern\CaptureCache;
use Laminas\Cache\Pattern\PatternOptions;
$capture = new CaptureCache(
new PatternOptions([
'public_dir' => __DIR__,
])
);
In addition to the methods exposed in PatternInterface, this implementation
exposes the following methods.
namespace Laminas\Cache\Pattern;
use Laminas\Cache\Exception;
class CaptureCache extends AbstractPattern
{
/**
* Start the cache.
*
* [@param](https://github.com/param) string $pageId Page identifier
* [@return](https://github.com/return) void
*/
public function start($pageId = null);
/**
* Write a page to the requested path.
*
* [@param](https://github.com/param) string $content
* [@param](https://github.com/param) null|string $pageId
* [@throws](https://github.com/throws) Exception\LogicException
*/
public function set($content, $pageId = null);
/**
* Retrieve a generated page from the cache.
*
* [@param](https://github.com/param) null|string $pageId
* [@return](https://github.com/return) string|null
* [@throws](https://github.com/throws) Exception\LogicException
* [@throws](https://github.com/throws) Exception\RuntimeException
*/
public function get($pageId = null);
/**
* Check if a cache exists for the given page.
*
* [@param](https://github.com/param) null|string $pageId
* [@throws](https://github.com/throws) Exception\LogicException
* [@return](https://github.com/return) bool
*/
public function has($pageId = null);
/**
* Remove a page from the cache.
*
* [@param](https://github.com/param) null|string $pageId
* [@throws](https://github.com/throws) Exception\LogicException
* [@throws](https://github.com/throws) Exception\RuntimeException
* [@return](https://github.com/return) bool
*/
public function remove($pageId = null);
/**
* Clear cached pages that match the specified glob pattern.
*
* [@param](https://github.com/param) string $pattern
* [@throws](https://github.com/throws) Exception\LogicException
*/
public function clearByGlob($pattern = '**');
/**
* Returns the generated file name.
*
* [@param](https://github.com/param) null|string $pageId
* [@return](https://github.com/return) string
*/
public function getFilename($pageId = null);
}
How can I help you explore Laravel packages today?