# Cookie

> Cookie represents information related with a cookie, such as $name, $value, $domain, etc.

[API reference](/docs/api/index.md) › [yii](/docs/api/yii/index.md) › [web](/docs/api/yii/web/index.md) › Cookie

| class | `yii\web\Cookie` |
| --- | --- |
| Extends | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| Implements | [`yii\base\Configurable`](/docs/api/yii/base/configurable/index.md) |
| Since | 2.0 |
| Source | [`framework/web/Cookie.php`](https://github.com/yiisoft/yii2/blob/22.0/framework/web/Cookie.php#L19) |

Cookie represents information related with a cookie, such as [`$name`](/docs/api/yii/web/cookie/index.md#property-name), [`$value`](/docs/api/yii/web/cookie/index.md#property-value), [`$domain`](/docs/api/yii/web/cookie/index.md#property-domain), etc.

For more details and usage information on Cookie, see the [guide article on handling cookies](/docs/guide/runtime-sessions-cookies/index.md).

## Properties

| Property | Type | Description | Defined by |
| --- | --- | --- | --- |
| <span id="property-domain"></span>`$domain` | `string` | Domain of the cookie Default: `''`. | `Cookie` |
| [`$expire`](#property-expire) | `int\|string\|`[`DateTimeInterface`](https://www.php.net/manual/en/class.datetimeinterface.php)`\|null` | The timestamp or date at which the cookie expires. Default: `0`. | `Cookie` |
| [`$httpOnly`](#property-httpOnly) | `bool` | Whether the cookie should be accessible only through the HTTP protocol. Default: `true`. | `Cookie` |
| <span id="property-name"></span>`$name` | `string` | Name of the cookie Default: `null`. | `Cookie` |
| [`$path`](#property-path) | `string` | The path on the server in which the cookie will be available on. Default: `'/'`. | `Cookie` |
| [`$sameSite`](#property-sameSite) | `string` | SameSite prevents the browser from sending this cookie along with cross-site requests. Default: `self::SAME_SITE_LAX`. Available since 2.0.21. | `Cookie` |
| <span id="property-secure"></span>`$secure` | `bool` | Whether cookie should be sent via secure connection Default: `false`. | `Cookie` |
| <span id="property-value"></span>`$value` | `string` | Value of the cookie Default: `''`. | `Cookie` |

## Methods

| Method | Description | Defined by |
| --- | --- | --- |
| <span id="method-__construct"></span>[`__construct()`](/docs/api/yii/base/baseobject/index.md#method-__construct) | Constructor. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__call"></span>[`__call()`](/docs/api/yii/base/baseobject/index.md#method-__call) | Calls the named method which is not a class method. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__get"></span>[`__get()`](/docs/api/yii/base/baseobject/index.md#method-__get) | Returns the value of an object property. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__isset"></span>[`__isset()`](/docs/api/yii/base/baseobject/index.md#method-__isset) | Checks if a property is set, i.e. defined and not null. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__set"></span>[`__set()`](/docs/api/yii/base/baseobject/index.md#method-__set) | Sets value of an object property. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| [`__toString()`](#method-__toString) | Magic method to turn a cookie object into a string without having to explicitly access [`$value`](/docs/api/yii/web/cookie/index.md#property-value). | `Cookie` |
| <span id="method-__unset"></span>[`__unset()`](/docs/api/yii/base/baseobject/index.md#method-__unset) | Sets an object property to null. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-canGetProperty"></span>[`canGetProperty()`](/docs/api/yii/base/baseobject/index.md#method-canGetProperty) | Returns a value indicating whether a property can be read. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-canSetProperty"></span>[`canSetProperty()`](/docs/api/yii/base/baseobject/index.md#method-canSetProperty) | Returns a value indicating whether a property can be set. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-className"></span>[`className()`](/docs/api/yii/base/baseobject/index.md#method-className) static | Returns the fully qualified name of this class. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-hasMethod"></span>[`hasMethod()`](/docs/api/yii/base/baseobject/index.md#method-hasMethod) | Returns a value indicating whether a method is defined. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-hasProperty"></span>[`hasProperty()`](/docs/api/yii/base/baseobject/index.md#method-hasProperty) | Returns a value indicating whether a property is defined. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-init"></span>[`init()`](/docs/api/yii/base/baseobject/index.md#method-init) | Initializes the object. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |

## Constants

| Constant | Value | Description | Defined by |
| --- | --- | --- | --- |
| <span id="const-SAME_SITE_LAX"></span>`SAME_SITE_LAX` | `'Lax'` | SameSite policy Lax will prevent the cookie from being sent by the browser in all cross-site browsing context during CSRF-prone request methods (e.g. POST, PUT, PATCH etc). | `Cookie` |
| <span id="const-SAME_SITE_STRICT"></span>`SAME_SITE_STRICT` | `'Strict'` | SameSite policy Strict will prevent the cookie from being sent by the browser in all cross-site browsing context regardless of the request method and even when following a regular link. | `Cookie` |
| <span id="const-SAME_SITE_NONE"></span>`SAME_SITE_NONE` | `'None'` | SameSite policy None disables the SameSite policy so cookies will be sent in all contexts, i.e in responses to both first-party and cross-origin requests. Available since 2.0.43. | `Cookie` |

## Property details

### $expire <span id="property-expire"></span>

```php
public int|string|DateTimeInterface|null $expire = 0
```

The timestamp or date at which the cookie expires.

This is the server timestamp.
Defaults to 0, meaning "until the browser is closed" (the same applies to `null`).

### $httpOnly <span id="property-httpOnly"></span>

```php
public bool $httpOnly = true
```

Whether the cookie should be accessible only through the HTTP protocol.

By setting this property to true, the cookie will not be accessible by scripting languages,
such as JavaScript, which can effectively help to reduce identity theft through XSS attacks.

### $path <span id="property-path"></span>

```php
public string $path = '/'
```

The path on the server in which the cookie will be available on.

The default is '/'.

### $sameSite <span id="property-sameSite"></span>

```php
public string $sameSite = self::SAME_SITE_LAX
```

SameSite prevents the browser from sending this cookie along with cross-site requests.

See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite for more information about sameSite.

**Since**

2.0.21

## Method details

### __toString() <span id="method-__toString"></span>

```php
public function __toString(): string
```

Magic method to turn a cookie object into a string without having to explicitly access [`$value`](/docs/api/yii/web/cookie/index.md#property-value).

```
if (isset($request->cookies['name'])) {
    $value = (string) $request->cookies['name'];
}
```

**Returns**

`string`: The value of the cookie. If the value property is null, an empty string will be returned.