0 follower

クラス yii\log\EmailTarget

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

EmailTarget は、選択されたログメッセージを指定されたメールアドレスに送信します。

ターゲットのメールアドレス、件名などを設定できる $message プロパティを設定することで、送信するメールを設定できます。

'components' => [
    'log' => [
         'targets' => [
             [
                 'class' => 'yii\log\EmailTarget',
                 'mailer' => 'mailer',
                 'levels' => ['error', 'warning'],
                 'message' => [
                     'from' => ['log@example.com'],
                     'to' => ['developer1@example.com', 'developer2@example.com'],
                     'subject' => 'Log message',
                 ],
             ],
         ],
    ],
],

上記の例では、mailer はメールを送信するコンポーネントのIDであり、すでに設定されている必要があります。

公開プロパティ

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

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$categories array このターゲットが関心を持つメッセージカテゴリのリスト。 yii\log\Target
$enabled boolean このログターゲットが有効かどうかを示します。 yii\log\Target
$except array このターゲットが関心を持たないメッセージカテゴリのリスト。 yii\log\Target
$exportInterval integer エクスポートするまでに蓄積されるメッセージの数。 yii\log\Target
$levels integer このターゲットが関心を持つメッセージレベル。 yii\log\Target
$logVars array メッセージに記録する必要があるPHPの定義済み変数のリスト。 yii\log\Target
$mailer yii\mail\MailerInterface|array|string メーラーオブジェクト、またはメーラーオブジェクトのアプリケーションコンポーネントID。 yii\log\EmailTarget
$maskVars array 存在する場合に、"そのまま"記録するのではなく、常にマスク *** で置き換える必要のあるPHPの定義済み変数のリスト。 yii\log\Target
$message array message オブジェクトを作成するための設定配列。 yii\log\EmailTarget
$messages array このログターゲットによってこれまでにロガーから取得されたメッセージ。 yii\log\Target
$microtime boolean マイクロ秒単位で時刻を記録するかどうか。 yii\log\Target
$prefix callable|null エクスポートされたすべてのメッセージにプレフィックスとして付加される文字列を返すPHPのcallable。 yii\log\Target

公開メソッド

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

メソッド 説明 定義元
__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
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティが設定可能かどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
collect() 指定されたログメッセージを処理します。 yii\log\Target
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
export() ログメッセージを指定されたメールアドレスに送信します。 yii\log\EmailTarget
filterMessages() カテゴリとレベルに従って、指定されたメッセージをフィルタリングします。 yii\log\Target
formatMessage() 文字列として表示するためのログメッセージをフォーマットします。 yii\log\Target
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべてのビヘイビアを返します。 yii\base\Component
getEnabled() ログターゲットが有効かどうかを確認します。 yii\log\Target
getLevels() yii\log\Target
getMessagePrefix() 指定されたメッセージにプレフィックスとして付加される文字列を返します。 yii\log\Target
hasEventHandlers() 名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\log\EmailTarget
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
setEnabled() このログターゲットが有効かどうかを示す値を設定します。 yii\log\Target
setLevels() このターゲットが対象とするメッセージレベルを設定します。 yii\log\Target
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
composeMessage() 指定された本文コンテンツでメールメッセージを作成します。 yii\log\EmailTarget
getContextMessage() ログに記録されるコンテキスト情報を生成します。 yii\log\Target
getTime() メッセージのフォーマットされた ('Y-m-d H:i:s') タイムスタンプを返します。 yii\log\Target

プロパティの詳細

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

$mailer public property

メーラーオブジェクト、またはメーラーオブジェクトのアプリケーションコンポーネントID。 EmailTargetオブジェクトが作成された後、このプロパティを変更する場合は、メーラーオブジェクトのみを割り当てる必要があります。バージョン2.0.2以降では、オブジェクトを作成するための構成配列も可能です。

$message public property

messageオブジェクトを作成するための構成配列。「to」オプションは、宛先メールアドレスを指定するため、設定する必要があることに注意してください。

public array $message = []

メソッドの詳細

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

__call() public method

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

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

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

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

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

メソッド名

$params array

メソッドパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

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

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

            
__clone() public method

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

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

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

public void __clone ( )

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

            
__construct() public method

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

コンストラクタ。

デフォルトの実装では、次の2つのことを行います

  • 指定された構成$configでオブジェクトを初期化します。
  • init()を呼び出します。

子クラスでこのメソッドがオーバーライドされている場合は、次のことをお勧めします

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

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

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

            
__get() public method

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

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

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

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

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

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

public mixed __get ( $name )
$name string

プロパティ名

return mixed

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

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

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

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

            
__isset() public 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 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 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() パブリックメソッド

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

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

定義元: 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 ( )
return array

ビヘイビア構成。

                public function behaviors()
{
    return [];
}

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

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

定義元: 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() パブリックスタティックメソッド
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();
}

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

定義元: yii\log\Target::collect()

指定されたログメッセージを処理します。

このメソッドは、$levels$categoriesを使用して、指定されたメッセージをフィルタリングします。また、要求された場合は、フィルタリング結果を特定の媒体(例:メール)にエクスポートします。

public void collect ( $messages, $final )
$messages array

処理されるログメッセージ。各メッセージの構造については、yii\log\Logger::$messagesを参照してください。

$final boolean

このメソッドが現在のアプリケーションの最後に呼び出されるかどうか

                public function collect($messages, $final)
{
    $this->messages = array_merge($this->messages, static::filterMessages($messages, $this->getLevels(), $this->categories, $this->except));
    $count = count($this->messages);
    if ($count > 0 && ($final || $this->exportInterval > 0 && $count >= $this->exportInterval)) {
        if (($context = $this->getContextMessage()) !== '') {
            $this->messages[] = [$context, Logger::LEVEL_INFO, 'application', YII_BEGIN_TIME, [], 0];
        }
        // set exportInterval to 0 to avoid triggering export again while exporting
        $oldExportInterval = $this->exportInterval;
        $this->exportInterval = 0;
        $this->export();
        $this->exportInterval = $oldExportInterval;
        $this->messages = [];
    }
}

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

指定された本文コンテンツでメールメッセージを作成します。

protected yii\mail\MessageInterface composeMessage ( $body )
$body string

本文コンテンツ

return yii\mail\MessageInterface

$message

                protected function composeMessage($body)
{
    $message = $this->mailer->compose();
    Yii::configure($message, $this->message);
    $message->setTextBody($body);
    return $message;
}

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

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

            
export() public メソッド

ログメッセージを指定されたメールアドレスに送信します。

バージョン 2.0.14 から、このメソッドはログをエクスポートできない場合に LogRuntimeException をスローします。

public void export ( )
throws yii\log\LogRuntimeException

                public function export()
{
    // moved initialization of subject here because of the following issue
    // https://github.com/yiisoft/yii2/issues/1446
    if (empty($this->message['subject'])) {
        $this->message['subject'] = 'Application Log';
    }
    $messages = array_map([$this, 'formatMessage'], $this->messages);
    $body = wordwrap(implode("\n", $messages), 70);
    $message = $this->composeMessage($body);
    if (!$message->send($this->mailer)) {
        throw new LogRuntimeException('Unable to export log through email!');
    }
}

            
filterMessages() public static メソッド

定義場所: yii\log\Target::filterMessages()

カテゴリとレベルに従って、指定されたメッセージをフィルタリングします。

public static array filterMessages ( $messages, $levels 0, $categories = [], $except = [] )
$messages array

フィルタリングされるメッセージ。メッセージの構造は yii\log\Logger::$messages の構造に従います。

$levels integer

フィルタリングするメッセージレベル。これはレベル値のビットマップです。値 0 はすべてのレベルを許可することを意味します。

$categories array

フィルタリングするメッセージカテゴリ。空の場合、すべてのカテゴリが許可されることを意味します。

$except array

除外するメッセージカテゴリ。空の場合、すべてのカテゴリが許可されることを意味します。

return array

フィルタリングされたメッセージ。

                public static function filterMessages($messages, $levels = 0, $categories = [], $except = [])
{
    foreach ($messages as $i => $message) {
        if ($levels && !($levels & $message[1])) {
            unset($messages[$i]);
            continue;
        }
        $matched = empty($categories);
        foreach ($categories as $category) {
            if ($message[2] === $category || !empty($category) && substr_compare($category, '*', -1, 1) === 0 && strpos($message[2], rtrim($category, '*')) === 0) {
                $matched = true;
                break;
            }
        }
        if ($matched) {
            foreach ($except as $category) {
                $prefix = rtrim($category, '*');
                if (($message[2] === $category || $prefix !== $category) && strpos($message[2], $prefix) === 0) {
                    $matched = false;
                    break;
                }
            }
        }
        if (!$matched) {
            unset($messages[$i]);
        }
    }
    return $messages;
}

            
formatMessage() public メソッド

定義場所: yii\log\Target::formatMessage()

文字列として表示するためのログメッセージをフォーマットします。

public string formatMessage ( $message )
$message array

フォーマットされるログメッセージ。メッセージの構造は yii\log\Logger::$messages の構造に従います。

return string

フォーマットされたメッセージ

                public function formatMessage($message)
{
    list($text, $level, $category, $timestamp) = $message;
    $level = Logger::getLevelName($level);
    if (!is_string($text)) {
        // exceptions may not be serializable if in the call stack somewhere is a Closure
        if ($text instanceof \Exception || $text instanceof \Throwable) {
            $text = (string) $text;
        } else {
            $text = VarDumper::export($text);
        }
    }
    $traces = [];
    if (isset($message[4])) {
        foreach ($message[4] as $trace) {
            $traces[] = "in {$trace['file']}:{$trace['line']}";
        }
    }
    $prefix = $this->getMessagePrefix($message);
    return $this->getTime($timestamp) . " {$prefix}[$level][$category] $text"
        . (empty($traces) ? '' : "\n    " . implode("\n    ", $traces));
}

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

            
getContextMessage() protected メソッド

定義場所: yii\log\Target::getContextMessage()

ログに記録されるコンテキスト情報を生成します。

デフォルトの実装では、ユーザー情報、システム変数などをダンプします。

protected string getContextMessage ( )
return string

コンテキスト情報。空の文字列の場合は、コンテキスト情報がないことを意味します。

                protected function getContextMessage()
{
    $context = ArrayHelper::filter($GLOBALS, $this->logVars);
    foreach ($this->maskVars as $var) {
        if (ArrayHelper::getValue($context, $var) !== null) {
            ArrayHelper::setValue($context, $var, '***');
        }
    }
    $result = [];
    foreach ($context as $key => $value) {
        $result[] = "\${$key} = " . VarDumper::dumpAsString($value);
    }
    return implode("\n\n", $result);
}

            
getEnabled() public メソッド

定義場所: yii\log\Target::getEnabled()

ログターゲットが有効かどうかを確認します。

public boolean getEnabled ( )
return boolean

このログターゲットが有効かどうかを示す値。

                public function getEnabled()
{
    if (is_callable($this->_enabled)) {
        return call_user_func($this->_enabled, $this);
    }
    return $this->_enabled;
}

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

このターゲットが対象とするメッセージレベル。これはレベル値のビットマップです。デフォルトは 0 で、使用可能なすべてのレベルを意味します。

                public function getLevels()
{
    return $this->_levels;
}

            
getMessagePrefix() public メソッド

定義場所: yii\log\Target::getMessagePrefix()

指定されたメッセージにプレフィックスとして付加される文字列を返します。

$prefix が設定されている場合、コールバックの結果を返します。デフォルトの実装では、プレフィックスとしてユーザー IP、ユーザー ID、およびセッション ID を返します。

public string getMessagePrefix ( $message )
$message array

エクスポートされるメッセージ。メッセージ構造は、yii\log\Logger::$messages の構造に従います。

return string

プレフィックス文字列

                public function getMessagePrefix($message)
{
    if ($this->prefix !== null) {
        return call_user_func($this->prefix, $message);
    }
    if (Yii::$app === null) {
        return '';
    }
    $request = Yii::$app->getRequest();
    $ip = $request instanceof Request ? $request->getUserIP() : '-';
    /* @var $user \yii\web\User */
    $user = Yii::$app->has('user', true) ? Yii::$app->get('user') : null;
    if ($user && ($identity = $user->getIdentity(false))) {
        $userID = $identity->getId();
    } else {
        $userID = '-';
    }
    /* @var $session \yii\web\Session */
    $session = Yii::$app->has('session', true) ? Yii::$app->get('session') : null;
    $sessionID = $session && $session->getIsActive() ? $session->getId() : '-';
    return "[$ip][$userID][$sessionID]";
}

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

定義場所: yii\log\Target::getTime()

メッセージのフォーマットされた ('Y-m-d H:i:s') タイムスタンプを返します。

$microtime が true に設定されている場合、'Y-m-d H:i:s.u' 形式で返します。

protected string getTime ( $timestamp )
$timestamp float

                protected function getTime($timestamp)
{
    $parts = explode('.', sprintf('%F', $timestamp));
    return date('Y-m-d H:i:s', $parts[0]) . ($this->microtime ? ('.' . $parts[1]) : '');
}

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

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

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

プロパティは次の条件で定義されます。

  • クラスが、指定された名前に関連付けられた getter または setter メソッドを持っている (この場合、プロパティ名は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 メソッド

オブジェクトを初期化します。

このメソッドは、オブジェクトが与えられた設定で初期化された後、コンストラクターの最後に呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    if (empty($this->message['to'])) {
        throw new InvalidConfigException('The "to" option must be set for EmailTarget::message.');
    }
    $this->mailer = Instance::ensure($this->mailer, 'yii\mail\MailerInterface');
}

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

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

            
setEnabled() public メソッド

定義場所: yii\log\Target::setEnabled()

このログターゲットが有効かどうかを示す値を設定します。

public void setEnabled ( $value )
$value boolean|callable

ブール値または値を取得するためのcallable。callable 値はバージョン 2.0.13 から利用可能です。

callable は、ログターゲットを動的に有効にするかどうかを判断するために使用できます。たとえば、現在のユーザーがログインしている場合にのみログを有効にするには、次のようにターゲットを設定できます。

'enabled' => function() {
    return !Yii::$app->user->isGuest;
}

                public function setEnabled($value)
{
    $this->_enabled = $value;
}

            
setLevels() public メソッド

定義場所: yii\log\Target::setLevels()

このターゲットが対象とするメッセージレベルを設定します。

パラメーターは、対象のレベル名の配列、または対象のレベル値のビットマップを表す整数のいずれかです。有効なレベル名には、'error'、'warning'、'info'、'trace'、'profile' が含まれます。有効なレベル値には、yii\log\Logger::LEVEL_ERROR, yii\log\Logger::LEVEL_WARNING, yii\log\Logger::LEVEL_INFO, yii\log\Logger::LEVEL_TRACE, yii\log\Logger::LEVEL_PROFILE が含まれます。

例:

['error', 'warning']
// which is equivalent to:
Logger::LEVEL_ERROR | Logger::LEVEL_WARNING
public void setLevels ( $levels )
$levels array|integer

このターゲットが対象とするメッセージレベル。

throws yii\base\InvalidConfigException

$levels の値が正しくない場合。

                public function setLevels($levels)
{
    static $levelMap = [
        'error' => Logger::LEVEL_ERROR,
        'warning' => Logger::LEVEL_WARNING,
        'info' => Logger::LEVEL_INFO,
        'trace' => Logger::LEVEL_TRACE,
        'profile' => Logger::LEVEL_PROFILE,
    ];
    if (is_array($levels)) {
        $this->_levels = 0;
        foreach ($levels as $level) {
            if (isset($levelMap[$level])) {
                $this->_levels |= $levelMap[$level];
            } else {
                throw new InvalidConfigException("Unrecognized level: $level");
            }
        }
    } else {
        $bitmapValues = array_reduce($levelMap, function ($carry, $item) {
            return $carry | $item;
        });
        if (!($bitmapValues & $levels) && $levels !== 0) {
            throw new InvalidConfigException("Incorrect $levels value");
        }
        $this->_levels = $levels;
    }
}

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