0 フォロワー

クラス yii\log\Logger

継承yii\log\Logger » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/log/Logger.php

Loggerは、ログに記録されたメッセージをメモリに記録し、$dispatcherが設定されている場合は、さまざまなターゲットに送信します。

Loggerインスタンスは、Yii::getLogger()を介してアクセスできます。メソッドlog()を呼び出して、単一のログメッセージを記録できます。便宜上、Yiiクラスを介して、さまざまな重要度レベルのメッセージをログに記録するためのショートカットメソッドのセットが用意されています。

Loggerの詳細と使用方法については、ログに関するガイド記事を参照してください。

アプリケーションが終了するか、$flushIntervalに達すると、Loggerはflush()を呼び出して、ファイルメールデータベースなどのさまざまなログターゲットにログメッセージを送信します。$dispatcherの助けを借りて。

公開プロパティ

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

プロパティ 説明 定義者
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$dbEventNames 配列 DBクエリの統計結果を取得するために使用されるイベント名の配列。 yii\log\Logger
$dbProfiling 配列 最初の要素は実行されたSQLステートメントの数を示し、2番目の要素はSQL実行に費やされた合計時間を示します。 yii\log\Logger
$dispatcher yii\log\Dispatcher メッセージディスパッチャ。 yii\log\Logger
$elapsedTime 浮動小数点数 現在のリクエストの合計経過時間(秒)。 yii\log\Logger
$flushInterval 整数 メモリからフラッシュされてターゲットに送信されるまでにログに記録する必要があるメッセージの数。 yii\log\Logger
$messages 配列 ログに記録されたメッセージ。 yii\log\Logger
$profiling 配列 プロファイリング結果。 yii\log\Logger
$profilingAware ブール値 プロファイリング対応モードをオンにする必要があるかどうか。 yii\log\Logger
$traceLevel 整数 各メッセージに対してログに記録する必要があるコールスタック情報(ファイル名と行番号)の量。 yii\log\Logger

公開メソッド

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

メソッド 説明 定義者
__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
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントが動作するべきビヘイビアのリストを返します。 yii\base\Component
calculateTimings() 指定されたログメッセージの経過時間を計算します。 yii\log\Logger
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
flush() メモリからターゲットへログメッセージをフラッシュします。 yii\log\Logger
getBehavior() 指定された名前のビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getDbProfiling() DBクエリの統計結果を返します。 yii\log\Logger
getElapsedTime() 現在のリクエスト開始からの経過時間を返します。 yii\log\Logger
getLevelName() 指定されたレベルのテキスト表示を返します。 yii\log\Logger
getProfiling() プロファイリングの結果を返します。 yii\log\Logger
hasEventHandlers() 指定された名前のイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() flush() をシャットダウン関数として登録することにより、ロガーを初期化します。 yii\log\Logger
log() 指定された型とカテゴリでメッセージをログに記録します。 yii\log\Logger
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
trigger() イベントをトリガーします。 yii\base\Component

Constants

継承された定数を非表示

定数 説明 定義者
LEVEL_ERROR 0x1 エラーメッセージレベル。エラーメッセージは、アプリケーションの異常終了を示し、開発者の処理が必要になる可能性があるものです。 yii\log\Logger
LEVEL_INFO 0x4 情報メッセージレベル。情報メッセージは、開発者が確認するための特定の情報を含むものです。 yii\log\Logger
LEVEL_PROFILE 0x40 プロファイリングメッセージレベル。これは、メッセージがプロファイリング目的であることを示します。 yii\log\Logger
LEVEL_PROFILE_BEGIN 0x50 プロファイリングメッセージレベル。これは、メッセージがプロファイリング目的であることを示します。プロファイリングブロックの開始を示します。 yii\log\Logger
LEVEL_PROFILE_END 0x60 プロファイリングメッセージレベル。これは、メッセージがプロファイリング目的であることを示します。プロファイリングブロックの終了を示します。 yii\log\Logger
LEVEL_TRACE 0x8 トレースメッセージレベル。トレースメッセージは、コードの実行フローを明らかにするものです。 yii\log\Logger
LEVEL_WARNING 0x2 警告メッセージレベル。警告メッセージは、何らかの異常が発生したが、アプリケーションは引き続き実行できることを示すものです。開発者はこのメッセージに注意する必要があります。 yii\log\Logger

Property Details

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

$dbEventNames public プロパティ (バージョン 2.0.41 から利用可能)

DBクエリの統計結果を取得するために使用されるイベント名の配列。

public array $dbEventNames = [
    
'yii\db\Command::query',
    
'yii\db\Command::execute',
]
$dbProfiling public プロパティ

最初の要素は実行されたSQLステートメントの数を示し、2番目の要素はSQL実行に費やされた合計時間を示します。

public array $dbProfiling null
$dispatcher public プロパティ

メッセージディスパッチャ。

$elapsedTime public プロパティ

現在のリクエストの合計経過時間(秒)。

public float $elapsedTime null
$flushInterval public プロパティ

メモリからフラッシュしてターゲットに送信する前にログに記録する必要があるメッセージの数。デフォルトは 1000 で、flush() メソッドは、ログに記録された 1000 メッセージごとに 1 回呼び出されることを意味します。アプリケーションが終了するまでメッセージをフラッシュしない場合は、このプロパティを 0 に設定します。このプロパティは主に、ログに記録されたメッセージによって占有されるメモリ量に影響します。値が小さいほどメモリは少なくなりますが、flush() のオーバーヘッドのために実行時間が増加します。

public integer $flushInterval 1000
$messages public プロパティ

ログに記録されたメッセージ。このプロパティは log()flush() によって管理されます。各ログメッセージは、次の構造を持ちます。

[
  [0] => message (mixed, can be a string or some complex data, such as an exception object)
  [1] => level (integer)
  [2] => category (string)
  [3] => timestamp (float, obtained by microtime(true))
  [4] => traces (array, debug backtrace, contains the application code call stacks)
  [5] => memory usage in bytes (int, obtained by memory_get_usage()), available since version 2.0.11.
]
public array $messages = []
$profiling public プロパティ

プロファイリングの結果。各要素は、infocategorytimestamptraceleveldurationmemorymemoryDiff で構成される配列です。memorymemoryDiff の値は、バージョン 2.0.11 以降で利用できます。

public array $profiling null
$profilingAware public プロパティ (バージョン 2.0.43 から利用可能)

プロファイリング対応モードをオンにするかどうか。オンの場合、flush() は、プロファイリングブロックがペアでフラッシュされることを確認します。未処理のメッセージが検出された場合、それらは次のフラッシュ間隔まで保持され、ペアが見つけられます。メモリリークを防ぐため、未処理のメッセージの数が flushInterval 値に達すると、ロガーはそれらを直ちにフラッシュし、警告をトリガーします。プロファイリング対応モードは、時間とメモリをより多く消費することに注意してください。

public boolean $profilingAware false
$traceLevel public プロパティ

各メッセージに対してログに記録する必要があるコールスタック情報 (ファイル名と行番号) の量。0 より大きい場合、最大でその数のコールスタックがログに記録されます。アプリケーションのコールスタックのみがカウントされることに注意してください。

public integer $traceLevel 0

Method Details

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

__call() public メソッド

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

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

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

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

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

メソッド名

$params 配列

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

未知のメソッドを呼び出した場合

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

            
__clone() public method

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

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

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

public void __clone ( )

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

            
__construct() public method

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

コンストラクタ。

デフォルトの実装では、次の2つの処理を行います。

  • 与えられた設定$configでオブジェクトを初期化します。
  • init() を呼び出します。

このメソッドが子クラスでオーバーライドされている場合は、次のことが推奨されます。

  • コンストラクタの最後のパラメータは、ここでの $config のような設定配列であること。
  • コンストラクタの最後に親の実装を呼び出すこと。
public void __construct ( $config = [] )
$config 配列

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public method

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

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

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

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

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

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

public mixed __get ( $name )
$name string

プロパティ名

return mixed

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

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

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

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public method

定義元: 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 ブール値

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

                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 method

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

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

            
attachBehavior() public method

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

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

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

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

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

public void attachBehaviors ( $behaviors )
$behaviors 配列

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

                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 配列

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
calculateTimings() public メソッド

指定されたログメッセージの経過時間を計算します。

public array calculateTimings ( $messages )
$messages 配列

プロファイリングから取得したログメッセージ

return 配列

タイミング。各要素は、infocategorytimestamptraceleveldurationmemorymemoryDiff の要素で構成される配列です。memory および memoryDiff の値は、バージョン 2.0.11 以降で利用可能です。

                public function calculateTimings($messages)
{
    $timings = [];
    $stack = [];
    foreach ($messages as $i => $log) {
        list($token, $level, $category, $timestamp, $traces) = $log;
        $memory = isset($log[5]) ? $log[5] : 0;
        $log[6] = $i;
        $hash = md5(json_encode($token));
        if ($level == self::LEVEL_PROFILE_BEGIN) {
            $stack[$hash] = $log;
        } elseif ($level == self::LEVEL_PROFILE_END) {
            if (isset($stack[$hash])) {
                $timings[$stack[$hash][6]] = [
                    'info' => $stack[$hash][0],
                    'category' => $stack[$hash][2],
                    'timestamp' => $stack[$hash][3],
                    'trace' => $stack[$hash][4],
                    'level' => count($stack) - 1,
                    'duration' => $timestamp - $stack[$hash][3],
                    'memory' => $memory,
                    'memoryDiff' => $memory - (isset($stack[$hash][5]) ? $stack[$hash][5] : 0),
                ];
                unset($stack[$hash]);
            }
        }
    }
    ksort($timings);
    return array_values($timings);
}

            
canGetProperty() public メソッド

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

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

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

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

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

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

プロパティ名

$checkVars ブール値

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

$checkBehaviors ブール値

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

return ブール値

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

                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 ブール値

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

$checkBehaviors ブール値

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

return ブール値

プロパティが書き込めるかどうか

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

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

            
flush() public メソッド

メモリからターゲットへログメッセージをフラッシュします。

public void flush ( $final false )
$final ブール値

これがリクエスト中の最後の呼び出しであるかどうか。

                public function flush($final = false)
{
    if ($this->profilingAware) {
        $keep = [];
        $messages = [];
        foreach ($this->messages as $index => $message) {
            if (is_int($index)) {
                $messages[] = $message;
            } else {
                if (strncmp($index, 'begin-', 6) === 0) {
                    $oppositeProfile = 'end-' . substr($index, 6);
                } else {
                    $oppositeProfile = 'begin-' . substr($index, 4);
                }
                if (array_key_exists($oppositeProfile, $this->messages)) {
                    $messages[] = $message;
                } else {
                    $keep[$index] = $message;
                }
            }
        }
        if ($this->flushInterval > 0 && count($keep) >= $this->flushInterval) {
            $this->messages = [];
            $this->log(
                'Number of dangling profiling block messages reached flushInterval value and therefore these were flushed. Please consider setting higher flushInterval value or making profiling blocks shorter.',
                self::LEVEL_WARNING
            );
            $messages = array_merge($messages, array_values($keep));
        } else {
            $this->messages = $keep;
        }
    } else {
        $messages = $this->messages;
        $this->messages = [];
    }
    if ($this->dispatcher instanceof Dispatcher) {
        $this->dispatcher->dispatch($messages, $final);
    }
}

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

            
getDbProfiling() public メソッド

DBクエリの統計結果を返します。

返される結果には、実行されたSQLステートメントの数と、費やされた合計時間が含まれます。

public array getDbProfiling ( )
return 配列

最初の要素は実行されたSQLステートメントの数を示し、2番目の要素はSQL実行に費やされた合計時間を示します。

                public function getDbProfiling()
{
    $timings = $this->getProfiling($this->dbEventNames);
    $count = count($timings);
    $time = 0;
    foreach ($timings as $timing) {
        $time += $timing['duration'];
    }
    return [$count, $time];
}

            
getElapsedTime() public メソッド

現在のリクエスト開始からの経過時間を返します。

このメソッドは、現在時刻と、yii\BaseYii クラスファイルの先頭で評価される定数YII_BEGIN_TIMEによって定義されたタイムスタンプとの差を計算します。

public float getElapsedTime ( )
return 浮動小数点数

現在のリクエストの合計経過時間(秒)。

                public function getElapsedTime()
{
    return microtime(true) - YII_BEGIN_TIME;
}

            
getLevelName() public static メソッド

指定されたレベルのテキスト表示を返します。

public static string getLevelName ( $level )
$level 整数

メッセージレベル。例えば、LEVEL_ERRORLEVEL_WARNINGなど。

return string

レベルのテキスト表示

                public static function getLevelName($level)
{
    static $levels = [
        self::LEVEL_ERROR => 'error',
        self::LEVEL_WARNING => 'warning',
        self::LEVEL_INFO => 'info',
        self::LEVEL_TRACE => 'trace',
        self::LEVEL_PROFILE_BEGIN => 'profile begin',
        self::LEVEL_PROFILE_END => 'profile end',
        self::LEVEL_PROFILE => 'profile',
    ];
    return isset($levels[$level]) ? $levels[$level] : 'unknown';
}

            
getProfiling() public メソッド

プロファイリングの結果を返します。

デフォルトでは、すべてのプロファイリング結果が返されます。関心のある結果を取得するために、$categories$excludeCategories をパラメータとして指定できます。

public array getProfiling ( $categories = [], $excludeCategories = [] )
$categories 配列

関心のあるカテゴリのリスト。カテゴリの末尾にアスタリスクを使用して、プレフィックスマッチを行うことができます。例えば、'yii\db*' は、'yii\db\Connection' のように、'yii\db\' で始まるカテゴリにマッチします。

$excludeCategories 配列

除外したいカテゴリのリスト

return 配列

プロファイリングの結果。各要素は、infocategorytimestamptraceleveldurationmemorymemoryDiff で構成される配列です。memorymemoryDiff の値は、バージョン 2.0.11 以降で利用できます。

                public function getProfiling($categories = [], $excludeCategories = [])
{
    $timings = $this->calculateTimings($this->messages);
    if (empty($categories) && empty($excludeCategories)) {
        return $timings;
    }
    foreach ($timings as $outerIndex => $outerTimingItem) {
        $currentIndex = $outerIndex;
        $matched = empty($categories);
        foreach ($categories as $category) {
            $prefix = rtrim($category, '*');
            if (
                ($outerTimingItem['category'] === $category || $prefix !== $category)
                && strpos($outerTimingItem['category'], $prefix) === 0
            ) {
                $matched = true;
                break;
            }
        }
        if ($matched) {
            foreach ($excludeCategories as $category) {
                $prefix = rtrim($category, '*');
                foreach ($timings as $innerIndex => $innerTimingItem) {
                    $currentIndex = $innerIndex;
                    if (
                        ($innerTimingItem['category'] === $category || $prefix !== $category)
                        && strpos($innerTimingItem['category'], $prefix) === 0
                    ) {
                        $matched = false;
                        break;
                    }
                }
            }
        }
        if (!$matched) {
            unset($timings[$currentIndex]);
        }
    }
    return array_values($timings);
}

            
hasEventHandlers() public メソッド

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

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

public boolean hasEventHandlers ( $name )
$name string

イベント名

return ブール値

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

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

            
hasMethod() public メソッド

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

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

メソッドが定義されているのは、

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

プロパティ名

$checkBehaviors ブール値

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

return ブール値

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

                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 ブール値

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

$checkBehaviors ブール値

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

return ブール値

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

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

            
init() public メソッド

flush() をシャットダウン関数として登録することにより、ロガーを初期化します。

public void init ( )

                public function init()
{
    parent::init();
    register_shutdown_function(function () {
        // make regular flush before other shutdown functions, which allows session data collection and so on
        $this->flush();
        // make sure log entries written by shutdown functions are also flushed
        // ensure "flush()" is called last when there are multiple shutdown functions
        register_shutdown_function([$this, 'flush'], true);
    });
}

            
log() public メソッド

指定された型とカテゴリでメッセージをログに記録します。

$traceLevel が 0 より大きい場合、アプリケーションコードに関する追加のコールスタック情報もログに記録されます。

public void log ( $message, $level, $category 'application' )
$message string|array

ログに記録するメッセージ。これは、単純な文字列か、ログターゲットによって処理されるより複雑なデータ構造にすることができます。

$level 整数

メッセージのレベル。これは、Logger::LEVEL_ERRORLogger::LEVEL_WARNINGLogger::LEVEL_INFOLogger::LEVEL_TRACELogger::LEVEL_PROFILELogger::LEVEL_PROFILE_BEGINLogger::LEVEL_PROFILE_ENDのいずれかである必要があります。

$category string

メッセージのカテゴリ。

                public function log($message, $level, $category = 'application')
{
    $time = microtime(true);
    $traces = [];
    if ($this->traceLevel > 0) {
        $count = 0;
        $ts = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
        array_pop($ts); // remove the last trace since it would be the entry script, not very useful
        foreach ($ts as $trace) {
            if (isset($trace['file'], $trace['line']) && strpos($trace['file'], YII2_PATH) !== 0) {
                unset($trace['object'], $trace['args']);
                $traces[] = $trace;
                if (++$count >= $this->traceLevel) {
                    break;
                }
            }
        }
    }
    $data = [$message, $level, $category, $time, $traces, memory_get_usage()];
    if ($this->profilingAware && in_array($level, [self::LEVEL_PROFILE_BEGIN, self::LEVEL_PROFILE_END])) {
        $this->messages[($level == self::LEVEL_PROFILE_BEGIN ? 'begin-' : 'end-') . md5(json_encode($message))] = $data;
    } else {
        $this->messages[] = $data;
    }
    if ($this->flushInterval > 0 && count($this->messages) >= $this->flushInterval) {
        $this->flush();
    }
}

            
off() public メソッド

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

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

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

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

参照 on()

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

イベント名

$handler callable|null

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

return ブール値

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

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

            
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 ブール値

既存のハンドラリストの最後に新しいイベントハンドラを追加するかどうか。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]);
    }
}

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