Browse Source

Merge pull request #10512 from cakephp/3next-cookieinterface

Added most commonly used cookie methods to the CookieInterface.
Mark Story 9 years ago
parent
commit
0d2417decc
2 changed files with 113 additions and 1 deletions
  1. 1 1
      src/Http/Cookie/CookieCollection.php
  2. 112 0
      src/Http/Cookie/CookieInterface.php

+ 1 - 1
src/Http/Cookie/CookieCollection.php

@@ -36,7 +36,7 @@ class CookieCollection implements IteratorAggregate, Countable
     /**
      * Cookie objects
      *
-     * @var Cookie[]
+     * @var \Cake\Http\Cookie\CookieInterface[]
      */
     protected $cookies = [];
 

+ 112 - 0
src/Http/Cookie/CookieInterface.php

@@ -13,6 +13,8 @@
  */
 namespace Cake\Http\Cookie;
 
+use DateTimeInterface;
+
 /**
  * Cookie Interface
  */
@@ -49,6 +51,116 @@ interface CookieInterface
     public function withValue($value);
 
     /**
+     * Get the id for a cookie
+     *
+     * Cookies are unique across name, domain, path tuples.
+     *
+     * @return string
+     */
+    public function getId();
+
+    /**
+     * Get the path attribute.
+     *
+     * @return string
+     */
+    public function getPath();
+
+    /**
+     * Create a new cookie with an updated path
+     *
+     * @param string $path Sets the path
+     * @return static
+     */
+    public function withPath($path);
+
+    /**
+     * Get the domain attribute.
+     *
+     * @return string
+     */
+    public function getDomain();
+
+    /**
+     * Create a cookie with an updated domain
+     *
+     * @param string $domain Domain to set
+     * @return static
+     */
+    public function withDomain($domain);
+
+    /**
+     * Get the current expiry time
+     *
+     * @return DateTimeInterface|null Timestamp of expiry or null
+     */
+    public function getExpiry();
+
+    /**
+     * Create a cookie with an updated expiration date
+     *
+     * @param DateTimeInterface $dateTime Date time object
+     * @return static
+     */
+    public function withExpiry(DateTimeInterface $dateTime);
+
+    /**
+     * Create a new cookie that will virtually never expire.
+     *
+     * @return static
+     */
+    public function withNeverExpire();
+
+    /**
+     * Create a new cookie that will expire/delete the cookie from the browser.
+     *
+     * This is done by setting the expiration time to 1 year ago
+     *
+     * @return static
+     */
+    public function withExpired();
+
+    /**
+     * Check if a cookie is expired when compared to $time
+     *
+     * Cookies without an expiration date always return false.
+     *
+     * @param \DatetimeInterface $time The time to test against. Defaults to 'now' in UTC.
+     * @return bool
+     */
+    public function isExpired(DatetimeInterface $time = null);
+
+    /**
+     * Check if the cookie is HTTP only
+     *
+     * @return bool
+     */
+    public function isHttpOnly();
+
+    /**
+     * Create a cookie with HTTP Only updated
+     *
+     * @param bool $httpOnly HTTP Only
+     * @return static
+     */
+    public function withHttpOnly($httpOnly);
+
+    /**
+     * Check if the cookie is secure
+     *
+     * @return bool
+     */
+    public function isSecure();
+
+    /**
+     * Create a cookie with Secure updated
+     *
+     * @param bool $secure Secure attribute value
+     * @return static
+     */
+    public function withSecure($secure);
+
+    /**
      * Returns the cookie as header value
      *
      * @return string