Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00017 final class WatermarkedPeer extends SelectivePeer
00018 {
00019 private $peer = null;
00020 private $watermark = null;
00021
00023 private $map = null;
00024
00028 public static function create(
00029 CachePeer $peer,
00030 $watermark = "Single onPHP's project"
00031 )
00032 {
00033 return new self($peer, $watermark);
00034 }
00035
00036 public function __construct(
00037 CachePeer $peer,
00038 $watermark = "Single onPHP's project"
00039 )
00040 {
00041 $this->peer = $peer;
00042 $this->setWatermark($watermark);
00043 }
00044
00045 public function setWatermark($watermark)
00046 {
00047 $this->watermark = md5($watermark.' ['.ONPHP_VERSION.']::');
00048
00049 return $this;
00050 }
00051
00052 public function getWatermark()
00053 {
00054 return $this->watermark;
00055 }
00056
00057 public function getActualWatermark()
00058 {
00059 if (
00060 $this->className
00061 && isset($this->map[$this->className])
00062 )
00063 return $this->map[$this->className];
00064
00065 return $this->watermark;
00066 }
00067
00073 public function setClassMap($map)
00074 {
00075 $this->map = array();
00076
00077 foreach ($map as $className => $watermark)
00078 $this->map[$className] = md5($watermark.' ['.ONPHP_VERSION.']::');
00079
00080 return $this;
00081 }
00082
00086 public function mark($className)
00087 {
00088 $this->className = $className;
00089
00090 $this->peer->mark($this->getActualWatermark().$className);
00091
00092 return $this;
00093 }
00094
00095 public function increment($key, $value)
00096 {
00097 return $this->peer->increment(
00098 $this->getActualWatermark().$key,
00099 $value
00100 );
00101 }
00102
00103 public function decrement($key, $value)
00104 {
00105 return $this->peer->decrement(
00106 $this->getActualWatermark().$key,
00107 $value
00108 );
00109 }
00110
00111 public function getList($indexes)
00112 {
00113 foreach ($indexes as &$index)
00114 $index = $this->getActualWatermark().$index;
00115
00116 return $this->peer->getList($indexes);
00117 }
00118
00119 public function get($key)
00120 {
00121 return $this->peer->get($this->getActualWatermark().$key);
00122 }
00123
00124 public function delete($key)
00125 {
00126 return $this->peer->delete($this->getActualWatermark().$key);
00127 }
00128
00132 public function clean()
00133 {
00134 $this->peer->clean();
00135
00136 return parent::clean();
00137 }
00138
00139 public function isAlive()
00140 {
00141 return $this->peer->isAlive();
00142 }
00143
00144 public function append($key, $data)
00145 {
00146 return $this->peer->append($this->getActualWatermark().$key, $data);
00147 }
00148
00149 protected function store(
00150 $action, $key, $value, $expires = Cache::EXPIRES_MEDIUM
00151 )
00152 {
00153 return
00154 $this->peer->$action(
00155 $this->getActualWatermark().$key, $value, $expires
00156 );
00157 }
00158 }
00159 ?>