summaryrefslogtreecommitdiff
path: root/framework/interfaces.php
diff options
context:
space:
mode:
authorxue <>2006-04-04 04:08:48 +0000
committerxue <>2006-04-04 04:08:48 +0000
commit66843b23960e17991db0b4f7b01487063b2234bc (patch)
treedd4432597cc7d4f416da1fb3602daaee23778313 /framework/interfaces.php
parentccd3c322df4ac2e19e415ff53c9717ff87164102 (diff)
Refactored cache classes with support for cache dependency
Diffstat (limited to 'framework/interfaces.php')
-rw-r--r--framework/interfaces.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/framework/interfaces.php b/framework/interfaces.php
index f63da347..ca5c77bb 100644
--- a/framework/interfaces.php
+++ b/framework/interfaces.php
@@ -169,4 +169,77 @@ interface IStatePersister
public function save($state);
}
+
+/**
+ * ICache interface.
+ *
+ * This interface must be implemented by cache managers.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @version $Revision: $ $Date: $
+ * @package System
+ * @since 3.0
+ */
+interface ICache
+{
+ /**
+ * Retrieves a value from cache with a specified key.
+ * @param string a key identifying the cached value
+ * @return mixed the value stored in cache, false if the value is not in the cache or expired.
+ */
+ public function get($id);
+ /**
+ * Stores a value identified by a key into cache.
+ * If the cache already contains such a key, the existing value and
+ * expiration time will be replaced with the new ones.
+ *
+ * @param string the key identifying the value to be cached
+ * @param mixed the value to be cached
+ * @param integer the number of seconds in which the cached value will expire. 0 means never expire.
+ * @param ICacheDependency dependency of the cached item. If the dependency changes, the item is labelled invalid.
+ * @return boolean true if the value is successfully stored into cache, false otherwise
+ */
+ public function set($id,$value,$expire=0,$dependency=null);
+ /**
+ * Stores a value identified by a key into cache if the cache does not contain this key.
+ * Nothing will be done if the cache already contains the key.
+ * @param string the key identifying the value to be cached
+ * @param mixed the value to be cached
+ * @param integer the number of seconds in which the cached value will expire. 0 means never expire.
+ * @param ICacheDependency dependency of the cached item. If the dependency changes, the item is labelled invalid.
+ * @return boolean true if the value is successfully stored into cache, false otherwise
+ */
+ public function add($id,$value,$expire=0,$dependency=null);
+ /**
+ * Deletes a value with the specified key from cache
+ * @param string the key of the value to be deleted
+ * @return boolean if no error happens during deletion
+ */
+ public function delete($id);
+ /**
+ * Deletes all values from cache.
+ * Be careful of performing this operation if the cache is shared by multiple applications.
+ */
+ public function flush();
+}
+
+/**
+ * ICacheDependency interface.
+ *
+ * This interface must be implemented by classes meant to be used as
+ * cache dependencies.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @version $Revision: $ $Date: $
+ * @package System
+ * @since 3.0
+ */
+interface ICacheDependency
+{
+ /**
+ * @return boolean whether the dependency has changed. Defaults to false.
+ */
+ public function getHasChanged();
+}
+
?> \ No newline at end of file