silverstripe/silverstripe-framework — pull request #3558 by kinglozzer (2014-10-15 10:51:14+00:00)
Title: FIX: Tag-less cache backends error on flush

[A little background info.](https://github.com/silverstripe/silverstripe-framework/commit/48eb0e67e62fe0304c300e45ba0076f09ed89c9d#commitcomment-8163092)

Checking if the backend is an instance of `Zend_Cache_Backend_ExtendedInterface` ensures that the `getCapabilities()` method exists.

I’ve rewritten more than I _need_ to here, here’s why:

- `i18n` didn’t error on flush, but if it tried to clear in tag mode on a tag-less backend, it’d silently fail (and [log the error](https://github.com/silverstripe/silverstripe-framework/blob/3.1/thirdparty/Zend/Cache/Backend/Apc.php#L154-L158))
- `Aggregate` wasn’t erroring at all. However, if you tried to specify a different backend for it that wasn’t an instance of `Zend_Cache_Backend_ExtendedInterface`, it’d result in an error as `getCapabilities()` may not exist. An extreme edge case, but at least we’ll now be consistently flushing caches across core code :)