Because the V6 is not backward compatible with the V5, here's a guide to help you to migrate your code:
💢 ❗ If you update PhpFastCache from v5 to v6 you need to clear up the whole cache otherwise you may get this kind of error:
Notice: Undefined index: e in /phpfastcache/src/phpFastCache/Core/Pool/DriverBaseTrait.php on line ...
Fatal error: Uncaught phpFastCache\Exceptions\phpFastCacheInvalidArgumentException: $expiration must be an object implementing the DateTimeInterface in ...
PhpFastCache used to set a default global config using the CacheManager::setup() method
namespace My\Custom\Project;
$instance = CacheManager::setup([
'path' => 'somewhere'
]);
$instance = CacheManager::getInstance('Files');This method has been changed is now replaced by the CacheManager::setDefaultConfig() method.
Using the old CacheManager::setup() method will trigger a phpFastCacheInvalidConfigurationException
namespace My\Custom\Project;
$instance = CacheManager::setDefaultConfig([
'path' => 'somewhere'
]);
$instance = CacheManager::getInstance('Files');Driver instances used to implements a phpFastCache\Cache\ExtendedCacheItemPoolInterface interface.
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
if($instance instanceof \phpFastCache\Cache\ExtendedCacheItemPoolInterface)
{
// Some code
}This has been changed and they now implements a phpFastCache\Core\Pool\ExtendedCacheItemPoolInterface interface
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
if($instance instanceof \phpFastCache\Core\Pool\ExtendedCacheItemPoolInterface)
{
// Some code
}Item instances used to implements a phpFastCache\Cache\ExtendedCacheItemInterface interface.
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
$item = $instance->getItem('key');
if($item instanceof \phpFastCache\Cache\ExtendedCacheItemInterface)
{
// Some code
}This has been changed and it now returns a phpFastCache\Core\Item\ExtendedCacheItemInterface interface
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
$item = $instance->getItem('key');
if($item instanceof \phpFastCache\Core\Item\ExtendedCacheItemInterface)
{
// Some code
}Code used to catch a \InvalidArgumentException interface.
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
try{
$item = $instance->getItem(array());
}catch(\InvalidArgumentException $e){
//Caught exception code
}This has been changed you now MUST catch \phpFastCache\Exceptions\phpFastCacheInvalidArgumentException class
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
try{
$item = $instance->getItem(array());
}catch(\phpFastCache\Exceptions\phpFastCacheInvalidArgumentException $e){
//Caught exception code
}\phpFastCache\Exceptions\phpFastCacheInvalidArgumentException implements \Psr\Cache\InvalidArgumentException as per PSR-6.
Code used to catch a \LogicException.
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
try{
$item = $instance->getItem(array());
}catch(\LogicException $e){
//Caught exception code
}This has been changed you now MUST catch \phpFastCache\Exceptions\phpFastCacheLogicException interface
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
try{
$item = $instance->getItem(array());
}catch(\phpFastCache\Exceptions\phpFastCacheLogicException $e){
//Caught exception code
}{}()/\@:
If you try to do so, an \phpFastCache\Exceptions\phpFastCacheInvalidArgumentException will be raised.
You must replace them with a safe delimiter such as .|-_
The deprecated method phpFastCache\Cache\ExtendedCacheItemPoolInterface::clear() is now definitely removed.
In the V5 the method phpFastCache\Cache\ExtendedCacheItemPoolInterface::clear() was deprecated.
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
if($instance instanceof \phpFastCache\Cache\ExtendedCacheItemPoolInterface)
{
$instance->clear();
}In the V6 we removed it. Use phpFastCache\Cache\ExtendedCacheItemPoolInterface::clean() instead.
namespace My\Custom\Project;
$instance = CacheManager::getInstance('Files');
if($instance instanceof \phpFastCache\Core\Pool\ExtendedCacheItemPoolInterface)
{
$instance->clean();
}In the V5 the driver was making use of of the deprecated class Mongo.
In the V6 we made an important change: We now make use of Mongodb Driver Only your code configuration will have to be updated, PhpFastCache manages all the abstract part by itself.
In the V5 the class was named phpFastCache\Entities\driverStatistic
In the V6 it has changed and is now phpFastCache\Entities\DriverStatistic (with a D uppercase), you may need to re-fetch your
git repository completely on some operating systems (especially Windows, meh).
