source: sourcecode/system/libraries/Cache/Cache.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 4.6 KB
Line 
1<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2/**
3 * CodeIgniter
4 *
5 * An open source application development framework for PHP 4.3.2 or newer
6 *
7 * @package             CodeIgniter
8 * @author              ExpressionEngine Dev Team
9 * @copyright   Copyright (c) 2006 - 2012 EllisLab, Inc.
10 * @license             http://codeigniter.com/user_guide/license.html
11 * @link                http://codeigniter.com
12 * @since               Version 2.0
13 * @filesource 
14 */
15
16// ------------------------------------------------------------------------
17
18/**
19 * CodeIgniter Caching Class
20 *
21 * @package             CodeIgniter
22 * @subpackage  Libraries
23 * @category    Core
24 * @author              ExpressionEngine Dev Team
25 * @link               
26 */
27class CI_Cache extends CI_Driver_Library {
28       
29        protected $valid_drivers        = array(
30                'cache_apc', 'cache_file', 'cache_memcached', 'cache_dummy'
31        );
32
33        protected $_cache_path          = NULL;         // Path of cache files (if file-based cache)
34        protected $_adapter                     = 'dummy';
35        protected $_backup_driver;
36       
37        // ------------------------------------------------------------------------
38
39        /**
40         * Constructor
41         *
42         * @param array
43         */
44        public function __construct($config = array())
45        {
46                if ( ! empty($config))
47                {
48                        $this->_initialize($config);
49                }
50        }
51
52        // ------------------------------------------------------------------------
53
54        /**
55         * Get
56         *
57         * Look for a value in the cache.  If it exists, return the data
58         * if not, return FALSE
59         *
60         * @param       string 
61         * @return      mixed           value that is stored/FALSE on failure
62         */
63        public function get($id)
64        {       
65                return $this->{$this->_adapter}->get($id);
66        }
67
68        // ------------------------------------------------------------------------
69
70        /**
71         * Cache Save
72         *
73         * @param       string          Unique Key
74         * @param       mixed           Data to store
75         * @param       int                     Length of time (in seconds) to cache the data
76         *
77         * @return      boolean         true on success/false on failure
78         */
79        public function save($id, $data, $ttl = 60)
80        {
81                return $this->{$this->_adapter}->save($id, $data, $ttl);
82        }
83
84        // ------------------------------------------------------------------------
85
86        /**
87         * Delete from Cache
88         *
89         * @param       mixed           unique identifier of the item in the cache
90         * @return      boolean         true on success/false on failure
91         */
92        public function delete($id)
93        {
94                return $this->{$this->_adapter}->delete($id);
95        }
96
97        // ------------------------------------------------------------------------
98
99        /**
100         * Clean the cache
101         *
102         * @return      boolean         false on failure/true on success
103         */
104        public function clean()
105        {
106                return $this->{$this->_adapter}->clean();
107        }
108
109        // ------------------------------------------------------------------------
110
111        /**
112         * Cache Info
113         *
114         * @param       string          user/filehits
115         * @return      mixed           array on success, false on failure     
116         */
117        public function cache_info($type = 'user')
118        {
119                return $this->{$this->_adapter}->cache_info($type);
120        }
121
122        // ------------------------------------------------------------------------
123       
124        /**
125         * Get Cache Metadata
126         *
127         * @param       mixed           key to get cache metadata on
128         * @return      mixed           return value from child method
129         */
130        public function get_metadata($id)
131        {
132                return $this->{$this->_adapter}->get_metadata($id);
133        }
134       
135        // ------------------------------------------------------------------------
136
137        /**
138         * Initialize
139         *
140         * Initialize class properties based on the configuration array.
141         *
142         * @param       array   
143         * @return      void
144         */
145        private function _initialize($config)
146        {       
147                $default_config = array(
148                                'adapter',
149                                'memcached'
150                        );
151
152                foreach ($default_config as $key)
153                {
154                        if (isset($config[$key]))
155                        {
156                                $param = '_'.$key;
157
158                                $this->{$param} = $config[$key];
159                        }
160                }
161
162                if (isset($config['backup']))
163                {
164                        if (in_array('cache_'.$config['backup'], $this->valid_drivers))
165                        {
166                                $this->_backup_driver = $config['backup'];
167                        }
168                }
169        }
170
171        // ------------------------------------------------------------------------
172
173        /**
174         * Is the requested driver supported in this environment?
175         *
176         * @param       string  The driver to test.
177         * @return      array
178         */
179        public function is_supported($driver)
180        {
181                static $support = array();
182
183                if ( ! isset($support[$driver]))
184                {
185                        $support[$driver] = $this->{$driver}->is_supported();
186                }
187
188                return $support[$driver];
189        }
190
191        // ------------------------------------------------------------------------
192
193        /**
194         * __get()
195         *
196         * @param       child
197         * @return      object
198         */
199        public function __get($child)
200        {
201                $obj = parent::__get($child);
202
203                if ( ! $this->is_supported($child))
204                {
205                        $this->_adapter = $this->_backup_driver;
206                }
207
208                return $obj;
209        }
210       
211        // ------------------------------------------------------------------------
212}
213// End Class
214
215/* End of file Cache.php */
216/* Location: ./system/libraries/Cache/Cache.php */
Note: See TracBrowser for help on using the repository browser.