MediaWiki  REL1_22
HashBagOStuff.php
Go to the documentation of this file.
00001 <?php
00030 class HashBagOStuff extends BagOStuff {
00031     var $bag;
00032 
00033     function __construct() {
00034         $this->bag = array();
00035     }
00036 
00041     protected function expire( $key ) {
00042         $et = $this->bag[$key][1];
00043 
00044         if ( ( $et == 0 ) || ( $et > time() ) ) {
00045             return false;
00046         }
00047 
00048         $this->delete( $key );
00049 
00050         return true;
00051     }
00052 
00058     function get( $key, &$casToken = null ) {
00059         if ( !isset( $this->bag[$key] ) ) {
00060             return false;
00061         }
00062 
00063         if ( $this->expire( $key ) ) {
00064             return false;
00065         }
00066 
00067         $casToken = $this->bag[$key][0];
00068 
00069         return $this->bag[$key][0];
00070     }
00071 
00078     function set( $key, $value, $exptime = 0 ) {
00079         $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
00080         return true;
00081     }
00082 
00090     function cas( $casToken, $key, $value, $exptime = 0 ) {
00091         if ( $this->get( $key ) === $casToken ) {
00092             return $this->set( $key, $value, $exptime );
00093         }
00094 
00095         return false;
00096     }
00097 
00103     function delete( $key, $time = 0 ) {
00104         if ( !isset( $this->bag[$key] ) ) {
00105             return false;
00106         }
00107 
00108         unset( $this->bag[$key] );
00109 
00110         return true;
00111     }
00112 }