* @return void
*/
public function set( $key, $value ) {
- if ( array_key_exists( $key, $this->cache ) ) {
+ if ( $this->has( $key ) ) {
$this->ping( $key );
} elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
reset( $this->cache );
* @return bool
*/
public function has( $key ) {
+ if ( !is_int( $key ) && !is_string( $key ) ) {
+ throw new MWException( __METHOD__ . ' called with invalid key. Must be string or integer.' );
+ }
return array_key_exists( $key, $this->cache );
}
* @return mixed Returns null if the key was not found
*/
public function get( $key ) {
- if ( !array_key_exists( $key, $this->cache ) ) {
+ if ( !$this->has( $key ) ) {
return null;
}
* @return mixed The cached value if found or the result of $callback otherwise
*/
public function getWithSetCallback( $key, callable $callback ) {
- $value = $this->get( $key );
- if ( $value === null ) {
+ if ( $this->has( $key ) ) {
+ $value = $this->get( $key );
+ } else {
$value = call_user_func( $callback );
if ( $value !== false ) {
$this->set( $key, $value );