クラス yii\web\Cookie
継承 | yii\web\Cookie » yii\base\BaseObject |
---|---|
実装 | yii\base\Configurable |
利用可能バージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/web/Cookie.php |
Cookie は、$name、$value、$domainなど、Cookieに関連する情報を表します。
Cookieの詳細と使用方法については、Cookieのハンドリングに関するガイド記事を参照してください。
公開プロパティ
プロパティ | 型 | 説明 | 定義元 |
---|---|---|---|
$domain | string | Cookieのドメイン | yii\web\Cookie |
$expire | integer|string|DateTimeInterface|null | Cookieが期限切れになるタイムスタンプまたは日付。 | yii\web\Cookie |
$httpOnly | boolean | CookieをHTTPプロトコルでのみアクセス可能にするかどうか。 | yii\web\Cookie |
$name | string | Cookieの名前 | yii\web\Cookie |
$path | string | Cookieが利用可能になるサーバー上のパス。 | yii\web\Cookie |
$sameSite | string | SameSiteは、ブラウザがクロスサイトリクエストと共にこのCookieを送信するのを防ぎます。 | yii\web\Cookie |
$secure | boolean | Cookieをセキュアな接続を介して送信するかどうか。 | yii\web\Cookie |
$value | string | Cookieの値 | yii\web\Cookie |
公開メソッド
メソッド | 説明 | 定義元 |
---|---|---|
__call() | クラスメソッドではない名前付きメソッドを呼び出します。 | yii\base\BaseObject |
__construct() | コンストラクタ。 | yii\base\BaseObject |
__get() | オブジェクトプロパティの値を返します。 | yii\base\BaseObject |
__isset() | プロパティが設定されているかどうか(定義されていてnullではない)を確認します。 | yii\base\BaseObject |
__set() | オブジェクトプロパティの値を設定します。 | yii\base\BaseObject |
__toString() | $valueに明示的にアクセスすることなく、Cookieオブジェクトを文字列に変換するマジックメソッド。 | yii\web\Cookie |
__unset() | オブジェクトプロパティをnullに設定します。 | yii\base\BaseObject |
canGetProperty() | プロパティを読み取ることができるかどうかを示す値を返します。 | yii\base\BaseObject |
canSetProperty() | プロパティを設定できるかどうかを示す値を返します。 | yii\base\BaseObject |
className() | このクラスの完全修飾名を返します。 | yii\base\BaseObject |
hasMethod() | メソッドが定義されているかどうかを示す値を返します。 | yii\base\BaseObject |
hasProperty() | プロパティが定義されているかどうかを示す値を返します。 | yii\base\BaseObject |
init() | オブジェクトを初期化します。 | yii\base\BaseObject |
定数
定数 | 値 | 説明 | 定義元 |
---|---|---|---|
SAME_SITE_LAX | 'Lax' | SameSiteポリシーLaxは、CSRFになりやすいリクエストメソッド(例:POST、PUT、PATCHなど)の間、すべてのクロスサイトブラウジングコンテキストでブラウザがCookieを送信するのを防ぎます。https://otherdomain.comからhttps://yourdomain.comへのPOSTリクエストにはCookieは含まれませんが、GETリクエストには含まれます。ユーザーがhttps://otherdomain.comからhttps://yourdomain.comへのリンクをクリックすると、Cookieが含まれます。 | yii\web\Cookie |
SAME_SITE_NONE | 'None' | SameSiteポリシーNoneはSameSiteポリシーを無効にするため、Cookieはすべてのコンテキストで送信されます。つまり、ファーストパーティとクロスオリジンの両方のリクエストへのレスポンスで送信されます。https://otherdomain.comからhttps://yourdomain.comへのPOSTリクエストにはCookieが含まれます。注:`sameSite`がNoneに設定されている場合、`secure`属性を`true`に設定する必要があります(それ以外の場合は、Cookieがブラウザによってブロックされます)。 | yii\web\Cookie |
SAME_SITE_STRICT | 'Strict' | SameSiteポリシーStrictは、リクエストメソッドに関係なく、通常のリンクをクリックする場合でも、すべてのクロスサイトブラウジングコンテキストでブラウザがCookieを送信するのを防ぎます。https://otherdomain.comからhttps://yourdomain.comへのGETリクエスト、またはユーザーがhttps://otherdomain.comからhttps://yourdomain.comへのリンクをクリックしても、Cookieは含まれません。 | yii\web\Cookie |
プロパティの詳細
クッキーの有効期限を表すタイムスタンプまたは日付です。これはサーバーのタイムスタンプです。デフォルトは0で、「ブラウザが閉じられるまで」を意味します(null
も同様です)。
クッキーがHTTPプロトコルでのみアクセス可能であるかどうかを指定します。このプロパティをtrueに設定すると、JavaScriptなどのスクリプト言語からクッキーにアクセスできなくなり、XSS攻撃によるなりすましを効果的に防ぐことができます。
SameSiteは、ブラウザがクロスサイトリクエストと共にこのCookieを送信するのを防ぎます。
sameSiteの詳細については、https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSiteを参照してください。
メソッドの詳細
定義されている場所: yii\base\BaseObject::__call()
クラスメソッドではない名前付きメソッドを呼び出します。
これはPHPのマジックメソッドであり、未知のメソッドが呼び出された際に暗黙的に呼び出されるため、直接呼び出さないでください。
public mixed __call ( $name, $params ) | ||
$name | string |
メソッド名 |
$params | array |
メソッドパラメータ |
戻り値 | mixed |
メソッドの戻り値 |
---|---|---|
例外 | yii\base\UnknownMethodException |
未知のメソッドを呼び出した場合 |
public function __call($name, $params)
{
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
定義されている場所: yii\base\BaseObject::__construct()
コンストラクタ。
デフォルトの実装では、次の2つのことを行います。
- 指定された設定
$config
を使用してオブジェクトを初期化します。 - init()を呼び出します。
このメソッドを子クラスでオーバーライドする場合は、
- コンストラクタの最後の引数を、ここにある
$config
のような設定配列にすることをお勧めします。 - コンストラクタの最後に親の実装を呼び出してください。
public void __construct ( $config = [] ) | ||
$config | array |
オブジェクトのプロパティを初期化するために使用される名前と値のペア |
public function __construct($config = [])
{
if (!empty($config)) {
Yii::configure($this, $config);
}
$this->init();
}
定義されている場所: yii\base\BaseObject::__get()
オブジェクトプロパティの値を返します。
これはPHPのマジックメソッドであり、$value = $object->property;
を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。
__set()も参照してください。
public mixed __get ( $name ) | ||
$name | string |
プロパティ名 |
戻り値 | mixed |
プロパティの値 |
---|---|---|
例外 | yii\base\UnknownPropertyException |
プロパティが定義されていない場合 |
例外 | yii\base\InvalidCallException |
プロパティが書き込み専用の場合 |
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter();
} elseif (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
定義されている場所: yii\base\BaseObject::__isset()
プロパティが設定されているかどうか(定義されていてnullではない)を確認します。
これはPHPのマジックメソッドであり、isset($object->property)
を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。
プロパティが定義されていない場合は、falseが返されることに注意してください。
public boolean __isset ( $name ) | ||
$name | string |
プロパティ名またはイベント名 |
戻り値 | boolean |
指定されたプロパティが設定されているかどうか(nullではない)。 |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
return false;
}
定義位置: yii\base\BaseObject::__set()
オブジェクトプロパティの値を設定します。
これはPHPのマジックメソッドであり、`$object->property = $value;` を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。
関連情報: __get().
public void __set ( $name, $value ) | ||
$name | string |
プロパティ名またはイベント名 |
$value | mixed |
プロパティの値 |
例外 | yii\base\UnknownPropertyException |
プロパティが定義されていない場合 |
---|---|---|
例外 | yii\base\InvalidCallException |
プロパティが読み取り専用の場合 |
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter($value);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
}
$valueに明示的にアクセスすることなく、Cookieオブジェクトを文字列に変換するマジックメソッド。
if (isset($request->cookies['name'])) {
$value = (string) $request->cookies['name'];
}
public string __toString ( ) | ||
戻り値 | string |
クッキーの値。valueプロパティがnullの場合、空文字列が返されます。 |
---|
public function __toString()
{
return (string) $this->value;
}
定義位置: yii\base\BaseObject::__unset()
オブジェクトプロパティをnullに設定します。
これはPHPのマジックメソッドであり、`unset($object->property)` を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。
プロパティが定義されていない場合、このメソッドは何もしません。プロパティが読み取り専用の場合、例外がスローされます。
public void __unset ( $name ) | ||
$name | string |
プロパティ名 |
例外 | yii\base\InvalidCallException |
プロパティが読み取り専用の場合。 |
---|
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter(null);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
}
}
定義位置: yii\base\BaseObject::canGetProperty()
プロパティを読み取ることができるかどうかを示す値を返します。
プロパティは、以下の場合に読み取り可能です。
- クラスに、指定された名前と関連付けられたゲッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
- クラスに、指定された名前のメンバ変数がある場合(`$checkVars` がtrueの場合)。
関連情報: canSetProperty().
public boolean canGetProperty ( $name, $checkVars = true ) | ||
$name | string |
プロパティ名 |
$checkVars | boolean |
メンバ変数をプロパティとして扱うかどうか |
戻り値 | boolean |
プロパティを読み取ることができるかどうか |
---|
public function canGetProperty($name, $checkVars = true)
{
return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}
定義位置: yii\base\BaseObject::canSetProperty()
プロパティを設定できるかどうかを示す値を返します。
プロパティは、以下の場合に書き込み可能です。
- クラスに、指定された名前と関連付けられたセッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
- クラスに、指定された名前のメンバ変数がある場合(`$checkVars` がtrueの場合)。
関連情報: canGetProperty().
public boolean canSetProperty ( $name, $checkVars = true ) | ||
$name | string |
プロパティ名 |
$checkVars | boolean |
メンバ変数をプロパティとして扱うかどうか |
戻り値 | boolean |
プロパティを書き込むことができるかどうか |
---|
public function canSetProperty($name, $checkVars = true)
{
return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}
定義位置: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
public static string className ( ) | ||
戻り値 | string |
このクラスの完全修飾名。 |
---|
public static function className()
{
return get_called_class();
}
定義位置: yii\base\BaseObject::hasMethod()
メソッドが定義されているかどうかを示す値を返します。
デフォルトの実装は、PHP関数`method_exists()`の呼び出しです。PHPのマジックメソッド`__call()`を実装した場合は、このメソッドをオーバーライドできます。
public boolean hasMethod ( $name ) | ||
$name | string |
メソッド名 |
戻り値 | boolean |
メソッドが定義されているかどうか |
---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
定義位置: yii\base\BaseObject::hasProperty()
プロパティが定義されているかどうかを示す値を返します。
プロパティは、以下の場合に定義されています。
- クラスに、指定された名前と関連付けられたゲッターまたはセッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
- クラスに、指定された名前のメンバ変数がある場合(`$checkVars` がtrueの場合)。
関連情報:
public boolean hasProperty ( $name, $checkVars = true ) | ||
$name | string |
プロパティ名 |
$checkVars | boolean |
メンバ変数をプロパティとして扱うかどうか |
戻り値 | boolean |
プロパティが定義されているかどうか |
---|
public function hasProperty($name, $checkVars = true)
{
return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}
public void init ( ) |
public function init()
{
}
認証Cookieによるログインの問題が発生している場合、PHP 7.3より前のバージョンでは、sameSite属性の値をNoneとして設定できます。
**'identityCookie' => [
**'name' => 'name', 'httpOnly' => true** 'path' => '/;SameSite=None', 'secure' => true
]**
セッションCookieについては、Cookieパラメータを以下のように変更します。
*'cookieParams' => [
'lifetime' => time()60,
'httpOnly' => true, 'secure'=>true, 'path' => '/;SameSite=None'
]**
コメントするにはサインアップまたはログインしてください。