* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Sensio\Bundle\FrameworkExtraBundle\Configuration; /** * The Cache class handles the Cache annotation parts. * * @author Fabien Potencier * @Annotation */ class Cache extends ConfigurationAnnotation { /** * The expiration date as a valid date for the strtotime() function. * * @var string */ private $expires; /** * The number of seconds that the response is considered fresh by a private * cache like a web browser. * * @var int */ private $maxage; /** * The number of seconds that the response is considered fresh by a public * cache like a reverse proxy cache. * * @var int */ private $smaxage; /** * Whether the response is public or not. * * @var bool */ private $public; /** * Whether or not the response must be revalidated. * * @var bool */ private $mustRevalidate; /** * Additional "Vary:"-headers. * * @var array */ private $vary; /** * An expression to compute the Last-Modified HTTP header. * * @var string */ private $lastModified; /** * An expression to compute the ETag HTTP header. * * @var string */ private $etag; /** * max-stale Cache-Control header * It can be expressed in seconds or with a relative time format (1 day, 2 weeks, ...). * * @var int|string */ private $maxStale; /** * stale-while-revalidate Cache-Control header * It can be expressed in seconds or with a relative time format (1 day, 2 weeks, ...). * * @var int|string */ private $staleWhileRevalidate; /** * stale-if-error Cache-Control header * It can be expressed in seconds or with a relative time format (1 day, 2 weeks, ...). * * @var int|string */ private $staleIfError; /** * Returns the expiration date for the Expires header field. * * @return string */ public function getExpires() { return $this->expires; } /** * Sets the expiration date for the Expires header field. * * @param string $expires A valid php date */ public function setExpires($expires) { $this->expires = $expires; } /** * Sets the number of seconds for the max-age cache-control header field. * * @param int $maxage A number of seconds */ public function setMaxAge($maxage) { $this->maxage = $maxage; } /** * Returns the number of seconds the response is considered fresh by a * private cache. * * @return int */ public function getMaxAge() { return $this->maxage; } /** * Sets the number of seconds for the s-maxage cache-control header field. * * @param int $smaxage A number of seconds */ public function setSMaxAge($smaxage) { $this->smaxage = $smaxage; } /** * Returns the number of seconds the response is considered fresh by a * public cache. * * @return int */ public function getSMaxAge() { return $this->smaxage; } /** * Returns whether or not a response is public. * * @return bool */ public function isPublic() { return true === $this->public; } /** * @return bool */ public function mustRevalidate() { return true === $this->mustRevalidate; } /** * Forces a response to be revalidated. * * @param bool $mustRevalidate */ public function setMustRevalidate($mustRevalidate) { $this->mustRevalidate = (bool) $mustRevalidate; } /** * Returns whether or not a response is private. * * @return bool */ public function isPrivate() { return false === $this->public; } /** * Sets a response public. * * @param bool $public A boolean value */ public function setPublic($public) { $this->public = (bool) $public; } /** * Returns the custom "Vary"-headers. * * @return array */ public function getVary() { return $this->vary; } /** * Add additional "Vary:"-headers. * * @param array $vary */ public function setVary($vary) { $this->vary = $vary; } /** * Sets the "Last-Modified"-header expression. * * @param string $expression */ public function setLastModified($expression) { $this->lastModified = $expression; } /** * Returns the "Last-Modified"-header expression. * * @return string */ public function getLastModified() { return $this->lastModified; } /** * Sets the "ETag"-header expression. * * @param string $expression */ public function setEtag($expression) { $this->etag = $expression; } /** * Returns the "ETag"-header expression. * * @return string */ public function getEtag() { return $this->etag; } /** * @return int|string */ public function getMaxStale() { return $this->maxStale; } /** * Sets the number of seconds for the max-stale cache-control header field. * * @param int|string $maxStale A number of seconds */ public function setMaxStale($maxStale) { $this->maxStale = $maxStale; } /** * @return int|string */ public function getStaleWhileRevalidate() { return $this->staleWhileRevalidate; } /** * @param int|string $staleWhileRevalidate * * @return self */ public function setStaleWhileRevalidate($staleWhileRevalidate) { $this->staleWhileRevalidate = $staleWhileRevalidate; return $this; } /** * @return int|string */ public function getStaleIfError() { return $this->staleIfError; } /** * @param int|string $staleIfError * * @return self */ public function setStaleIfError($staleIfError) { $this->staleIfError = $staleIfError; return $this; } /** * Returns the annotation alias name. * * @return string * * @see ConfigurationInterface */ public function getAliasName() { return 'cache'; } /** * Only one cache directive is allowed. * * @return bool * * @see ConfigurationInterface */ public function allowArray() { return false; } }