-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix the PSR simple cache mess by using composer to check which versio…
…n is installed to maintain backwards compatibility with old php and laravel versions (#3851) * Attempt to fix the psr mess for now * Load different cache classes based on simple psr version handled by the cache manager
- Loading branch information
1 parent
f700014
commit f3a3f15
Showing
9 changed files
with
346 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
<?php | ||
|
||
namespace Maatwebsite\Excel\Cache; | ||
|
||
use Psr\SimpleCache\CacheInterface; | ||
|
||
class BatchCacheDeprecated implements CacheInterface | ||
{ | ||
/** | ||
* @var CacheInterface | ||
*/ | ||
protected $cache; | ||
|
||
/** | ||
* @var MemoryCacheDeprecated | ||
*/ | ||
protected $memory; | ||
|
||
/** | ||
* @param CacheInterface $cache | ||
* @param MemoryCacheDeprecated $memory | ||
*/ | ||
public function __construct(CacheInterface $cache, MemoryCacheDeprecated $memory) | ||
{ | ||
$this->cache = $cache; | ||
$this->memory = $memory; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function get($key, $default = null) | ||
{ | ||
if ($this->memory->has($key)) { | ||
return $this->memory->get($key); | ||
} | ||
|
||
return $this->cache->get($key, $default); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function set($key, $value, $ttl = null) | ||
{ | ||
$this->memory->set($key, $value, $ttl); | ||
|
||
if ($this->memory->reachedMemoryLimit()) { | ||
return $this->cache->setMultiple($this->memory->flush(), $ttl); | ||
} | ||
|
||
return true; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function delete($key) | ||
{ | ||
if ($this->memory->has($key)) { | ||
return $this->memory->delete($key); | ||
} | ||
|
||
return $this->cache->delete($key); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function clear() | ||
{ | ||
$this->memory->clear(); | ||
|
||
return $this->cache->clear(); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function getMultiple($keys, $default = null) | ||
{ | ||
// Check if all keys are still in memory | ||
$memory = $this->memory->getMultiple($keys, $default); | ||
$actualItemsInMemory = count(array_filter($memory)); | ||
|
||
if ($actualItemsInMemory === count($keys)) { | ||
return $memory; | ||
} | ||
|
||
// Get all rows from cache if none is hold in memory. | ||
if ($actualItemsInMemory === 0) { | ||
return $this->cache->getMultiple($keys, $default); | ||
} | ||
|
||
// Add missing values from cache. | ||
foreach ($this->cache->getMultiple($keys, $default) as $key => $value) { | ||
if (null !== $value) { | ||
$memory[$key] = $value; | ||
} | ||
} | ||
|
||
return $memory; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function setMultiple($values, $ttl = null) | ||
{ | ||
$this->memory->setMultiple($values, $ttl); | ||
|
||
if ($this->memory->reachedMemoryLimit()) { | ||
return $this->cache->setMultiple($this->memory->flush(), $ttl); | ||
} | ||
|
||
return true; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function deleteMultiple($keys) | ||
{ | ||
$keys = is_array($keys) ? $keys : iterator_to_array($keys); | ||
|
||
$this->memory->deleteMultiple($keys); | ||
|
||
return $this->cache->deleteMultiple($keys); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function has($key) | ||
{ | ||
if ($this->memory->has($key)) { | ||
return true; | ||
} | ||
|
||
return $this->cache->has($key); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.