[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/objectcache/ -> HashBagOStuff.php (source)

   1  <?php
   2  /**
   3   * Object caching using PHP arrays.
   4   *
   5   * This program is free software; you can redistribute it and/or modify
   6   * it under the terms of the GNU General Public License as published by
   7   * the Free Software Foundation; either version 2 of the License, or
   8   * (at your option) any later version.
   9   *
  10   * This program is distributed in the hope that it will be useful,
  11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13   * GNU General Public License for more details.
  14   *
  15   * You should have received a copy of the GNU General Public License along
  16   * with this program; if not, write to the Free Software Foundation, Inc.,
  17   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18   * http://www.gnu.org/copyleft/gpl.html
  19   *
  20   * @file
  21   * @ingroup Cache
  22   */
  23  
  24  /**
  25   * This is a test of the interface, mainly. It stores things in an associative
  26   * array, which is not going to persist between program runs.
  27   *
  28   * @ingroup Cache
  29   */
  30  class HashBagOStuff extends BagOStuff {
  31      /** @var array */
  32      protected $bag;
  33  
  34  	function __construct() {
  35          $this->bag = array();
  36      }
  37  
  38      /**
  39       * @param string $key
  40       * @return bool
  41       */
  42  	protected function expire( $key ) {
  43          $et = $this->bag[$key][1];
  44  
  45          if ( ( $et == 0 ) || ( $et > time() ) ) {
  46              return false;
  47          }
  48  
  49          $this->delete( $key );
  50  
  51          return true;
  52      }
  53  
  54      /**
  55       * @param string $key
  56       * @param mixed $casToken [optional]
  57       * @return bool|mixed
  58       */
  59  	function get( $key, &$casToken = null ) {
  60          if ( !isset( $this->bag[$key] ) ) {
  61              return false;
  62          }
  63  
  64          if ( $this->expire( $key ) ) {
  65              return false;
  66          }
  67  
  68          $casToken = serialize( $this->bag[$key][0] );
  69  
  70          return $this->bag[$key][0];
  71      }
  72  
  73      /**
  74       * @param string $key
  75       * @param mixed $value
  76       * @param int $exptime
  77       * @return bool
  78       */
  79  	function set( $key, $value, $exptime = 0 ) {
  80          $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
  81          return true;
  82      }
  83  
  84      /**
  85       * @param mixed $casToken
  86       * @param string $key
  87       * @param mixed $value
  88       * @param int $exptime
  89       * @return bool
  90       */
  91  	function cas( $casToken, $key, $value, $exptime = 0 ) {
  92          if ( serialize( $this->get( $key ) ) === $casToken ) {
  93              return $this->set( $key, $value, $exptime );
  94          }
  95  
  96          return false;
  97      }
  98  
  99      /**
 100       * @param string $key
 101       * @param int $time
 102       * @return bool
 103       */
 104  	function delete( $key, $time = 0 ) {
 105          if ( !isset( $this->bag[$key] ) ) {
 106              return false;
 107          }
 108  
 109          unset( $this->bag[$key] );
 110  
 111          return true;
 112      }
 113  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1