protected function ttl($ttl)
{
if ($ttl === null) {
return 0;
} elseif (is_int($ttl)) {
/*
* PSR-16 only accepts relative timestamps, whereas KeyValueStore
* accepts both relative & absolute, depending on what the timestamp
* is. We'll have to convert all ttls here to absolute, to make sure
* KeyValueStore doesn't get confused.
* @see https://github.com/dragoonis/psr-simplecache/issues/3
*/
if ($ttl < 30 * 24 * 60 * 60) {
return $ttl + time();
}
return $ttl;
} elseif ($ttl instanceof DateInterval) {
// convert DateInterval to integer by adding it to a 0 DateTime
$datetime = new DateTime();
$datetime->setTimestamp(0);
$datetime->add($ttl);
return time() + (int) $datetime->format('U');
}
$error = 'Invalid time: ' . serialize($ttl) . '. Must be integer or ' . 'instance of DateInterval.';
if (class_exists('\\TypeError')) {
throw new \TypeError($error);
}
trigger_error($error, E_USER_ERROR);
return 0;
}