vendor/assetic/src/Assetic/Cache/FilesystemCache.php
changeset 0 7f95f8617b0b
equal deleted inserted replaced
-1:000000000000 0:7f95f8617b0b
       
     1 <?php
       
     2 
       
     3 /*
       
     4  * This file is part of the Assetic package, an OpenSky project.
       
     5  *
       
     6  * (c) 2010-2011 OpenSky Project Inc
       
     7  *
       
     8  * For the full copyright and license information, please view the LICENSE
       
     9  * file that was distributed with this source code.
       
    10  */
       
    11 
       
    12 namespace Assetic\Cache;
       
    13 
       
    14 /**
       
    15  * A simple filesystem cache.
       
    16  *
       
    17  * @author Kris Wallsmith <kris.wallsmith@gmail.com>
       
    18  */
       
    19 class FilesystemCache implements CacheInterface
       
    20 {
       
    21     private $dir;
       
    22 
       
    23     public function __construct($dir)
       
    24     {
       
    25         $this->dir = $dir;
       
    26     }
       
    27 
       
    28     public function has($key)
       
    29     {
       
    30         return file_exists($this->dir.'/'.$key);
       
    31     }
       
    32 
       
    33     public function get($key)
       
    34     {
       
    35         $path = $this->dir.'/'.$key;
       
    36 
       
    37         if (!file_exists($path)) {
       
    38             throw new \RuntimeException('There is no cached value for '.$key);
       
    39         }
       
    40 
       
    41         return file_get_contents($path);
       
    42     }
       
    43 
       
    44     public function set($key, $value)
       
    45     {
       
    46         if (!is_dir($this->dir) && false === @mkdir($this->dir, 0777, true)) {
       
    47             throw new \RuntimeException('Unable to create directory '.$this->dir);
       
    48         }
       
    49 
       
    50         $path = $this->dir.'/'.$key;
       
    51 
       
    52         if (false === @file_put_contents($path, $value)) {
       
    53             throw new \RuntimeException('Unable to write file '.$path);
       
    54         }
       
    55     }
       
    56 
       
    57     public function remove($key)
       
    58     {
       
    59         $path = $this->dir.'/'.$key;
       
    60 
       
    61         if (file_exists($path) && false === @unlink($path)) {
       
    62             throw new \RuntimeException('Unable to remove file '.$path);
       
    63         }
       
    64     }
       
    65 }