source: trunk/prototype/library/Assetic/Cache/FilesystemCache.php @ 7613

Revision 7613, 1.6 KB checked in by angelo, 12 years ago (diff)

Ticket #3197 - Reduzir tempo de carregamento do modulo Expresso Mail - Criacao mensagem,nome de arquivos de cache

Line 
1<?php
2
3/*
4 * This file is part of the Assetic package, an OpenSky project.
5 *
6 * (c) 2010-2012 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
12namespace Assetic\Cache;
13
14/**
15 * A simple filesystem cache.
16 *
17 * @author Kris Wallsmith <kris.wallsmith@gmail.com>
18 */
19class 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        $key = "expressocache-".$key;
31        return file_exists($this->dir.'/'.$key);
32    }
33
34    public function get($key)
35    {
36        $key = "expressocache-".$key;
37        $path = $this->dir.'/'.$key;
38
39        if (!file_exists($path)) {
40            throw new \RuntimeException('There is no cached value for '.$key);
41        }
42
43        return file_get_contents($path);
44    }
45
46    public function set($key, $value)
47    {
48        $key = "expressocache-".$key;
49        if (!is_dir($this->dir) && false === @mkdir($this->dir, 0777, true)) {
50            throw new \RuntimeException('Unable to create directory '.$this->dir);
51        }
52
53        $path = $this->dir.'/'.$key;
54
55        if (false === @file_put_contents($path, $value)) {
56            throw new \RuntimeException('Unable to write file '.$path);
57        }
58    }
59
60    public function remove($key)
61    {
62        $key = "expressocache-".$key;
63        $path = $this->dir.'/'.$key;
64
65        if (file_exists($path) && false === @unlink($path)) {
66            throw new \RuntimeException('Unable to remove file '.$path);
67        }
68    }
69}
Note: See TracBrowser for help on using the repository browser.