* Check if a key exists
*
* @param string $key
- * @param float $maxAge Ignore items older than this many seconds (since 1.32)
+ * @param float $maxAge Ignore items older than this many seconds [optional] (since 1.32)
* @return bool
*/
public function has( $key, $maxAge = 0.0 ) {
* If the item is already set, it will be pushed to the top of the cache.
*
* @param string $key
- * @return mixed Returns null if the key was not found
+ * @param float $maxAge Ignore items older than this many seconds [optional] (since 1.32)
+ * @return mixed Returns null if the key was not found or is older than $maxAge
*/
- public function get( $key ) {
- if ( !$this->has( $key ) ) {
+ public function get( $key, $maxAge = 0.0 ) {
+ if ( !$this->has( $key, $maxAge ) ) {
return null;
}
/**
* @param string|int $key
* @param string|int $field
- * @param float $maxAge
+ * @param float $maxAge Ignore items older than this many seconds [optional] (since 1.32)
* @return bool
*/
public function hasField( $key, $field, $maxAge = 0.0 ) {
return ( $maxAge <= 0 || $this->getAge( $key, $field ) <= $maxAge );
}
- public function getField( $key, $field ) {
- return $this->get( $key )[$field] ?? null;
+ /**
+ * @param string|int $key
+ * @param string|int $field
+ * @param float $maxAge Ignore items older than this many seconds [optional] (since 1.32)
+ * @return mixed Returns null if the key was not found or is older than $maxAge
+ */
+ public function getField( $key, $field, $maxAge = 0.0 ) {
+ if ( !$this->hasField( $key, $field, $maxAge ) ) {
+ return null;
+ }
+
+ return $this->cache[$key][$field];
}
/**
$now += 29;
$this->assertTrue( $cache->has( 'd', 30 ) );
$this->assertEquals( 'xxx', $cache->get( 'd' ) );
+ $this->assertEquals( 'xxx', $cache->get( 'd', 30 ) );
$now += 1.5;
$this->assertFalse( $cache->has( 'd', 30 ) );
$this->assertEquals( 'xxx', $cache->get( 'd' ) );
+ $this->assertNull( $cache->get( 'd', 30 ) );
}
/**
$cache->setField( 'PMs', 'Margaret Thatcher', 'Tory' );
$this->assertTrue( $cache->hasField( 'PMs', 'Tony Blair', 30 ) );
$this->assertEquals( 'Labour', $cache->getField( 'PMs', 'Tony Blair' ) );
+ $this->assertTrue( $cache->hasField( 'PMs', 'Tony Blair', 30 ) );
$now += 29;
$this->assertTrue( $cache->hasField( 'PMs', 'Tony Blair', 30 ) );
$this->assertEquals( 'Labour', $cache->getField( 'PMs', 'Tony Blair' ) );
+ $this->assertEquals( 'Labour', $cache->getField( 'PMs', 'Tony Blair', 30 ) );
$now += 1.5;
$this->assertFalse( $cache->hasField( 'PMs', 'Tony Blair', 30 ) );
$this->assertEquals( 'Labour', $cache->getField( 'PMs', 'Tony Blair' ) );
+ $this->assertNull( $cache->getField( 'PMs', 'Tony Blair', 30 ) );
$this->assertEquals(
[ 'Tony Blair' => 'Labour', 'Margaret Thatcher' => 'Tory' ],