ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/ebihara/prj_pnebiz/lib/include/Cache/Lite/File.php @ 557

Last change on this file since 557 was 557, checked in by ebihara, 14 years ago

create prj_pnebiz

File size: 2.6 KB
Line 
1<?php
2
3/**
4* This class extends Cache_Lite and offers a cache system driven by a master file
5*
6* With this class, cache validity is only dependent of a given file. Cache files
7* are valid only if they are older than the master file. It's a perfect way for
8* caching templates results (if the template file is newer than the cache, cache
9* must be rebuild...) or for config classes...
10* There are some examples in the 'docs/examples' file
11* Technical choices are described in the 'docs/technical' file
12*
13* @package Cache_Lite
14* @version $Id: File.php,v 1.3 2005/12/04 16:03:55 fab Exp $
15* @author Fabien MARTY <fab@php.net>
16*/
17 
18require_once('Cache/Lite.php');
19
20class Cache_Lite_File extends Cache_Lite
21{
22
23    // --- Private properties ---
24   
25    /**
26    * Complete path of the file used for controlling the cache lifetime
27    *
28    * @var string $_masterFile
29    */
30    var $_masterFile = '';
31   
32    /**
33    * Masterfile mtime
34    *
35    * @var int $_masterFile_mtime
36    */
37    var $_masterFile_mtime = 0;
38   
39    // --- Public methods ----
40   
41    /**
42    * Constructor
43    *
44    * $options is an assoc. To have a look at availables options,
45    * see the constructor of the Cache_Lite class in 'Cache_Lite.php'
46    *
47    * Comparing to Cache_Lite constructor, there is another option :
48    * $options = array(
49    *     (...) see Cache_Lite constructor
50    *     'masterFile' => complete path of the file used for controlling the cache lifetime(string)
51    * );
52    *
53    * @param array $options options
54    * @access public
55    */
56    function Cache_Lite_File($options = array(NULL))
57    {   
58        $options['lifetime'] = 0;
59        $this->Cache_Lite($options);
60        if (isset($options['masterFile'])) {
61            $this->_masterFile = $options['masterFile'];
62        } else {
63            return $this->raiseError('Cache_Lite_File : masterFile option must be set !');
64        }
65        if (!($this->_masterFile_mtime = @filemtime($this->_masterFile))) {
66            return $this->raiseError('Cache_Lite_File : Unable to read masterFile : '.$this->_masterFile, -3);
67        }
68    }
69   
70    /**
71    * Test if a cache is available and (if yes) return it
72    *
73    * @param string $id cache id
74    * @param string $group name of the cache group
75    * @return string data of the cache (or false if no cache available)
76    * @access public
77    */
78    function get($id, $group = 'default') 
79    {
80        if ($data = parent::get($id, $group, true)) {
81            if ($filemtime = $this->lastModified()) {
82                if ($filemtime > $this->_masterFile_mtime) {
83                    return $data;
84                }
85            }
86        }
87        return false;
88    }
89
90}
91
92?>
Note: See TracBrowser for help on using the repository browser.