0 follower

クラス yii\web\DbSession

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

DbSession は、データベースをセッションデータストレージとして使用することにより、yii\web\Session を拡張します。

デフォルトでは、DbSession は 'session' という名前の DB テーブルにセッションデータを格納します。このテーブルは事前に作成しておく必要があります。テーブル名は、$sessionTable を設定することで変更できます。

次の例は、アプリケーションで DbSession を使用するように設定する方法を示しています。アプリケーションの構成の components の下に以下を追加します。

'session' => [
    'class' => 'yii\web\DbSession',
    // 'db' => 'mydb',
    // 'sessionTable' => 'my_session',
]

DbSession は yii\web\MultiFieldSession を拡張しているため、$sessionTable に追加のフィールドを保存できます。詳細については、yii\web\MultiFieldSession を参照してください。

公開プロパティ

継承されたプロパティを隠す

プロパティ タイプ 説明 定義元
$_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
$db yii\db\Connection|array|string DB 接続オブジェクト、または DB 接続のアプリケーションコンポーネント ID。 yii\web\DbSession
$fields array セッションテーブルの列に書き込まれるセッションフィールド yii\web\DbSession
$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
$sessionTable string セッションデータを格納する DB テーブルの名前。 yii\web\DbSession
$timeout integer データが「ガベージ」と見なされ、クリーンアップされるまでの秒数。 yii\web\Session
$useCookies boolean|null セッション ID を格納するためにクッキーを使用する必要があるかどうかを示す値。 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\DbSession
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() DbSessionコンポーネントを初期化します。 yii\web\DbSession
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\DbSession
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
getReadQuery() dbからセッションを取得するためのクエリを生成します yii\web\DbSession
registerSessionHandler() セッションハンドラを登録します。 yii\web\Session
typecastFields() PDO に渡す前に、$fields の型キャストを行います。 yii\web\DbSession
unfreeze() セッションを開始し、一時変数からデータを復元します yii\web\Session
updateFlashCounters() フラッシュメッセージのカウンターを更新し、期限切れのフラッシュメッセージを削除します。 yii\web\Session

プロパティの詳細

継承されたプロパティを隠す

$db パブリックプロパティ

DB接続オブジェクトまたはDB接続のアプリケーションコンポーネントID。 DbSessionオブジェクトを作成した後、このプロパティを変更する場合は、DB接続オブジェクトのみを割り当てる必要があります。 バージョン2.0.2以降では、オブジェクトを作成するための設定配列にすることもできます。

$fields 保護されたプロパティ(バージョン2.0.17以降で利用可能)

セッションテーブルの列に書き込まれるセッションフィールド

protected array $fields = []
$sessionTable パブリックプロパティ

セッションデータを格納するDBテーブルの名前。 テーブルは次のように事前に作成する必要があります

CREATE TABLE session
(
    id CHAR(40) NOT NULL PRIMARY KEY,
    expire INTEGER,
    data BLOB
)

'BLOB' は、優先DBMSのBLOB型を指します。 以下は、いくつかの一般的なDBMSで使用できるBLOB型です

  • MySQL: LONGBLOB
  • PostgreSQL: BYTEA
  • MSSQL: BLOB

本番サーバーでDbSessionを使用する場合は、パフォーマンスを向上させるために、セッションテーブルの 'expire' 列にDBインデックスを作成することをお勧めします。

session.hash_function のphp.ini設定に従って、id 列の長さを調整する必要がある場合があることに注意してください。 たとえば、session.hash_function=sha256 の場合は、40の代わりに長さ64を使用する必要があります。

public string $sessionTable '{{%session}}'

メソッドの詳細

継承されたメソッドを隠す

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

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

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定された名前のメソッドがあるかどうかを確認し、ある場合は実行します。

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

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

メソッド名

$params array

メソッドのパラメータ

戻り値 mixed

メソッドの戻り値

スロー 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() パブリックメソッド

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

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

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

public void __clone ( )

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

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

定義元: 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() パブリックメソッド

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

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

このメソッドは以下の順序でチェックし、それに応じて動作します。

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

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

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

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

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

スロー yii\base\UnknownPropertyException

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

スロー yii\base\InvalidCallException

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

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // 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() パブリックメソッド

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

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

戻り値 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() パブリックメソッド

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

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

このメソッドは以下の順序でチェックし、それに応じて動作します。

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

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

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

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

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

$value mixed

プロパティ値

スロー yii\base\UnknownPropertyException

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

スロー yii\base\InvalidCallException

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

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // 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() パブリックメソッド

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

プロパティ名

スロー 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() パブリックメソッド

定義元: 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() パブリックメソッド

定義元: 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() に渡してビヘイビアオブジェクトを作成するオブジェクト構成配列。
戻り値 yii\base\Behavior

ビヘイビアオブジェクト

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

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

定義元: 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() パブリックメソッド

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

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

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

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

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

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

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

public array behaviors ( )
戻り値 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

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

戻り値 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

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

戻り値 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 ( )
戻り値 string

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

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

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

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

public void close ( )

                public function close()
{
    if ($this->getIsActive()) {
        // prepare writeCallback fields before session closes
        $this->fields = $this->composeFields();
        YII_DEBUG ? session_write_close() : @session_write_close();
    }
}

            
composeFields() protected メソッド

定義: yii\web\MultiFieldSession::composeFields()

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

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

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

$data string|null

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

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

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

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

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

public integer count ( )
戻り値 integer

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

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

            
destroy() public メソッド

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

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

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

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

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

ビヘイビアの名前。

戻り値 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);
        }
    }
}

            
extractData() protected メソッド

定義元: yii\web\MultiFieldSession::extractData()

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

protected string extractData ( $fields )
$fields array

ストレージフィールド。

戻り値 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 メソッド (バージョン 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 メソッド

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

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

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

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

セッション変数名

$defaultValue mixed

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

戻り値 mixed

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

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

            
getAllFlashes() public メソッド

定義元: 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 の場合、フラッシュメッセージは次のリクエストで自動的に削除されます。

戻り値 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

ビヘイビア名

戻り値 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 ( )
戻り値 yii\base\Behavior[]

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

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

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

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

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

public string getCacheLimiter ( )
戻り値 string

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

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

            
getCookieParams() public メソッド
public array getCookieParams ( )
戻り値 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 ( )
戻り値 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 の場合、フラッシュメッセージは次のリクエストで自動的に削除されます。

戻り値 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 ( )
戻り値 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 ( )
戻り値 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 ( )
戻り値 string

現在のセッション ID

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

            
getIsActive() public メソッド
public boolean getIsActive ( )
戻り値 boolean

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

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

            
getIterator() public メソッド

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

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

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

public yii\web\SessionIterator getIterator ( )
戻り値 yii\web\SessionIterator

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

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

            
getName() public メソッド

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

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

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

public string getName ( )
戻り値 string

現在のセッション名

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

            
getReadQuery() protected メソッド

dbからセッションを取得するためのクエリを生成します

protected yii\db\Query getReadQuery ( $id )
$id string

セッションのID

                protected function getReadQuery($id)
{
    return (new Query())
        ->from($this->sessionTable)
        ->where('[[expire]]>:expire AND [[id]]=:id', [':expire' => time(), ':id' => $id]);
}

            
getSavePath() public メソッド

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

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

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

public string getSavePath ( )
戻り値 string

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

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

            
getTimeout() public メソッド
public integer getTimeout ( )
戻り値 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 ( )
戻り値 boolean|null

セッション ID を格納するためにクッキーを使用する必要があるかどうかを示す値。

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

定義元: yii\web\MultiFieldSession::getUseCustomStorage()

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

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

public boolean getUseCustomStorage ( )
戻り値 boolean

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

                public function getUseCustomStorage()
{
    return true;
}

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

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

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

public boolean getUseStrictMode ( )
戻り値 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 ( )
戻り値 boolean

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

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

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

セッション変数名

戻り値 boolean

名前付きセッション変数が存在するかどうか

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

            
hasEventHandlers() public メソッド

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

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

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 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

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

戻り値 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

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

戻り値 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

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

戻り値 boolean

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

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

            
init() public メソッド

DbSessionコンポーネントを初期化します。

このメソッドは、$db プロパティが有効な DB 接続を参照するように初期化します。

public void init ( )
スロー yii\base\InvalidConfigException

$db が無効な場合。

                public function init()
{
    parent::init();
    $this->db = Instance::ensure($this->db, Connection::className());
}

            
off() public メソッド

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

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

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

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

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

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

イベント名

$handler callable|null

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

戻り値 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

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

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

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

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

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

public void regenerateID ( $deleteOldSession false )
$deleteOldSession boolean

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

                public function regenerateID($deleteOldSession = false)
{
    $oldID = session_id();
    // if no session is started, there is nothing to regenerate
    if (empty($oldID)) {
        return;
    }
    parent::regenerateID(false);
    $newID = session_id();
    // if session id regeneration failed, no need to create/update it.
    if (empty($newID)) {
        Yii::warning('Failed to generate new session ID', __METHOD__);
        return;
    }
    $row = $this->db->useMaster(function () use ($oldID) {
        return (new Query())->from($this->sessionTable)
           ->where(['id' => $oldID])
           ->createCommand($this->db)
           ->queryOne();
    });
    if ($row !== false && $this->getIsActive()) {
        if ($deleteOldSession) {
            $this->db->createCommand()
                ->update($this->sessionTable, ['id' => $newID], ['id' => $oldID])
                ->execute();
        } else {
            $row['id'] = $newID;
            $this->db->createCommand()
                ->insert($this->sessionTable, $row)
                ->execute();
        }
    }
}

            
registerSessionHandler() protected メソッド

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

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

protected void registerSessionHandler ( )
スロー 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

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

戻り値 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

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

戻り値 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

クッキーパラメータ。有効なキーには、lifetimepathdomainsecurehttponlyが含まれます。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 を参照してください。

スロー 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 (ガベージコレクション) プロセスが開始される確率 (パーセンテージ)。

スロー 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

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

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

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

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

3つの状態が可能です

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

セッション ID を格納するためにクッキーを使用する必要があるかどうかを示す値。

                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);
}

            
typecastFields() protected メソッド (バージョン 2.0.13 以降で利用可能)

PDO に渡す前に、$fields の型キャストを行います。

デフォルトの実装では、フィールド data\PDO::PARAM_LOB にキャストします。特別な型キャストが必要な場合は、このメソッドをオーバーライドできます。

protected array typecastFields ( $fields )
$fields array

PDOに渡されるフィールド。キー - 名前、値 - 値

                protected function typecastFields($fields)
{
    if (isset($fields['data']) && !is_array($fields['data']) && !is_object($fields['data'])) {
        $fields['data'] = new PdoValue($fields['data'], \PDO::PARAM_LOB);
    }
    return $fields;
}

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

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