forked from doctrine/cache
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add MultiDeleteCache interface and default CacheProvider implementation
- Loading branch information
Showing
5 changed files
with
126 additions
and
1 deletion.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,8 +28,9 @@ | |
* @author Jonathan Wage <[email protected]> | ||
* @author Roman Borschel <[email protected]> | ||
* @author Fabio B. Silva <[email protected]> | ||
* @author Benoit Burnichon <[email protected]> | ||
*/ | ||
abstract class CacheProvider implements Cache, FlushableCache, ClearableCache, MultiGetCache, MultiPutCache | ||
abstract class CacheProvider implements Cache, FlushableCache, ClearableCache, MultiGetCache, MultiPutCache, MultiDeleteCache | ||
{ | ||
const DOCTRINE_NAMESPACE_CACHEKEY = 'DoctrineNamespaceCacheKey[%s]'; | ||
|
||
|
@@ -132,6 +133,19 @@ public function save($id, $data, $lifeTime = 0) | |
return $this->doSave($this->getNamespacedId($id), $data, $lifeTime); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function deleteMultiple(array $keys) | ||
{ | ||
$namespacedKeys = array(); | ||
foreach ($keys as $key) { | ||
$namespacedKeys[] = $this->getNamespacedId($key); | ||
} | ||
|
||
return $this->doDeleteMultiple($namespacedKeys); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
|
@@ -285,6 +299,26 @@ protected function doSaveMultiple(array $keysAndValues, $lifetime = 0) | |
*/ | ||
abstract protected function doSave($id, $data, $lifeTime = 0); | ||
|
||
/** | ||
* Default implementation of doDeleteMultiple. Each driver that supports multi-delete should override it. | ||
* | ||
* @param array $keys Array of keys to delete from cache | ||
* | ||
* @return bool TRUE if the operation was successful, FALSE if it wasn't | ||
*/ | ||
protected function doDeleteMultiple(array $keys) | ||
{ | ||
$success = true; | ||
|
||
foreach ($keys as $key) { | ||
if (!$this->doDelete($key)) { | ||
$success = false; | ||
} | ||
} | ||
|
||
return $success; | ||
} | ||
|
||
/** | ||
* Deletes a cache entry. | ||
* | ||
|
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,39 @@ | ||
<?php | ||
/* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* This software consists of voluntary contributions made by many individuals | ||
* and is licensed under the MIT license. For more information, see | ||
* <http://www.doctrine-project.org>. | ||
*/ | ||
|
||
namespace Doctrine\Common\Cache; | ||
|
||
/** | ||
* Interface for cache drivers that allows to put many items at once. | ||
* | ||
* @link www.doctrine-project.org | ||
* @since 1.7 | ||
* @author Benoit Burnichon <[email protected]> | ||
*/ | ||
interface MultiDeleteCache | ||
{ | ||
/** | ||
* Returns a boolean value indicating if the operation succeeded. | ||
* | ||
* @param array $keys Array of keys to delete from cache | ||
* | ||
* @return bool TRUE if the operation was successful, FALSE if it wasn't. | ||
*/ | ||
function deleteMultiple(array $keys); | ||
} |
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