54 $this->token = microtime(
true ) .
':' . mt_rand();
55 $this->maxCacheKeys =
$params[
'maxKeys'] ?? INF;
56 if ( $this->maxCacheKeys <= 0 ) {
57 throw new InvalidArgumentException(
'$maxKeys parameter must be above zero' );
61 protected function doGet( $key, $flags = 0, &$casToken =
null ) {
69 $temp = $this->bag[$key];
70 unset( $this->bag[$key] );
71 $this->bag[$key] = $temp;
78 public function set( $key,
$value, $exptime = 0, $flags = 0 ) {
80 unset( $this->bag[$key] );
87 if (
count( $this->bag ) > $this->maxCacheKeys ) {
89 $evictKey =
key( $this->bag );
90 unset( $this->bag[$evictKey] );
96 public function add( $key,
$value, $exptime = 0, $flags = 0 ) {
97 if ( $this->
get( $key ) ===
false ) {
98 return $this->
set( $key,
$value, $exptime, $flags );
104 public function delete( $key, $flags = 0 ) {
105 unset( $this->bag[$key] );
111 $n = $this->
get( $key );
113 $n = max( $n + intval(
$value ), 0 );
135 if ( $et == self::TTL_INDEFINITE || $et > $this->
getCurrentTime() ) {
139 $this->
delete( $key );
152 return isset( $this->bag[$key] );