public function expiresAfter($time)
{
if ($time instanceof DateInterval) {
$expire = new DateTime();
$expire->add($time);
// convert datetime to unix timestamp
$this->expire = (int) $expire->format('U');
} elseif (is_int($time)) {
$this->expire = time() + $time;
} elseif (is_null($time)) {
// this is allowed, but just defaults to infinite
$this->expire = 0;
} else {
throw new InvalidArgumentException('Invalid time: ' . serialize($time) . '. Must be integer or ' . 'instance of DateInterval.');
}
$this->changed = true;
return $this;
}