1 follower

クラス yii\web\Session

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

Session は、セッションデータ管理と関連する構成を提供します。

Session は、Yii::$app->session を介してアクセスできる Web アプリケーションコンポーネントです。

セッションを開始するには、open() を呼び出します。セッションデータを完了して送信するには、close() を呼び出します。セッションを破棄するには、destroy() を呼び出します。

Session は、セッションデータを設定および取得するために配列のように使用できます。例えば、

$session = new Session;
$session->open();
$value1 = $session['name1'];  // get session variable 'name1'
$value2 = $session['name2'];  // get session variable 'name2'
foreach ($session as $name => $value) // traverse all session variables
$session['name3'] = $value3;  // set session variable 'name3'

Session は、カスタマイズされたセッションストレージをサポートするように拡張できます。そのためには、$useCustomStorage をオーバーライドして true を返し、カスタムストレージの使用に関する実際のロジックで次のメソッドをオーバーライドします: openSession(), closeSession(), readSession(), writeSession(), destroySession(), および gcSession()

Session は、フラッシュメッセージと呼ばれる特殊なタイプのセッションデータもサポートします。フラッシュメッセージは、現在のリクエストと次のリクエストでのみ利用可能です。その後、自動的に削除されます。フラッシュメッセージは、確認メッセージを表示する場合に特に便利です。フラッシュメッセージを使用するには、setFlash()getFlash() などのメソッドを呼び出すだけです。

Session の詳細と使用法については、セッションに関するガイド記事を参照してください。

公開プロパティ

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

プロパティ 説明 定義元
$_forceRegenerateId string|null useStrictMode が有効で、セッション ID を再生成する必要がある場合に、セッション ID を保持します。 yii\web\Session
$_originalSessionModule string|null カスタムハンドラーが登録される前の元のセッションモジュールを保持します。これにより、カスタムハンドラーを持たない Session コンポーネントが、カスタムハンドラーを持つ Session コンポーネントの後に使用された場合に、復元できます。 yii\web\Session
$allFlashes array フラッシュメッセージ (key => message または key => [message1, message2])。 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
$savePath string 現在のセッションの保存パス。デフォルトは'/tmp'。 yii\web\Session
$timeout integer データが「ゴミ」と見なされ、クリーンアップされるまでの秒数。 yii\web\Session
$useCookies boolean|null セッションIDを保存するためにCookieを使用するかどうかを示す値。 yii\web\Session
$useCustomStorage boolean カスタムストレージを使用するかどうか。 yii\web\Session
$useStrictMode boolean 厳格モードが有効かどうか。 yii\web\Session
$useTransparentSessionID boolean 透過的なSIDサポートが有効かどうか。デフォルトはfalse。 yii\web\Session

保護されたプロパティ

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

プロパティ 説明 定義元

公開メソッド

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

メソッド 説明 定義元
__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を保存するためにCookieを使用する必要があるかどうかを示す値を返します。 yii\web\Session
getUseCustomStorage() カスタムセッションストレージを使用するかどうかを示す値を返します。 yii\web\Session
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を保存するためにCookieを使用するかどうかを示す値を設定します。 yii\web\Session
setUseStrictMode() yii\web\Session
setUseTransparentSessionID() yii\web\Session
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

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

プロパティの詳細

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

$_forceRegenerateId 保護されたプロパティ

useStrictMode が有効で、セッション ID を再生成する必要がある場合に、セッション ID を保持します。

protected string|null $_forceRegenerateId null
$_originalSessionModule 保護された静的プロパティ

カスタムハンドラーが登録される前の元のセッションモジュールを保持します。これにより、カスタムハンドラーを持たない Session コンポーネントが、カスタムハンドラーを持つ Session コンポーネントの後に使用された場合に、復元できます。

protected static string|null $_originalSessionModule null
$allFlashes 公開プロパティ

フラッシュメッセージ (key => message または key => [message1, message2])。

public array $allFlashes null
$cacheLimiter 公開プロパティ

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

public string $cacheLimiter null
$cookieParams 公開プロパティ

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

public array $cookieParams null
$count 公開プロパティ

セッション変数の数。

public integer $count null
$flash 公開プロパティ

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

public string $flash null
$flashParam public プロパティ

フラッシュメッセージデータを格納するセッション変数の名前。

public string $flashParam '__flash'
$gCProbability public プロパティ

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

public float $gCProbability null
$handler public プロパティ

SessionHandlerInterfaceを実装するオブジェクト、または構成配列。設定されている場合、組み込みのメソッドの代わりに永続性を提供するために使用されます。

$hasSessionId public プロパティ

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

public boolean $hasSessionId null
$id public プロパティ

現在のセッションID。

public string $id null
$isActive public プロパティ

セッションが開始されたかどうか。

public boolean $isActive null
$iterator public 読み取り専用 プロパティ

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

$name public プロパティ

現在のセッション名。

public string $name null
$savePath public プロパティ

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

public string $savePath null
$timeout public プロパティ

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

public integer $timeout null
$useCookies public プロパティ

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

public boolean|null $useCookies null
$useCustomStorage public プロパティ

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

public boolean $useCustomStorage null
$useStrictMode public プロパティ

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

public boolean $useStrictMode null
$useTransparentSessionID public プロパティ

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

メソッド詳細

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

__call() public メソッド

定義元: 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 メソッド

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

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

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

public void __clone ( )

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

            
__construct() public メソッド

定義元: 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 メソッド

定義元: 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 メソッド

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

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

以下も参照してください

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()

プロパティを読み取ることができるかどうかを示す値を返します。

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

  • クラスに、指定された名前に関連付けられたゲッターメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合($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()

プロパティを設定できるかどうかを示す値を返します。

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

  • クラスに、指定された名前に関連付けられたセッターメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合($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 メソッド
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 メソッド

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

public void close ( )

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

            
count() public メソッド

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

このメソッドは、Countableインターフェースで必要とされます。

public integer count ( )
return integer

セッション内の項目の数。

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

            
destroy() public メソッド

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

このメソッドは、セッションがアクティブでない場合は効果がありません。呼び出す前に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 メソッド

定義元: 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 メソッド

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

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

public void detachBehaviors ( )

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

            
ensureBehaviors() public メソッド

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

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

セッションが開始されている場合、セッションの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 メソッド

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

セッション変数が存在しない場合、$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 メソッド

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

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

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

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

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

以下も参照してください

public array getAllFlashes ( $delete false )
$delete boolean

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

return array

フラッシュメッセージ (key => message または key => [message1, message2])。

                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 から利用可能)

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

public string getCacheLimiter ( )
return string

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

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

            
getCookieParams() public メソッド
public array getCookieParams ( )
return array

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

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

            
getCount() public メソッド

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

public integer getCount ( )
return integer

セッション変数の数

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

            
getFlash() public メソッド

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

以下も参照してください

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 メソッド

現在のリクエストがセッション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 メソッド

セッション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 メソッド

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

このメソッドはインターフェース IteratorAggregate で要求されます。

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

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

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

            
getName() public メソッド

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

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

public string getName ( )
return string

現在のセッション名

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

            
getSavePath() public メソッド

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

これは 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 メソッド

セッションIDを保存するためにCookieを使用する必要があるかどうかを示す値を返します。

こちらも参照 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 を返す必要があります。 カスタムセッションストレージを実装するには、これらのメソッドをオーバーライドします: openSession(), closeSession(), readSession(), writeSession(), destroySession() そして gcSession()

public boolean getUseCustomStorage ( )
return boolean

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

                public function getUseCustomStorage()
{
    return false;
}

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

こちらも参照 setUseStrictMode()

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 メソッド

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

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()

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

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

  • クラスが、指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている場合(この場合、プロパティ名はcase-insensitiveです)。
  • クラスに、指定された名前のメンバ変数がある場合($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 メソッド

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

このメソッドは 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 メソッド

このメソッドは、インターフェースArrayAccessによって必要です。

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

チェックするオフセット

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

            
offsetGet() public メソッド

このメソッドは、インターフェース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 メソッド

このメソッドは、インターフェースArrayAccessによって必要です。

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

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

$item mixed

要素の値

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

            
offsetUnset() public メソッド

このメソッドは、インターフェース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 メソッド

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

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 メソッド

現在のセッション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 メソッド

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

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 メソッド

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

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 メソッド

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

public void removeAll ( )

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

            
removeAllFlashes() public メソッド

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

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

以下も参照してください

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 メソッド

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

以下も参照してください

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 メソッド

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

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

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

セッション変数名

$value mixed

セッション変数の値

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

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

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

public void setCacheLimiter ( $cacheLimiter )
$cacheLimiter string

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

            
setCookieParams() public メソッド

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

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

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

public void setCookieParams ( array $value )
$value array

クッキーパラメーター。有効なキーは、lifetimepathdomainsecure、および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 メソッド

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

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

以下も参照してください

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 メソッド

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

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

public void setHasSessionId ( $value )
$value boolean

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

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

            
setId() public メソッド

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

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

public void setId ( $value )
$value string

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

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

            
setName() public メソッド

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

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

public void setName ( $value )
$value string

現在のセッションのセッション名。英数字の文字列でなければなりません。デフォルトは "PHPSESSID" です。

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

            
setSavePath() public メソッド

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

これは 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() public メソッド

セッションIDを保存するためにCookieを使用するかどうかを示す値を設定します。

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() public メソッド (バージョン 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 メソッド

public void setUseTransparentSessionID ( $value )
$value boolean

透過的な SID サポートが有効かどうか。

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

            
trigger() public メソッド

定義元: 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() protected メソッド (バージョン 2.0.14 から利用可能)

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

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() protected メソッド

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

このメソッドは 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]);
    }
}