Zend\Cache\Storage\Capabilities¶
Overview¶
Storage capabilities describes how a storage adapter works and which features it supports.
To get capabilities of a storage adapter, you can use the method getCapabilities() of the storage adapter but only the storage adapter and its plugins have permissions to change them.
Because capabilities are mutable, for example, by changing some options, you can subscribe to the “change” event to get notifications; see the examples for details.
If you are writing your own plugin or adapter, you can also change capabilities because you have access to the marker object and can create your own marker to instantiate a new object of Zend\Cache\Storage\Capabilities.
Available Methods¶
- __construct(Zend\Cache\Storage\StorageInterface $storage, stdClass $marker, array $capabilities = array(), Zend\Cache\Storage\Capabilities|null $baseCapabilities = null)
Constructor
- getSupportedDatatypes()
Get supported datatypes.
Return type: array
- setSupportedDatatypes(stdClass $marker, array $datatypes)
Set supported datatypes.
Return type: Zend\Cache\Storage\Capabilities
- getSupportedMetadata()
Get supported metadata.
Return type: array
- setSupportedMetadata(stdClass $marker, string $metadata)
Set supported metadata.
Return type: Zend\Cache\Storage\Capabilities
- getMinTtl()
Get minimum supported time-to-live.
(Returning 0 means items never expire)
Return type: integer
- setMinTtl(stdClass $marker, int $minTtl)
Set minimum supported time-to-live.
Return type: Zend\Cache\Storage\Capabilities
- getMaxTtl()
Get maximum supported time-to-live.
Return type: integer
- setMaxTtl(stdClass $marker, int $maxTtl)
Set maximum supported time-to-live.
Return type: Zend\Cache\Storage\Capabilities
- getStaticTtl()
Is the time-to-live handled static (on write), or dynamic (on read).
Return type: boolean
- setStaticTtl(stdClass $marker, boolean $flag)
Set if the time-to-live is handled statically (on write) or dynamically (on read).
Return type: Zend\Cache\Storage\Capabilities
- getTtlPrecision()
Get time-to-live precision.
Return type: float
- setTtlPrecision(stdClass $marker, float $ttlPrecision)
Set time-to-live precision.
Return type: Zend\Cache\Storage\Capabilities
- getUseRequestTime()
Get the “use request time” flag status.
Return type: boolean
- setUseRequestTime(stdClass $marker, boolean $flag)
Set the “use request time” flag.
Return type: Zend\Cache\Storage\Capabilities
- getExpiredRead()
Get flag indicating if expired items are readable.
Return type: boolean
- setExpiredRead(stdClass $marker, boolean $flag)
Set if expired items are readable.
Return type: Zend\Cache\Storage\Capabilities
- getMaxKeyLength()
Get maximum key length.
Return type: integer
- setMaxKeyLength(stdClass $marker, int $maxKeyLength)
Set maximum key length.
Return type: Zend\Cache\Storage\Capabilities
- getNamespaceIsPrefix()
Get if namespace support is implemented as a key prefix.
Return type: boolean
- setNamespaceIsPrefix(stdClass $marker, boolean $flag)
Set if namespace support is implemented as a key prefix.
Return type: Zend\Cache\Storage\Capabilities
- getNamespaceSeparator()
Get namespace separator if namespace is implemented as a key prefix.
Return type: string
- setNamespaceSeparator(stdClass $marker, string $separator)
Set the namespace separator if namespace is implemented as a key prefix.
Return type: Zend\Cache\Storage\Capabilities
Examples¶
Get storage capabilities and do specific stuff in base of it
1 2 3 4 5 6 7 8 9 10 11 | use Zend\Cache\StorageFactory;
$cache = StorageFactory::adapterFactory('filesystem');
$supportedDatatypes = $cache->getCapabilities()->getSupportedDatatypes();
// now you can run specific stuff in base of supported feature
if ($supportedDatatypes['object']) {
$cache->set($key, $object);
} else {
$cache->set($key, serialize($object));
}
|
Listen to change event
1 2 3 4 5 6 7 8 9 10 11 12 13 | use Zend\Cache\StorageFactory;
$cache = StorageFactory::adapterFactory('filesystem', array(
'no_atime' => false,
));
// Catching capability changes
$cache->getEventManager()->attach('capability', function($event) {
echo count($event->getParams()) . ' capabilities changed';
});
// change option which changes capabilities
$cache->getOptions()->setNoATime(true);
|