0 フォロワー

抽象クラス yii\web\MultiFieldSession

継承yii\web\MultiFieldSession » yii\web\Session » yii\base\Component » yii\base\BaseObject
実装ArrayAccess, Countable, IteratorAggregate, yii\base\Configurable
サブクラスyii\web\DbSession
利用可能なバージョン2.0.6
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/web/MultiFieldSession.php

MultiFieldSession は、マルチフィールドデータストレージをサポートするセッションストレージ実装の基本クラスです。

マルチフィールドデータストレージを使用すると、セッションデータをストレージレコード内の複数のフィールドに分割できます。このようなストレージを使用すると、特定のセッションデータを個別のフィールドに保存でき、その後、プレーンなPHPでは許可されない方法でセッションを操作するために使用できます。

たとえば、認証されたユーザーのIDをMySQLの「セッション」テーブルの個別の列として保存できます。これにより、特定のユーザーのアクティブなセッションをすべてクエリしたり、必要に応じてそれらを終了したりできます。

セッションの書き込みのカスタマイズは$writeCallbackを介して実行され、読み取りは$readCallbackを介して実行されます。

このクラスを拡張する場合は、セッションデータをストレージに書き込むときにcomposeFields()メソッドを使用し、ストレージからセッションデータを読み取るときにextractData()メソッドを使用する必要があります。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$_forceRegenerateId string|null useStrictModeが有効で、セッションIDを再生成する必要がある場合に、セッションIDを保持します yii\web\Session
$_originalSessionModule string|null カスタムハンドラが登録される前の元のセッションモジュールを保持します。これにより、カスタムハンドラを持つセッションコンポーネントの後に、カスタムハンドラのないセッションコンポーネントが使用されたときに、元のセッションモジュールを復元できます。 yii\web\Session
$allFlashes array フラッシュメッセージ(キー => メッセージ、またはキー => [メッセージ1、メッセージ2])。 yii\web\Session
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$cacheLimiter string 現在のキャッシュリミッター。 yii\web\Session
$cookieParams array セッションクッキーのパラメータ。 yii\web\Session
$count integer セッション変数の数。 yii\web\Session
$flash string フラッシュメッセージを識別するキー。 yii\web\Session
$flashParam string フラッシュメッセージデータを格納するセッション変数の名前。 yii\web\Session
$gCProbability float すべてのセッション初期化でGC(ガベージコレクション)プロセスが開始される確率(パーセンテージ)。 yii\web\Session
$handler SessionHandlerInterface|array SessionHandlerInterfaceを実装するオブジェクト、または構成配列。 yii\web\Session
$hasSessionId boolean 現在のリクエストがセッションIDを送信したかどうか。 yii\web\Session
$id string 現在のセッションID。 yii\web\Session
$isActive boolean セッションが開始されているかどうか。 yii\web\Session
$iterator yii\web\SessionIterator セッション変数をトラバースするためのイテレータ。 yii\web\Session
$name string 現在のセッション名。 yii\web\Session
$readCallback callable セッションデータの読み取り中に呼び出されるコールバック。 yii\web\MultiFieldSession
$savePath string 現在のセッションの保存パス。デフォルトは '/tmp' です。 yii\web\Session
$timeout integer データが「ガベージ」と見なされてクリーンアップされるまでの秒数。 yii\web\Session
$useCookies boolean|null セッションIDを格納するためにCookieを使用するかどうかを示す値。 yii\web\Session
$useCustomStorage boolean カスタムストレージを使用するかどうか。 yii\web\MultiFieldSession
$useStrictMode boolean 厳密モードが有効かどうか。 yii\web\Session
$useTransparentSessionID boolean 透過的なsidサポートが有効かどうか。デフォルトはfalseです。 yii\web\Session
$writeCallback callable セッションデータの書き込み中に呼び出されるコールバック。 yii\web\MultiFieldSession

保護されたプロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない指定されたメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか、つまり定義されておりnullでないかどうかを確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
addFlash() フラッシュメッセージを追加します。 yii\web\Session
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントが振る舞う必要のあるビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティが設定可能かどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
close() 現在のセッションを終了し、セッションデータを保存します。 yii\web\Session
count() セッション内のアイテム数を返します。 yii\web\Session
destroy() すべてのセッション変数を解放し、セッションに登録されているすべてのデータを破棄します。 yii\web\Session
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
get() セッション変数名を使用してセッション変数の値を返します。 yii\web\Session
getAllFlashes() すべてのフラッシュメッセージを返します。 yii\web\Session
getBehavior() 指定された名前のビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getCacheLimiter() 現在のキャッシュリミッターを返します yii\web\Session
getCookieParams() yii\web\Session
getCount() セッション内のアイテム数を返します。 yii\web\Session
getFlash() フラッシュメッセージを返します。 yii\web\Session
getGCProbability() yii\web\Session
getHasSessionId() 現在のリクエストがセッションIDを送信したかどうかを示す値を返します。 yii\web\Session
getId() セッションIDを取得します。 yii\web\Session
getIsActive() yii\web\Session
getIterator() セッション変数を走査するためのイテレータを返します。 yii\web\Session
getName() 現在のセッションの名前を取得します。 yii\web\Session
getSavePath() 現在のセッションの保存パスを取得します。 yii\web\Session
getTimeout() yii\web\Session
getUseCookies() セッションIDの保存にクッキーを使用するかどうかを示す値を返します。 yii\web\Session
getUseCustomStorage() カスタムセッションストレージを使用するかどうかを示す値を返します。 yii\web\MultiFieldSession
getUseStrictMode() yii\web\Session
getUseTransparentSessionID() yii\web\Session
has() yii\web\Session
hasEventHandlers() 指定された名前のイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasFlash() 指定されたキーに関連付けられたフラッシュメッセージがあるかどうかを示す値を返します。 yii\web\Session
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() アプリケーションコンポーネントを初期化します。 yii\web\Session
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
offsetExists() このメソッドはインターフェイスArrayAccessによって要求されます。 yii\web\Session
offsetGet() このメソッドはインターフェイスArrayAccessによって要求されます。 yii\web\Session
offsetSet() このメソッドはインターフェイスArrayAccessによって要求されます。 yii\web\Session
offsetUnset() このメソッドはインターフェイスArrayAccessによって要求されます。 yii\web\Session
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
open() セッションを開始します。 yii\web\Session
regenerateID() 現在のセッションIDを新しく生成されたIDで更新します。 yii\web\Session
remove() セッション変数を削除します。 yii\web\Session
removeAll() すべてのセッション変数を削除します。 yii\web\Session
removeAllFlashes() すべてのフラッシュメッセージを削除します。 yii\web\Session
removeFlash() フラッシュメッセージを削除します。 yii\web\Session
set() セッション変数を追加します。 yii\web\Session
setCacheLimiter() キャッシュリミッターを設定します yii\web\Session
setCookieParams() セッションクッキーパラメーターを設定します。 yii\web\Session
setFlash() フラッシュメッセージを設定します。 yii\web\Session
setGCProbability() yii\web\Session
setHasSessionId() 現在のリクエストがセッションIDを送信したかどうかを示す値を設定します。 yii\web\Session
setId() セッションIDを設定します。 yii\web\Session
setName() 現在のセッションの名前を設定します。 yii\web\Session
setSavePath() 現在のセッションの保存パスを設定します。 yii\web\Session
setTimeout() yii\web\Session
setUseCookies() セッションIDの保存にクッキーを使用するかどうかを示す値を設定します。 yii\web\Session
setUseStrictMode() yii\web\Session
setUseTransparentSessionID() yii\web\Session
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
composeFields() セッション書き込み用のストレージフィールドセットを構成します。 yii\web\MultiFieldSession
extractData() ストレージフィールドセットからセッションデータを抽出します。 yii\web\MultiFieldSession
freeze() セッションが開始されている場合、セッションini設定を編集することはできません。 PHP7.2以降では、例外がスローされます。 yii\web\Session
registerSessionHandler() セッションハンドラを登録します。 yii\web\Session
unfreeze() セッションを開始し、一時変数からデータを復元します yii\web\Session
updateFlashCounters() フラッシュメッセージのカウンターを更新し、期限切れのフラッシュメッセージを削除します。 yii\web\Session

プロパティの詳細

継承されたプロパティを非表示

$readCallback public property

セッションデータの読み取り中に呼び出されるコールバック。コールバックの署名は次のようになります

function ($fields)

ここで、$fieldsは読み取りセッション用のストレージフィールドセットであり、$sessionはこのセッションインスタンスです。コールバックが配列を返す場合、セッションデータにマージされます。

function ($fields) {
    return [
        'expireDate' => Yii::$app->formatter->asDate($fields['expire']),
    ];
}
public callable $readCallback null
$useCustomStorage public property

カスタムストレージを使用するかどうか。

public boolean $useCustomStorage null
$writeCallback public property

セッションデータの書き込み中に呼び出されるコールバック。コールバックの署名は次のようになります

function ($session)

ここで、$sessionはこのセッションインスタンスであり、この変数を使用してセッションデータを取得できます。コールバックは、セッションストレージに保存する必要がある実際のフィールドセットを返す必要があります。

function ($session) {
    return [
        'user_id' => Yii::$app->user->id,
        'ip' => $_SERVER['REMOTE_ADDR'],
        'is_trusted' => $session->get('is_trusted', false),
    ];
}
public callable $writeCallback null

メソッドの詳細

継承されたメソッドを非表示

__call() public method

定義元: yii\base\Component::__call()

クラスメソッドではない指定されたメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアが指定された名前のメソッドを持っているかどうかを確認し、利用可能な場合は実行します。

不明なメソッドが呼び出されたときに暗黙的に呼び出されるPHPのマジックメソッドであるため、このメソッドを直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドパラメーター

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出すとき

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public method

定義元: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。

すべてのビヘイビアは古いオブジェクトにアタッチされているため、削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public method

定義元: 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();
}

            
__get() public method

定義元: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、次の順序で確認し、それに応じて動作します

  • ゲッターで定義されたプロパティ: ゲッターの結果を返します
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を返します

$value = $component->property;を実行するときに暗黙的に呼び出されるPHPマジックメソッドであるため、このメソッドを直接呼び出さないでください。

__set()も参照してください。

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティ値またはビヘイビアのプロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (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);
}

            
__isset() public メソッド

定義場所: yii\base\Component::__isset()

プロパティが設定されているか、つまり定義されておりnullでないかどうかを確認します。

このメソッドは、次の順序で確認し、それに応じて動作します

  • セッターによって定義されたプロパティ: プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返します
  • 存在しないプロパティの場合は false を返します

このメソッドを直接呼び出さないでください。これは、isset($component->property)を実行するときに暗黙的に呼び出されるPHPのマジックメソッドです。

こちらも参照してください: https://www.php.net/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

return boolean

指定された名前のプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

定義場所: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは、次の順序で確認し、それに応じて動作します

  • セッターによって定義されたプロパティ: プロパティ値を設定します
  • "on xyz"形式のイベント: ハンドラーをイベント "xyz" にアタッチします
  • "as xyz"形式のビヘイビア: "xyz"という名前のビヘイビアをアタッチします
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定します

このメソッドを直接呼び出さないでください。これは、$component->property = $value;を実行するときに暗黙的に呼び出されるPHPのマジックメソッドです。

こちらも参照してください: __get()

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

定義場所: yii\base\Component::__unset()

コンポーネントプロパティをnullに設定します。

このメソッドは、次の順序で確認し、それに応じて動作します

  • セッターによって定義されたプロパティ: プロパティ値をnullに設定します
  • ビヘイビアのプロパティ: プロパティ値をnullに設定します

このメソッドを直接呼び出さないでください。これは、unset($component->property)を実行するときに暗黙的に呼び出されるPHPのマジックメソッドです。

こちらも参照してください: https://www.php.net/manual/en/function.unset.php

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
addFlash() public メソッド

定義場所: yii\web\Session::addFlash()

フラッシュメッセージを追加します。

同じキーを持つ既存のフラッシュメッセージがある場合、新しいメッセージは既存のメッセージ配列に追加されます。

こちらも参照してください

public void addFlash ( $key, $value true, $removeAfterAccess true )
$key string

フラッシュメッセージを識別するキー。

$value mixed

フラッシュメッセージ

$removeAfterAccess boolean

フラッシュメッセージがアクセスされた場合にのみ自動的に削除されるかどうか。falseの場合、フラッシュメッセージはアクセスされたかどうかに関係なく、次のリクエストの後に自動的に削除されます。true(デフォルト値)の場合、フラッシュメッセージはアクセスされるまで残ります。

                public function addFlash($key, $value = true, $removeAfterAccess = true)
{
    $counters = $this->get($this->flashParam, []);
    $counters[$key] = $removeAfterAccess ? -1 : 0;
    $_SESSION[$this->flashParam] = $counters;
    if (empty($_SESSION[$key])) {
        $_SESSION[$key] = [$value];
    } elseif (is_array($_SESSION[$key])) {
        $_SESSION[$key][] = $value;
    } else {
        $_SESSION[$key] = [$_SESSION[$key], $value];
    }
}

            
attachBehavior() public メソッド

定義場所: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach()メソッドを呼び出すことで、ビヘイビアオブジェクトがこのコンポーネントにアタッチされます。

こちらも参照してください: detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。次のいずれかになります

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • Yii::createObject()に渡してビヘイビアオブジェクトを作成するオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public メソッド

定義場所: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、その名前でインデックス付けされ、yii\base\Behaviorオブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。

こちらも参照してください: attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public メソッド

定義場所: yii\base\Component::behaviors()

このコンポーネントが振る舞う必要のあるビヘイビアのリストを返します。

子クラスは、このメソッドをオーバーライドして、動作させたいビヘイビアを指定できます。

このメソッドの戻り値は、ビヘイビア名でインデックス付けされたビヘイビアオブジェクトまたは構成の配列である必要があります。ビヘイビアの構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスは、yii\base\Behaviorから拡張する必要があります。ビヘイビアは、名前を使用するか、匿名で使用してアタッチできます。名前が配列キーとして使用されている場合、この名前を使用して、ビヘイビアは後でgetBehavior()を使用して取得したり、detachBehavior()を使用してデタッチしたりできます。匿名ビヘイビアは、取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、(オンデマンドで)コンポーネントに自動的にアタッチされます。

public array behaviors ( )
return array

ビヘイビア構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

定義場所: yii\base\Component::canGetProperty()

プロパティが読み取り可能かどうかを示す値を返します。

プロパティは、次の場合に読み取ることができます

  • クラスに指定された名前に関連付けられたgetterメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバー変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

こちらも参照してください: canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティを読み取れるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public メソッド

定義場所: yii\base\Component::canSetProperty()

プロパティが設定可能かどうかを示す値を返します。

プロパティは、次の場合に書き込むことができます

  • クラスに指定された名前に関連付けられたsetterメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバー変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

こちらも参照してください: canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが書き込み可能かどうか。

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static method
2.0.14以降非推奨。PHP 5.5以上では::classを使用してください。

定義元: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
return string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
close() public method

定義元: yii\web\Session::close()

現在のセッションを終了し、セッションデータを保存します。

public void close ( )

                public function close()
{
    if ($this->getIsActive()) {
        YII_DEBUG ? session_write_close() : @session_write_close();
    }
    $this->_forceRegenerateId = null;
}

            
composeFields() protected method

セッション書き込み用のストレージフィールドセットを構成します。

protected array composeFields ( $id null, $data null )
$id string|null

オプションのセッションID

$data string|null

オプションのセッションデータ

return array

ストレージフィールド

                protected function composeFields($id = null, $data = null)
{
    $fields = $this->writeCallback ? call_user_func($this->writeCallback, $this) : [];
    if ($id !== null) {
        $fields['id'] = $id;
    }
    if ($data !== null) {
        $fields['data'] = $data;
    }
    return $fields;
}

            
count() public method

定義元: yii\web\Session::count()

セッション内のアイテム数を返します。

このメソッドはCountableインターフェースによって要求されます。

public integer count ( )
return integer

セッション内のアイテム数。

                #[\ReturnTypeWillChange]
public function count()
{
    return $this->getCount();
}

            
destroy() public method

定義元: yii\web\Session::destroy()

すべてのセッション変数を解放し、セッションに登録されているすべてのデータを破棄します。

このメソッドは、セッションがアクティブでない場合には効果がありません。呼び出す前にopen()を呼び出すようにしてください。

こちらも参照してください

public void destroy ( )

                public function destroy()
{
    if ($this->getIsActive()) {
        $sessionId = session_id();
        $this->close();
        $this->setId($sessionId);
        $this->open();
        session_unset();
        session_destroy();
        $this->setId($sessionId);
    }
}

            
detachBehavior() public method

定義元: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

return yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合はNull。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public method

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public method

定義元: yii\base\Component::ensureBehaviors()

behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
extractData() protected method

ストレージフィールドセットからセッションデータを抽出します。

protected string extractData ( $fields )
$fields array

ストレージフィールド。

return string

セッションデータ。

                protected function extractData($fields)
{
    if ($this->readCallback !== null) {
        if (!isset($fields['data'])) {
            $fields['data'] = '';
        }
        $extraData = call_user_func($this->readCallback, $fields);
        if (!empty($extraData)) {
            session_decode($fields['data']);
            $_SESSION = array_merge((array) $_SESSION, (array) $extraData);
            return session_encode();
        }
        return $fields['data'];
    }
    return isset($fields['data']) ? $fields['data'] : '';
}

            
freeze() protected method (バージョン2.0.14以降利用可能)

定義元: yii\web\Session::freeze()

セッションが開始されている場合、セッションini設定を編集することはできません。 PHP7.2以降では、例外がスローされます。

この関数は、セッションデータを一時変数に保存し、セッションを停止します。

protected void freeze ( )

                protected function freeze()
{
    if ($this->getIsActive()) {
        if (isset($_SESSION)) {
            $this->_frozenSessionData = $_SESSION;
        }
        $this->close();
        Yii::info('Session frozen', __METHOD__);
    }
}

            
get() public method

定義元: yii\web\Session::get()

セッション変数名を使用してセッション変数の値を返します。

セッション変数が存在しない場合は、$defaultValueが返されます。

public mixed get ( $key, $defaultValue null )
$key string

セッション変数名

$defaultValue mixed

セッション変数が存在しない場合に返されるデフォルト値。

return mixed

セッション変数の値。セッション変数が存在しない場合は$defaultValue。

                public function get($key, $defaultValue = null)
{
    $this->open();
    return isset($_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
}

            
getAllFlashes() public method

定義元: yii\web\Session::getAllFlashes()

すべてのフラッシュメッセージを返します。

ビューファイル内のすべてのフラッシュメッセージを表示するためにこのメソッドを使用できます。

<?php
foreach (Yii::$app->session->getAllFlashes() as $key => $message) {
    echo '<div class="alert alert-' . $key . '">' . $message . '</div>';
} ?>

上記のコードを使用すると、successinfodangerなどのbootstrap alertクラスをフラッシュメッセージキーとして使用して、divの色に影響を与えることができます。

addFlash() を使用した場合、$message は配列になり、上記のコードを調整する必要があることに注意してください。

こちらも参照してください

public array getAllFlashes ( $delete false )
$delete boolean

このメソッドが呼び出された直後にフラッシュメッセージを削除するかどうか。false の場合、フラッシュメッセージは次のリクエストで自動的に削除されます。

return array

フラッシュメッセージ(キー => メッセージ、またはキー => [メッセージ1、メッセージ2])。

                public function getAllFlashes($delete = false)
{
    $counters = $this->get($this->flashParam, []);
    $flashes = [];
    foreach (array_keys($counters) as $key) {
        if (array_key_exists($key, $_SESSION)) {
            $flashes[$key] = $_SESSION[$key];
            if ($delete) {
                unset($counters[$key], $_SESSION[$key]);
            } elseif ($counters[$key] < 0) {
                // mark for deletion in the next request
                $counters[$key] = 1;
            }
        } else {
            unset($counters[$key]);
        }
    }
    $_SESSION[$this->flashParam] = $counters;
    return $flashes;
}

            
getBehavior() public メソッド

定義元: yii\base\Component::getBehavior()

指定された名前のビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。存在しない場合は null。

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getCacheLimiter() public メソッド (バージョン 2.0.14 から利用可能)

定義元: yii\web\Session::getCacheLimiter()

現在のキャッシュリミッターを返します

public string getCacheLimiter ( )
return string

現在のキャッシュリミッター

                public function getCacheLimiter()
{
    return session_cache_limiter();
}

            
getCookieParams() public メソッド

定義元: yii\web\Session::getCookieParams()

以下の PHP マニュアルも参照してください: https://www.php.net/manual/en/function.session-get-cookie-params.php

public array getCookieParams ( )
return array

セッションクッキーのパラメータ。

                public function getCookieParams()
{
    return array_merge(session_get_cookie_params(), array_change_key_case($this->_cookieParams));
}

            
getCount() public メソッド

定義元: yii\web\Session::getCount()

セッション内のアイテム数を返します。

public integer getCount ( )
return integer

セッション変数の数

                public function getCount()
{
    $this->open();
    return count($_SESSION);
}

            
getFlash() public メソッド

定義元: yii\web\Session::getFlash()

フラッシュメッセージを返します。

こちらも参照してください

public mixed getFlash ( $key, $defaultValue null, $delete false )
$key string

フラッシュメッセージを識別するキー

$defaultValue mixed

フラッシュメッセージが存在しない場合に返される値。

$delete boolean

このメソッドが呼び出された直後にこのフラッシュメッセージを削除するかどうか。false の場合、フラッシュメッセージは次のリクエストで自動的に削除されます。

return mixed

フラッシュメッセージ、または addFlash が使用された場合はメッセージの配列

                public function getFlash($key, $defaultValue = null, $delete = false)
{
    $counters = $this->get($this->flashParam, []);
    if (isset($counters[$key])) {
        $value = $this->get($key, $defaultValue);
        if ($delete) {
            $this->removeFlash($key);
        } elseif ($counters[$key] < 0) {
            // mark for deletion in the next request
            $counters[$key] = 1;
            $_SESSION[$this->flashParam] = $counters;
        }
        return $value;
    }
    return $defaultValue;
}

            
getGCProbability() public メソッド
public float getGCProbability ( )
return float

すべてのセッション初期化でGC(ガベージコレクション)プロセスが開始される確率(パーセンテージ)。

                public function getGCProbability()
{
    return (float) (ini_get('session.gc_probability') / ini_get('session.gc_divisor') * 100);
}

            
getHasSessionId() public メソッド

定義元: yii\web\Session::getHasSessionId()

現在のリクエストがセッションIDを送信したかどうかを示す値を返します。

デフォルトの実装では、セッション名を使用して Cookie および $_GET を確認します。他の方法でセッション ID を送信する場合、このメソッドをオーバーライドするか、setHasSessionId() を呼び出して、セッション ID が送信されたかどうかを明示的に設定する必要がある場合があります。

public boolean getHasSessionId ( )
return boolean

現在のリクエストがセッションIDを送信したかどうか。

                public function getHasSessionId()
{
    if ($this->_hasSessionId === null) {
        $name = $this->getName();
        $request = Yii::$app->getRequest();
        if (!empty($_COOKIE[$name]) && ini_get('session.use_cookies')) {
            $this->_hasSessionId = true;
        } elseif (!ini_get('session.use_only_cookies') && ini_get('session.use_trans_sid')) {
            $this->_hasSessionId = $request->get($name) != '';
        } else {
            $this->_hasSessionId = false;
        }
    }
    return $this->_hasSessionId;
}

            
getId() public メソッド

定義元: yii\web\Session::getId()

セッションIDを取得します。

これは PHP session_id() のラッパーです。

public string getId ( )
return string

現在のセッション ID

                public function getId()
{
    return session_id();
}

            
getIsActive() public メソッド
public boolean getIsActive ( )
return boolean

セッションが開始されているかどうか

                public function getIsActive()
{
    return session_status() === PHP_SESSION_ACTIVE;
}

            
getIterator() public メソッド

定義元: yii\web\Session::getIterator()

セッション変数を走査するためのイテレータを返します。

このメソッドはインターフェース IteratorAggregate で必要です。

public yii\web\SessionIterator getIterator ( )
return yii\web\SessionIterator

セッション変数をトラバースするためのイテレータ。

                #[\ReturnTypeWillChange]
public function getIterator()
{
    $this->open();
    return new SessionIterator();
}

            
getName() public メソッド

定義元: yii\web\Session::getName()

現在のセッションの名前を取得します。

これは PHP session_name() のラッパーです。

public string getName ( )
return string

現在のセッション名

                public function getName()
{
    return session_name();
}

            
getSavePath() public メソッド

定義元: yii\web\Session::getSavePath()

現在のセッションの保存パスを取得します。

これは PHP session_save_path() のラッパーです。

public string getSavePath ( )
return string

現在のセッションの保存パス。デフォルトは '/tmp' です。

                public function getSavePath()
{
    return session_save_path();
}

            
getTimeout() public メソッド
public integer getTimeout ( )
return integer

データが「ゴミ」と見なされてクリーンアップされるまでの秒数。デフォルト値は1440秒(またはphp.iniで設定された "session.gc_maxlifetime" の値)です。

                public function getTimeout()
{
    return (int) ini_get('session.gc_maxlifetime');
}

            
getUseCookies() public メソッド

定義元: yii\web\Session::getUseCookies()

セッションIDの保存にクッキーを使用するかどうかを示す値を返します。

参照 setUseCookies()

public boolean|null getUseCookies ( )
return boolean|null

セッションIDを格納するためにCookieを使用するかどうかを示す値。

                public function getUseCookies()
{
    if (ini_get('session.use_cookies') === '0') {
        return false;
    } elseif (ini_get('session.use_only_cookies') === '1') {
        return true;
    }
    return null;
}

            
getUseCustomStorage() public メソッド

カスタムセッションストレージを使用するかどうかを示す値を返します。

このメソッドは親実装をオーバーライドし、常にtrueを返します。

public boolean getUseCustomStorage ( )
return boolean

カスタムストレージを使用するかどうか。

                public function getUseCustomStorage()
{
    return true;
}

            
getUseStrictMode() public メソッド (バージョン 2.0.38 以降で利用可能)
public boolean getUseStrictMode ( )
return boolean

厳密モードが有効かどうか。

                public function getUseStrictMode()
{
    if (PHP_VERSION_ID < 50502) {
        return self::$_useStrictModePolyfill;
    }
    return (bool)ini_get('session.use_strict_mode');
}

            
getUseTransparentSessionID() public メソッド
public boolean getUseTransparentSessionID ( )
return boolean

透過的なsidサポートが有効かどうか。デフォルトはfalseです。

                public function getUseTransparentSessionID()
{
    return ini_get('session.use_trans_sid') == 1;
}

            
has() public メソッド
public boolean has ( $key )
$key mixed

セッション変数名

return boolean

指定された名前のセッション変数があるかどうか

                public function has($key)
{
    $this->open();
    return isset($_SESSION[$key]);
}

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

指定された名前のイベントにハンドラがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return boolean

イベントにアタッチされたハンドラがあるかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasFlash() public メソッド

定義元: yii\web\Session::hasFlash()

指定されたキーに関連付けられたフラッシュメッセージがあるかどうかを示す値を返します。

public boolean hasFlash ( $key )
$key string

フラッシュメッセージタイプを識別するキー

return boolean

指定されたキーの下にフラッシュメッセージが存在するかどうか

                public function hasFlash($key)
{
    return $this->getFlash($key) !== null;
}

            
hasMethod() public メソッド

定義元: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドは次の場合に定義されます。

  • クラスに指定された名前のメソッドがある
  • アタッチされたビヘイビアに、指定された名前のメソッドがある($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return boolean

メソッドが定義されているかどうか

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public メソッド

定義元: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティは次の場合に定義されます。

  • クラスに、指定された名前に関連付けられたゲッターまたはセッターメソッドがある(この場合、プロパティ名は大文字と小文字が区別されません)。
  • クラスに指定された名前のメンバー変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前のプロパティがある($checkBehaviors が true の場合)。

こちらも参照してください

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public メソッド

定義元: yii\web\Session::init()

アプリケーションコンポーネントを初期化します。

このメソッドは IApplicationComponent によって必要とされ、アプリケーションによって呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    register_shutdown_function([$this, 'close']);
    if ($this->getIsActive()) {
        Yii::warning('Session is already started', __METHOD__);
        $this->updateFlashCounters();
    }
}

            
off() public メソッド

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラをデタッチします。

このメソッドは on() の反対です。

注意:イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラは残ります。

参照 on()

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラ。nullの場合、名前付きイベントにアタッチされたすべてのハンドラが削除されます。

return boolean

ハンドラが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
offsetExists() public メソッド

定義元: yii\web\Session::offsetExists()

このメソッドはインターフェイスArrayAccessによって要求されます。

public boolean offsetExists ( $offset )
$offset integer|string

チェック対象のオフセット

                #[\ReturnTypeWillChange]
public function offsetExists($offset)
{
    $this->open();
    return isset($_SESSION[$offset]);
}

            
offsetGet() public メソッド

定義元: yii\web\Session::offsetGet()

このメソッドはインターフェイスArrayAccessによって要求されます。

public mixed offsetGet ( $offset )
$offset integer|string

要素を取得するためのオフセット。

return mixed

指定されたオフセットにある要素。オフセットに要素が見つからない場合は null。

                #[\ReturnTypeWillChange]
public function offsetGet($offset)
{
    $this->open();
    return isset($_SESSION[$offset]) ? $_SESSION[$offset] : null;
}

            
offsetSet() public メソッド

定義元: yii\web\Session::offsetSet()

このメソッドはインターフェイスArrayAccessによって要求されます。

public void offsetSet ( $offset, $item )
$offset integer|string

要素を設定するためのオフセット

$item mixed

要素の値

                #[\ReturnTypeWillChange]
public function offsetSet($offset, $item)
{
    $this->open();
    $_SESSION[$offset] = $item;
}

            
offsetUnset() public メソッド

定義元: yii\web\Session::offsetUnset()

このメソッドはインターフェイスArrayAccessによって要求されます。

public void offsetUnset ( $offset )
$offset integer|string

要素を unset するためのオフセット

                #[\ReturnTypeWillChange]
public function offsetUnset($offset)
{
    $this->open();
    unset($_SESSION[$offset]);
}

            
on() public メソッド

定義元: yii\base\Component::on()

イベントにイベントハンドラをアタッチします。

イベントハンドラは有効な PHP コールバックである必要があります。以下にいくつかの例を示します。

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラは次のシグネチャで定義する必要があります。

function ($event)

ここで $event は、イベントに関連付けられたパラメータを含む yii\base\Event オブジェクトです。

2.0.14 以降、イベント名をワイルドカードパターンとして指定できます。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

off() も参照してください。

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler callable

イベントハンドラ

$data mixed

イベントがトリガーされたときにイベントハンドラに渡されるデータ。イベントハンドラが呼び出されたとき、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

新しいイベントハンドラを既存のハンドラリストの末尾に追加するかどうか。false の場合、新しいハンドラは既存のハンドラリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
open() public メソッド

定義元: yii\web\Session::open()

セッションを開始します。

public void open ( )

                public function open()
{
    if ($this->getIsActive()) {
        return;
    }
    $this->registerSessionHandler();
    $this->setCookieParamsInternal();
    YII_DEBUG ? session_start() : @session_start();
    if ($this->getUseStrictMode() && $this->_forceRegenerateId) {
        $this->regenerateID();
        $this->_forceRegenerateId = null;
    }
    if ($this->getIsActive()) {
        Yii::info('Session started', __METHOD__);
        $this->updateFlashCounters();
    } else {
        $error = error_get_last();
        $message = isset($error['message']) ? $error['message'] : 'Failed to start session.';
        Yii::error($message, __METHOD__);
    }
}

            
regenerateID() public メソッド

定義元: yii\web\Session::regenerateID()

現在のセッションIDを新しく生成されたIDで更新します。

詳細については、https://www.php.net/session_regenerate_id を参照してください。

このメソッドは、セッションがアクティブでない場合には効果がありません。呼び出す前にopen()を呼び出すようにしてください。

こちらも参照してください

public void regenerateID ( $deleteOldSession false )
$deleteOldSession boolean

古い関連セッションファイルを削除するかどうか。

                public function regenerateID($deleteOldSession = false)
{
    if ($this->getIsActive()) {
        // add @ to inhibit possible warning due to race condition
        // https://github.com/yiisoft/yii2/pull/1812
        if (YII_DEBUG && !headers_sent()) {
            session_regenerate_id($deleteOldSession);
        } else {
            @session_regenerate_id($deleteOldSession);
        }
    }
}

            
registerSessionHandler() protected メソッド

定義元: yii\web\Session::registerSessionHandler()

セッションハンドラを登録します。

protected void registerSessionHandler ( )
throws yii\base\InvalidConfigException

                protected function registerSessionHandler()
{
    $sessionModuleName = session_module_name();
    if (static::$_originalSessionModule === null) {
        static::$_originalSessionModule = $sessionModuleName;
    }
    if ($this->handler !== null) {
        if (!is_object($this->handler)) {
            $this->handler = Yii::createObject($this->handler);
        }
        if (!$this->handler instanceof \SessionHandlerInterface) {
            throw new InvalidConfigException('"' . get_class($this) . '::handler" must implement the SessionHandlerInterface.');
        }
        YII_DEBUG ? session_set_save_handler($this->handler, false) : @session_set_save_handler($this->handler, false);
    } elseif ($this->getUseCustomStorage()) {
        if (YII_DEBUG) {
            session_set_save_handler(
                [$this, 'openSession'],
                [$this, 'closeSession'],
                [$this, 'readSession'],
                [$this, 'writeSession'],
                [$this, 'destroySession'],
                [$this, 'gcSession']
            );
        } else {
            @session_set_save_handler(
                [$this, 'openSession'],
                [$this, 'closeSession'],
                [$this, 'readSession'],
                [$this, 'writeSession'],
                [$this, 'destroySession'],
                [$this, 'gcSession']
            );
        }
    } elseif (
        $sessionModuleName !== static::$_originalSessionModule
        && static::$_originalSessionModule !== null
        && static::$_originalSessionModule !== 'user'
    ) {
        session_module_name(static::$_originalSessionModule);
    }
}

            
remove() public メソッド

定義元: yii\web\Session::remove()

セッション変数を削除します。

public mixed remove ( $key )
$key string

削除するセッション変数の名前

return mixed

削除された値。そのようなセッション変数がない場合は null。

                public function remove($key)
{
    $this->open();
    if (isset($_SESSION[$key])) {
        $value = $_SESSION[$key];
        unset($_SESSION[$key]);
        return $value;
    }
    return null;
}

            
removeAll() public メソッド

定義元: yii\web\Session::removeAll()

すべてのセッション変数を削除します。

public void removeAll ( )

                public function removeAll()
{
    $this->open();
    foreach (array_keys($_SESSION) as $key) {
        unset($_SESSION[$key]);
    }
}

            
removeAllFlashes() public メソッド

定義元: yii\web\Session::removeAllFlashes()

すべてのフラッシュメッセージを削除します。

フラッシュメッセージと通常のセッション変数は同じ名前空間を共有することに注意してください。同じ名前を使用する通常のセッション変数がある場合、このメソッドによって削除されます。

こちらも参照してください

public void removeAllFlashes ( )

                public function removeAllFlashes()
{
    $counters = $this->get($this->flashParam, []);
    foreach (array_keys($counters) as $key) {
        unset($_SESSION[$key]);
    }
    unset($_SESSION[$this->flashParam]);
}

            
removeFlash() public メソッド

定義元: yii\web\Session::removeFlash()

フラッシュメッセージを削除します。

こちらも参照してください

public mixed removeFlash ( $key )
$key string

フラッシュメッセージを識別するキー。フラッシュメッセージと通常のセッション変数は同じ名前空間を共有することに注意してください。同じ名前を使用する通常のセッション変数がある場合、このメソッドによって削除されます。

return mixed

削除されたフラッシュメッセージ。フラッシュメッセージが存在しない場合はnull。

                public function removeFlash($key)
{
    $counters = $this->get($this->flashParam, []);
    $value = isset($_SESSION[$key], $counters[$key]) ? $_SESSION[$key] : null;
    unset($counters[$key], $_SESSION[$key]);
    $_SESSION[$this->flashParam] = $counters;
    return $value;
}

            
set() public メソッド

定義元: yii\web\Session::set()

セッション変数を追加します。

指定された名前が既に存在する場合、古い値は上書きされます。

public void set ( $key, $value )
$key string

セッション変数名

$value mixed

セッション変数の値

                public function set($key, $value)
{
    $this->open();
    $_SESSION[$key] = $value;
}

            
setCacheLimiter() public メソッド (バージョン 2.0.14 から利用可能)

定義元: yii\web\Session::setCacheLimiter()

キャッシュリミッターを設定します

public void setCacheLimiter ( $cacheLimiter )
$cacheLimiter string

                public function setCacheLimiter($cacheLimiter)
{
    $this->freeze();
    session_cache_limiter($cacheLimiter);
    $this->unfreeze();
}

            
setCookieParams() public メソッド

定義元: yii\web\Session::setCookieParams()

セッションクッキーパラメーターを設定します。

このメソッドに渡されたクッキーパラメーターは、session_get_cookie_params()の結果とマージされます。

参照: https://www.php.net/manual/en/function.session-set-cookie-params.php

public void setCookieParams ( array $value )
$value array

クッキーパラメーター。有効なキーには、lifetime, path, domain, secure, および httponly があります。Yii 2.0.21 以降では、sameSite もサポートされています。これには PHP バージョン 7.3.0 以上が必要です。セキュリティのため、サポートされていないバージョンの PHP を使用中に sameSite が設定されている場合は、例外がスローされます。異なる PHP バージョンでこの機能を使用するには、まずバージョンを確認してください。例: `php [

'sameSite' => PHP_VERSION_ID >= 70300 ? yii\web\Cookie::SAME_SITE_LAX : null,

] ` sameSite の詳細については、https://owasp.org/www-community/SameSite を参照してください。

throws yii\base\InvalidArgumentException

パラメーターが不完全な場合。

                public function setCookieParams(array $value)
{
    $this->_cookieParams = $value;
}

            
setFlash() public メソッド

定義元: yii\web\Session::setFlash()

フラッシュメッセージを設定します。

フラッシュメッセージは、リクエストでアクセスされた後、自動的に削除され、削除は次のリクエストで行われます。同じキーを持つ既存のフラッシュメッセージが既に存在する場合、新しいメッセージで上書きされます。

こちらも参照してください

public void setFlash ( $key, $value true, $removeAfterAccess true )
$key string

フラッシュメッセージを識別するキー。フラッシュメッセージと通常のセッション変数は同じ名前空間を共有することに注意してください。同じ名前を使用する通常のセッション変数がある場合、その値はこのメソッドによって上書きされます。

$value mixed

フラッシュメッセージ

$removeAfterAccess boolean

フラッシュメッセージがアクセスされた場合にのみ自動的に削除されるかどうか。falseの場合、フラッシュメッセージはアクセスされたかどうかに関係なく、次のリクエストの後に自動的に削除されます。true(デフォルト値)の場合、フラッシュメッセージはアクセスされるまで残ります。

                public function setFlash($key, $value = true, $removeAfterAccess = true)
{
    $counters = $this->get($this->flashParam, []);
    $counters[$key] = $removeAfterAccess ? -1 : 0;
    $_SESSION[$key] = $value;
    $_SESSION[$this->flashParam] = $counters;
}

            
setGCProbability() public メソッド
public void setGCProbability ( $value )
$value float

すべてのセッション初期化でGC(ガベージコレクション)プロセスが開始される確率(パーセンテージ)。

throws yii\base\InvalidArgumentException

値が 0 から 100 の範囲にない場合。

                public function setGCProbability($value)
{
    $this->freeze();
    if ($value >= 0 && $value <= 100) {
        // percent * 21474837 / 2147483647 ≈ percent * 0.01
        ini_set('session.gc_probability', floor($value * 21474836.47));
        ini_set('session.gc_divisor', 2147483647);
    } else {
        throw new InvalidArgumentException('GCProbability must be a value between 0 and 100.');
    }
    $this->unfreeze();
}

            
setHasSessionId() public メソッド

定義元: yii\web\Session::setHasSessionId()

現在のリクエストがセッションIDを送信したかどうかを示す値を設定します。

このメソッドは、セッション ID が送信されたかどうかを判断するデフォルトの方法をオーバーライドできるように提供されています。

public void setHasSessionId ( $value )
$value boolean

現在のリクエストがセッションIDを送信したかどうか。

                public function setHasSessionId($value)
{
    $this->_hasSessionId = $value;
}

            
setId() public メソッド

定義元: yii\web\Session::setId()

セッションIDを設定します。

これは PHP session_id() のラッパーです。

public void setId ( $value )
$value string

現在のセッションのセッション ID

                public function setId($value)
{
    session_id($value);
}

            
setName() public メソッド

定義元: yii\web\Session::setName()

現在のセッションの名前を設定します。

これは PHP session_name() のラッパーです。

public void setName ( $value )
$value string

現在のセッションのセッション名。英数字の文字列である必要があります。デフォルトは "PHPSESSID" です。

                public function setName($value)
{
    $this->freeze();
    session_name($value);
    $this->unfreeze();
}

            
setSavePath() public メソッド

定義元: yii\web\Session::setSavePath()

現在のセッションの保存パスを設定します。

これは PHP session_save_path() のラッパーです。

public void setSavePath ( $value )
$value string

現在のセッションの保存パス。これはディレクトリ名またはパスエイリアスのいずれかです。

throws yii\base\InvalidArgumentException

パスが有効なディレクトリでない場合

                public function setSavePath($value)
{
    $path = Yii::getAlias($value);
    if (is_dir($path)) {
        session_save_path($path);
    } else {
        throw new InvalidArgumentException("Session save path is not a valid directory: $value");
    }
}

            
setTimeout() public メソッド
public void setTimeout ( $value )
$value integer

データが 'ゴミ' と見なされ、クリーンアップされるまでの秒数

                public function setTimeout($value)
{
    $this->freeze();
    ini_set('session.gc_maxlifetime', $value);
    $this->unfreeze();
}

            
setUseCookies() パブリックメソッド

定義元: yii\web\Session::setUseCookies()

セッションIDの保存にクッキーを使用するかどうかを示す値を設定します。

3つの状態が可能です。

  • true: クッキーのみがセッションIDの保存に使用されます。
  • false: クッキーはセッションIDの保存に使用されません。
  • null: 可能であれば、クッキーがセッションIDの保存に使用されます。そうでない場合は、他のメカニズム(例:GETパラメータ)が使用されます。
public void setUseCookies ( $value )
$value boolean|null

セッションIDを格納するためにCookieを使用するかどうかを示す値。

                public function setUseCookies($value)
{
    $this->freeze();
    if ($value === false) {
        ini_set('session.use_cookies', '0');
        ini_set('session.use_only_cookies', '0');
    } elseif ($value === true) {
        ini_set('session.use_cookies', '1');
        ini_set('session.use_only_cookies', '1');
    } else {
        ini_set('session.use_cookies', '1');
        ini_set('session.use_only_cookies', '0');
    }
    $this->unfreeze();
}

            
setUseStrictMode() パブリックメソッド (バージョン 2.0.38 から利用可能)
public void setUseStrictMode ( $value )
$value boolean

厳格モードが有効かどうか。true の場合、この設定は、セッションコンポーネントが初期化されていないセッションIDを使用することを防ぎます。注意: PHP < 5.5.2 で `useStrictMode` を有効にするには、カスタムストレージクラスでのみサポートされます。警告!厳格モードを有効にすることは安全なセッションのために必須ですが、'session.use-strict-mode' のデフォルト値は 0 です。

                public function setUseStrictMode($value)
{
    if (PHP_VERSION_ID < 50502) {
        if ($this->getUseCustomStorage() || !$value) {
            self::$_useStrictModePolyfill = $value;
        } else {
            throw new InvalidConfigException('Enabling `useStrictMode` on PHP < 5.5.2 is only supported with custom storage classes.');
        }
    } else {
        $this->freeze();
        ini_set('session.use_strict_mode', $value ? '1' : '0');
        $this->unfreeze();
    }
}

            
setUseTransparentSessionID() パブリックメソッド
public void setUseTransparentSessionID ( $value )
$value boolean

透過的なセッションIDのサポートが有効かどうか。

                public function setUseTransparentSessionID($value)
{
    $this->freeze();
    ini_set('session.use_trans_sid', $value ? '1' : '0');
    $this->unfreeze();
}

            
trigger() パブリックメソッド

定義元: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラを含む、イベントにアタッチされたすべてのハンドラを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定しない場合は、デフォルトの yii\base\Event オブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
unfreeze() 保護されたメソッド (バージョン 2.0.14 から利用可能)

定義元: yii\web\Session::unfreeze()

セッションを開始し、一時変数からデータを復元します

protected void unfreeze ( )

                protected function unfreeze()
{
    if (null !== $this->_frozenSessionData) {
        YII_DEBUG ? session_start() : @session_start();
        if ($this->getIsActive()) {
            Yii::info('Session unfrozen', __METHOD__);
        } else {
            $error = error_get_last();
            $message = isset($error['message']) ? $error['message'] : 'Failed to unfreeze session.';
            Yii::error($message, __METHOD__);
        }
        $_SESSION = $this->_frozenSessionData;
        $this->_frozenSessionData = null;
    }
}

            
updateFlashCounters() 保護されたメソッド

定義元: yii\web\Session::updateFlashCounters()

フラッシュメッセージのカウンターを更新し、期限切れのフラッシュメッセージを削除します。

このメソッドは、init() で一度だけ呼び出す必要があります。

protected void updateFlashCounters ( )

                protected function updateFlashCounters()
{
    $counters = $this->get($this->flashParam, []);
    if (is_array($counters)) {
        foreach ($counters as $key => $count) {
            if ($count > 0) {
                unset($counters[$key], $_SESSION[$key]);
            } elseif ($count == 0) {
                $counters[$key]++;
            }
        }
        $_SESSION[$this->flashParam] = $counters;
    } else {
        // fix the unexpected problem that flashParam doesn't return an array
        unset($_SESSION[$this->flashParam]);
    }
}