| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- <?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;
 
- /**
 
-  * Cache provider that allows to easily chain multiple cache providers
 
-  *
 
-  * @author Michaël Gallego <mic.gallego@gmail.com>
 
-  */
 
- class ChainCache extends CacheProvider
 
- {
 
-     /**
 
-      * @var CacheProvider[]
 
-      */
 
-     private $cacheProviders = array();
 
-     /**
 
-      * Constructor
 
-      *
 
-      * @param CacheProvider[] $cacheProviders
 
-      */
 
-     public function __construct($cacheProviders = array())
 
-     {
 
-         $this->cacheProviders = $cacheProviders;
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     public function setNamespace($namespace)
 
-     {
 
-         parent::setNamespace($namespace);
 
-         foreach ($this->cacheProviders as $cacheProvider) {
 
-             $cacheProvider->setNamespace($namespace);
 
-         }
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     protected function doFetch($id)
 
-     {
 
-         foreach ($this->cacheProviders as $key => $cacheProvider) {
 
-             if ($cacheProvider->doContains($id)) {
 
-                 $value = $cacheProvider->doFetch($id);
 
-                 // We populate all the previous cache layers (that are assumed to be faster)
 
-                 for ($subKey = $key - 1 ; $subKey >= 0 ; $subKey--) {
 
-                     $this->cacheProviders[$subKey]->doSave($id, $value);
 
-                 }
 
-                 return $value;
 
-             }
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     protected function doContains($id)
 
-     {
 
-         foreach ($this->cacheProviders as $cacheProvider) {
 
-             if ($cacheProvider->doContains($id)) {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     protected function doSave($id, $data, $lifeTime = 0)
 
-     {
 
-         $stored = true;
 
-         foreach ($this->cacheProviders as $cacheProvider) {
 
-             $stored = $cacheProvider->doSave($id, $data, $lifeTime) && $stored;
 
-         }
 
-         return $stored;
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     protected function doDelete($id)
 
-     {
 
-         $deleted = true;
 
-         foreach ($this->cacheProviders as $cacheProvider) {
 
-             $deleted = $cacheProvider->doDelete($id) && $deleted;
 
-         }
 
-         return $deleted;
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     protected function doFlush()
 
-     {
 
-         $flushed = true;
 
-         foreach ($this->cacheProviders as $cacheProvider) {
 
-             $flushed = $cacheProvider->doFlush() && $flushed;
 
-         }
 
-         return $flushed;
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     protected function doGetStats()
 
-     {
 
-         // We return all the stats from all adapters
 
-         $stats = array();
 
-         foreach ($this->cacheProviders as $cacheProvider) {
 
-             $stats[] = $cacheProvider->doGetStats();
 
-         }
 
-         return $stats;
 
-     }
 
- }
 
 
  |