They can only be strings or integers. Anything else is wrong. We
should be throwing exceptions here so developers find this early
when running tests and manual testing.
Exceptions (instead of warnings) allow us to get a full useful
stacktrace.
Change-Id: I823ce33523283509c14a05f816f261d6b400e243
* @return void
*/
public function set( $key, $value ) {
* @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 );
$this->ping( $key );
} elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
reset( $this->cache );
* @return bool
*/
public function has( $key ) {
* @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 array_key_exists( $key, $this->cache );
}
* @return mixed Returns null if the key was not found
*/
public function get( $key ) {
* @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 ) ) {