MDL-36768 cache: Implemented abstract cache store base class
[moodle.git] / cache / classes / store.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Cache store - base class
19  *
20  * This file is part of Moodle's cache API, affectionately called MUC.
21  * It contains the components that are required in order to use caching.
22  *
23  * @package    core
24  * @category   cache
25  * @copyright  2012 Sam Hemelryk
26  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27  */
29 defined('MOODLE_INTERNAL') || die();
31 /**
32  * Abstract cache store base class.
33  *
34  * This class implements the cache_store interface that all caches store plugins are required in implement.
35  * It then implements basic methods that likely won't need to be overridden by plugins.
36  * It will also be used to implement any API changes that come about in the future.
37  *
38  * While it is not required that you extend this class it is highly recommended.
39  *
40  * @since 2.4
41  * @package    core
42  * @category   cache
43  * @copyright  2012 Sam Hemelryk
44  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
45  */
46 abstract class cache_store_base implements cache_store {
48     /**
49      * Returns true if the user can add an instance of the store plugin.
50      *
51      * @return bool
52      */
53     public static function can_add_instance() {
54         return true;
55     }
57     /**
58      * Returns true if the store instance guarantees data.
59      *
60      * @return bool
61      */
62     public function supports_data_guarantee() {
63         return $this::get_supported_features() & self::SUPPORTS_DATA_GUARANTEE;
64     }
66     /**
67      * Returns true if the store instance supports multiple identifiers.
68      *
69      * @return bool
70      */
71     public function supports_multiple_identifiers() {
72         return $this::get_supported_features() & self::SUPPORTS_MULTIPLE_IDENTIFIERS;
73     }
75     /**
76      * Returns true if the store instance supports native ttl.
77      *
78      * @return bool
79      */
80     public function supports_native_ttl() {
81         return $this::supports_data_guarantee() & self::SUPPORTS_NATIVE_TTL;
82     }
83 }