Skip to content

3.0.0

Closed Jul 10, 2024 100% complete

Backwards incompatible release (major)

laminas-cache-storage-adapter-filesystem 3.0.0 is here and finally adds native types everywhere, adds support for psr/cache and psr/simple-cache v2 & v3, supports laminas/laminas-cache v4 and introduces an all new metadata and persistence logic. The Filesystem does now persist the value as a serialized string along w…

Backwards incompatible release (major)

laminas-cache-storage-adapter-filesystem 3.0.0 is here and finally adds native types everywhere, adds support for psr/cache and psr/simple-cache v2 & v3, supports laminas/laminas-cache v4 and introduces an all new metadata and persistence logic. The Filesystem does now persist the value as a serialized string along with the expiry date so that cache items can now have dedicated TTLs.

Added

  • Dedicated Metadata object for Filesystem#getMetadata
  • Adds support for psr/cache and psr/simple-cache v2 & v3 by introducing TTL per-item handling
  • Filesystem now allows passing a ClockInterface via its constructor
  • New option to configure unserializable classes (unserializable_classes) which can be passed as a Filesystem option as boolean or a non-empty-list<class-string> value. Defaults to true and can be modified according to the unserialize function documentation (value is passed to allowed_classes option of unserialize). This option is only used when there is no Serializer plugin attached to the storage adapter
  • FilesystemInteractionInterface does now provide a new method getFirstLineOfFile to have a performant way to read the cache expiry information without loading the whole file into memory

Changed

  • Filesystem adapter now supports per-item TTL and thus, the TTL is calculated on-write rather than on-read
  • The Filesystem adapter now uses .cache suffix which is not configurable anymore (used to be .dat) as the old .dat files might not be compatible anymore. This will probably introduce problems in projects which rely on existing files which are not generated when these are missing. It is also mandatory that if caches are created cross-project, that both projects use the same adapter version. Please keep this in mind when upgrading
  • FilesystemOptions does now prevent projects from updating the key pattern, the key pattern is fixed and must not change
  • FilesystemOptions has a modified key pattern and now allows dots (.) in cache keys. This is mandatory to have proper PSR-6 support which requires caches to support A-Z, a-z, 0-9, _, and .
  • Filesystem adapter now stores values as serialized strings within the cache file in case that there is no Serializer plugin attached to the adapter

Removed

  • Filesystem::METADATA_ATIME constant, use Metadata#lastAccessTime instead
  • Filesystem::METADATA_CTIME constant, use Metadata#creationTime instead
  • Filesystem::METADATA_MTIME constant, use Metadata#lastModifiedTime instead
  • Filesystem::METADATA_FILESIZE constant, use Metadata#filesize instead
  • Filesystem::METADATA_FILESPEC constant, use Metadata#filespec instead
  • FilesystemOptions#setSuffix as the suffix is not configurable anymore
  • FilesystemOptions#getSuffix as the suffix is not configurable anymore
  • FilesystemOptions#setTagSuffix as the tag suffix is not configurable anymore
  • FilesystemOptions#getTagSuffix as the tag suffix is not configurable anymore
  • FilesystemInteractionInterface#umask as it was not used
  • FilesystemInteractionInterface#touch as it is not used anymore

This milestone is closed.

No open issues remain. View closed issues or see open milestones in this repository.