* @file
* @ingroup Cache
*/
+use Wikimedia\Assert\Assert;
/**
* Handles a simple LRU key/value map with a maximum number of entries
/**
* @param int $maxKeys Maximum number of entries allowed (min 1).
- * @throws Exception When $maxCacheKeys is not an int or =< 0.
+ * @throws Exception When $maxCacheKeys is not an int or not above zero.
*/
public function __construct( $maxKeys ) {
- if ( !is_int( $maxKeys ) || $maxKeys < 1 ) {
- throw new Exception( __METHOD__ . " must be given an integer and >= 1" );
- }
+ Assert::parameterType( 'integer', $maxKeys, '$maxKeys' );
+ Assert::parameter( $maxKeys > 0, '$maxKeys', 'must be above zero' );
+
$this->maxCacheKeys = $maxKeys;
}
*/
public function set( $key, $value ) {
if ( array_key_exists( $key, $this->cache ) ) {
- $this->ping( $key ); // push to top
+ $this->ping( $key );
} elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
reset( $this->cache );
$evictKey = key( $this->cache );
* @return mixed
*/
public function get( $key ) {
- if ( array_key_exists( $key, $this->cache ) ) {
- $this->ping( $key ); // push to top
- return $this->cache[$key];
- } else {
+ if ( !array_key_exists( $key, $this->cache ) ) {
return null;
}
+ $this->ping( $key );
+ return $this->cache[$key];
}
/**