0 フォロワー

クラス yii\db\sqlite\SqlTokenizer

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

SqlTokenizer は、SQLite クエリを個々の SQL トークンに分割します。

これは、`CREATE TABLE` SQL コードから `CHECK` 制約情報を取得するために使用されます。

参照

公開プロパティ

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

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされているビヘイビアのリスト。 yii\base\Component
$length integer SQL コード文字列の長さ。 yii\db\SqlTokenizer
$offset integer SQL コード文字列の現在のオフセット。 yii\db\SqlTokenizer
$sql string SQL コード。 yii\db\SqlTokenizer

保護されたプロパティ

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

プロパティ 説明 定義元

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\db\SqlTokenizer
__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
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
hasEventHandlers() 名前付きイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントのプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\base\BaseObject
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
tokenize() コードタイプのトークンをトークン化して返します。 yii\db\SqlTokenizer
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
indexAfter() 指定されたオフセットから始まるSQLコード内で、指定された文字列の後のインデックスを返します。 yii\db\SqlTokenizer
isComment() 現在のオフセットにコメントがあるかどうかを返します。 yii\db\sqlite\SqlTokenizer
isIdentifier() 現在のオフセットに識別子があるかどうかを返します。 yii\db\sqlite\SqlTokenizer
isKeyword() 指定された文字列がキーワードかどうかを返します。 yii\db\sqlite\SqlTokenizer
isOperator() 現在のオフセットに演算子があるかどうかを返します。 yii\db\sqlite\SqlTokenizer
isStringLiteral() 現在のオフセットに文字列リテラルがあるかどうかを返します。 yii\db\sqlite\SqlTokenizer
isWhitespace() 現在のオフセットに空白があるかどうかを返します。 yii\db\sqlite\SqlTokenizer
startsWithAnyLongest() 最長の共通接頭辞が、現在のオフセットで同じ長さのSQLコードと等しいかどうかを返します。 yii\db\SqlTokenizer
substring() 指定されたオフセットから始まる、指定された長さの文字列を返します。 yii\db\SqlTokenizer

メソッドの詳細

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

__call() publicメソッド

定義先: 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() publicメソッド

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

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

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

public void __clone ( )

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

            
__construct() publicメソッド

定義先: yii\db\SqlTokenizer::__construct()

コンストラクタ。

public void __construct ( $sql, $config = [] )
$sql string

トークン化するSQLコード。

$config array

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

                public function __construct($sql, $config = [])
{
    $this->sql = $sql;
    parent::__construct($config);
}

            
__get() publicメソッド

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

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

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

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

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

こちらも参照してください __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() publicメソッド

定義先: yii\base\Component::__isset()

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

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

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

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

こちらも参照してください 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() publicメソッド

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

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

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

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

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

こちらも参照してください __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() publicメソッド

定義先: yii\base\Component::__unset()

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

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

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

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

こちらも参照してください 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);
}

            
attachBehavior() publicメソッド

定義先: yii\base\Component::attachBehavior()

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

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

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

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

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの設定。以下のいずれかになります。

  • yii\base\Behaviorオブジェクト
  • ビヘイビアクラスを指定する文字列
  • ビヘイビアオブジェクトを作成するためにYii::createObject()に渡されるオブジェクト設定配列。
戻り値 yii\base\Behavior

ビヘイビアオブジェクト

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

            
attachBehaviors() publicメソッド

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

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

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

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

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチする動作のリスト

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

            
behaviors() public メソッド

定義済み: yii\base\Component::behaviors()

このコンポーネントが持つべきビヘイビアのリストを返します。

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

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

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

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

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

public array behaviors ( )
戻り値 array

動作設定。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

定義済み: yii\base\Component::canGetProperty()

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

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

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

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

動作のプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを読み取ることができるかどうか

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

            
canSetProperty() public メソッド

定義済み: yii\base\Component::canSetProperty()

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

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

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

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

動作のプロパティをこのコンポーネントのプロパティとして扱うかどうか

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

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

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

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

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

            
indexAfter() protectedメソッド

定義場所: yii\db\SqlTokenizer::indexAfter()

指定されたオフセットから始まるSQLコード内で、指定された文字列の後のインデックスを返します。

protected integer indexAfter ( $string, $offset null )
$string string

検索対象の文字列。

$offset integer|null

SQLコードのオフセット。null が渡された場合は現在のオフセットが使用されます。

戻り値 integer

指定された文字列の後のインデックス、または文字列の終端のインデックス。

                protected function indexAfter($string, $offset = null)
{
    if ($offset === null) {
        $offset = $this->offset;
    }
    if ($offset + mb_strlen($string, 'UTF-8') > $this->length) {
        return $this->length;
    }
    $afterIndexOf = mb_strpos($this->sql, $string, $offset, 'UTF-8');
    if ($afterIndexOf === false) {
        $afterIndexOf = $this->length;
    } else {
        $afterIndexOf += mb_strlen($string, 'UTF-8');
    }
    return $afterIndexOf;
}

            
init() publicメソッド

定義場所: yii\base\BaseObject::init()

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

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

public void init ( )

                public function init()
{
}

            
isComment() protectedメソッド

現在のオフセットにコメントがあるかどうかを返します。

このメソッドがtrueを返す場合、$lengthパラメータに一致した文字列の長さを設定する必要があります。

protected boolean isComment ( &$length )
$length integer

一致した文字列の長さ。

戻り値 boolean

現在のオフセットにコメントがあるかどうか。

                protected function isComment(&$length)
{
    static $comments = [
        '--' => true,
        '/*' => true,
    ];
    $length = 2;
    if (!isset($comments[$this->substring($length)])) {
        return false;
    }
    if ($this->substring($length) === '--') {
        $length = $this->indexAfter("\n") - $this->offset;
    } else {
        $length = $this->indexAfter('*/') - $this->offset;
    }
    return true;
}

            
isIdentifier() protectedメソッド

現在のオフセットに識別子があるかどうかを返します。

このメソッドがtrueを返す場合、$lengthパラメータに一致した文字列の長さを設定する必要があります。また、トークンのコンテンツとして使用される文字列を$contentに設定することもできます。

protected boolean isIdentifier ( &$length, &$content )
$length integer

一致した文字列の長さ。

$content string

一致した文字列の代わりに使用されるオプションのコンテンツ。

戻り値 boolean

現在のオフセットに識別子があるかどうか。

                protected function isIdentifier(&$length, &$content)
{
    static $identifierDelimiters = [
        '"' => '"',
        '[' => ']',
        '`' => '`',
    ];
    if (!isset($identifierDelimiters[$this->substring(1)])) {
        return false;
    }
    $delimiter = $identifierDelimiters[$this->substring(1)];
    $offset = $this->offset;
    while (true) {
        $offset = $this->indexAfter($delimiter, $offset + 1);
        if ($delimiter === ']' || $this->substring(1, true, $offset) !== $delimiter) {
            break;
        }
    }
    $length = $offset - $this->offset;
    $content = $this->substring($length - 2, true, $this->offset + 1);
    if ($delimiter !== ']') {
        $content = strtr($content, ["$delimiter$delimiter" => $delimiter]);
    }
    return true;
}

            
isKeyword() protectedメソッド

指定された文字列がキーワードかどうかを返します。

このメソッドは、トークンのコンテンツとして使用される文字列を$contentに設定できます。

protected boolean isKeyword ( $string, &$content )
$string string

一致させる文字列。

$content string

一致した文字列の代わりに使用されるオプションのコンテンツ。

戻り値 boolean

指定された文字列がキーワードかどうか。

                protected function isKeyword($string, &$content)
{
    static $keywords = [
        'ABORT' => true,
        'ACTION' => true,
        'ADD' => true,
        'AFTER' => true,
        'ALL' => true,
        'ALTER' => true,
        'ANALYZE' => true,
        'AND' => true,
        'AS' => true,
        'ASC' => true,
        'ATTACH' => true,
        'AUTOINCREMENT' => true,
        'BEFORE' => true,
        'BEGIN' => true,
        'BETWEEN' => true,
        'BY' => true,
        'CASCADE' => true,
        'CASE' => true,
        'CAST' => true,
        'CHECK' => true,
        'COLLATE' => true,
        'COLUMN' => true,
        'COMMIT' => true,
        'CONFLICT' => true,
        'CONSTRAINT' => true,
        'CREATE' => true,
        'CROSS' => true,
        'CURRENT_DATE' => true,
        'CURRENT_TIME' => true,
        'CURRENT_TIMESTAMP' => true,
        'DATABASE' => true,
        'DEFAULT' => true,
        'DEFERRABLE' => true,
        'DEFERRED' => true,
        'DELETE' => true,
        'DESC' => true,
        'DETACH' => true,
        'DISTINCT' => true,
        'DROP' => true,
        'EACH' => true,
        'ELSE' => true,
        'END' => true,
        'ESCAPE' => true,
        'EXCEPT' => true,
        'EXCLUSIVE' => true,
        'EXISTS' => true,
        'EXPLAIN' => true,
        'FAIL' => true,
        'FOR' => true,
        'FOREIGN' => true,
        'FROM' => true,
        'FULL' => true,
        'GLOB' => true,
        'GROUP' => true,
        'HAVING' => true,
        'IF' => true,
        'IGNORE' => true,
        'IMMEDIATE' => true,
        'IN' => true,
        'INDEX' => true,
        'INDEXED' => true,
        'INITIALLY' => true,
        'INNER' => true,
        'INSERT' => true,
        'INSTEAD' => true,
        'INTERSECT' => true,
        'INTO' => true,
        'IS' => true,
        'ISNULL' => true,
        'JOIN' => true,
        'KEY' => true,
        'LEFT' => true,
        'LIKE' => true,
        'LIMIT' => true,
        'MATCH' => true,
        'NATURAL' => true,
        'NO' => true,
        'NOT' => true,
        'NOTNULL' => true,
        'NULL' => true,
        'OF' => true,
        'OFFSET' => true,
        'ON' => true,
        'OR' => true,
        'ORDER' => true,
        'OUTER' => true,
        'PLAN' => true,
        'PRAGMA' => true,
        'PRIMARY' => true,
        'QUERY' => true,
        'RAISE' => true,
        'RECURSIVE' => true,
        'REFERENCES' => true,
        'REGEXP' => true,
        'REINDEX' => true,
        'RELEASE' => true,
        'RENAME' => true,
        'REPLACE' => true,
        'RESTRICT' => true,
        'RIGHT' => true,
        'ROLLBACK' => true,
        'ROW' => true,
        'SAVEPOINT' => true,
        'SELECT' => true,
        'SET' => true,
        'TABLE' => true,
        'TEMP' => true,
        'TEMPORARY' => true,
        'THEN' => true,
        'TO' => true,
        'TRANSACTION' => true,
        'TRIGGER' => true,
        'UNION' => true,
        'UNIQUE' => true,
        'UPDATE' => true,
        'USING' => true,
        'VACUUM' => true,
        'VALUES' => true,
        'VIEW' => true,
        'VIRTUAL' => true,
        'WHEN' => true,
        'WHERE' => true,
        'WITH' => true,
        'WITHOUT' => true,
    ];
    $string = mb_strtoupper($string, 'UTF-8');
    if (!isset($keywords[$string])) {
        return false;
    }
    $content = $string;
    return true;
}

            
isOperator() protectedメソッド

現在のオフセットに演算子があるかどうかを返します。

このメソッドがtrueを返す場合、$lengthパラメータに一致した文字列の長さを設定する必要があります。また、トークンのコンテンツとして使用される文字列を$contentに設定することもできます。

protected boolean isOperator ( &$length, &$content )
$length integer

一致した文字列の長さ。

$content string

一致した文字列の代わりに使用されるオプションのコンテンツ。

戻り値 boolean

現在のオフセットに演算子があるかどうか。

                protected function isOperator(&$length, &$content)
{
    static $operators = [
        '!=',
        '%',
        '&',
        '(',
        ')',
        '*',
        '+',
        ',',
        '-',
        '.',
        '/',
        ';',
        '<',
        '<<',
        '<=',
        '<>',
        '=',
        '==',
        '>',
        '>=',
        '>>',
        '|',
        '||',
        '~',
    ];
    return $this->startsWithAnyLongest($operators, true, $length);
}

            
isStringLiteral() protectedメソッド

現在のオフセットに文字列リテラルがあるかどうかを返します。

このメソッドがtrueを返す場合、$lengthパラメータに一致した文字列の長さを設定する必要があります。また、トークンのコンテンツとして使用される文字列を$contentに設定することもできます。

protected boolean isStringLiteral ( &$length, &$content )
$length integer

一致した文字列の長さ。

$content string

一致した文字列の代わりに使用されるオプションのコンテンツ。

戻り値 boolean

現在のオフセットに文字列リテラルがあるかどうか。

                protected function isStringLiteral(&$length, &$content)
{
    if ($this->substring(1) !== "'") {
        return false;
    }
    $offset = $this->offset;
    while (true) {
        $offset = $this->indexAfter("'", $offset + 1);
        if ($this->substring(1, true, $offset) !== "'") {
            break;
        }
    }
    $length = $offset - $this->offset;
    $content = strtr($this->substring($length - 2, true, $this->offset + 1), ["''" => "'"]);
    return true;
}

            
isWhitespace() protectedメソッド

現在のオフセットに空白があるかどうかを返します。

このメソッドがtrueを返す場合、$lengthパラメータに一致した文字列の長さを設定する必要があります。

protected boolean isWhitespace ( &$length )
$length integer

一致した文字列の長さ。

戻り値 boolean

現在のオフセットに空白があるかどうか。

                protected function isWhitespace(&$length)
{
    static $whitespaces = [
        "\f" => true,
        "\n" => true,
        "\r" => true,
        "\t" => true,
        ' ' => true,
    ];
    $length = 1;
    return isset($whitespaces[$this->substring($length)]);
}

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

            
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 コールバック関数

イベントハンドラ

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

            
startsWithAnyLongest() プロテクトメソッド

定義場所: yii\db\SqlTokenizer::startsWithAnyLongest()

最長の共通接頭辞が、現在のオフセットで同じ長さのSQLコードと等しいかどうかを返します。

protected boolean startsWithAnyLongest ( array &$with, $caseSensitive, &$length null, &$content null )
$with string[]

テスト対象の文字列。このメソッドは、検索速度を上げるためにこのパラメータを**変更します**。

$caseSensitive boolean

大文字と小文字を区別して比較するかどうか。

$length integer|null

一致した文字列の長さ。

$content string|null

一致した文字列。

戻り値 boolean

一致が見つかったかどうか。

                protected function startsWithAnyLongest(array &$with, $caseSensitive, &$length = null, &$content = null)
{
    if (empty($with)) {
        return false;
    }
    if (!is_array(reset($with))) {
        usort($with, function ($string1, $string2) {
            return mb_strlen($string2, 'UTF-8') - mb_strlen($string1, 'UTF-8');
        });
        $map = [];
        foreach ($with as $string) {
            $map[mb_strlen($string, 'UTF-8')][$caseSensitive ? $string : mb_strtoupper($string, 'UTF-8')] = true;
        }
        $with = $map;
    }
    foreach ($with as $testLength => $testValues) {
        $content = $this->substring($testLength, $caseSensitive);
        if (isset($testValues[$content])) {
            $length = $testLength;
            return true;
        }
    }
    return false;
}

            
substring() プロテクトメソッド

定義場所: yii\db\SqlTokenizer::substring()

指定されたオフセットから始まる、指定された長さの文字列を返します。

protected string substring ( $length, $caseSensitive true, $offset null )
$length integer

返される文字列の長さ。

$caseSensitive boolean

false の場合、文字列は大文字に変換されます。

$offset integer|null

SQLコードのオフセット。null が渡された場合は現在のオフセットが使用されます。

戻り値 string

結果の文字列。返すものが無い場合は空文字列になります。

                protected function substring($length, $caseSensitive = true, $offset = null)
{
    if ($offset === null) {
        $offset = $this->offset;
    }
    if ($offset + $length > $this->length) {
        return '';
    }
    $cacheKey = $offset . ',' . $length;
    if (!isset($this->_substrings[$cacheKey . ',1'])) {
        $this->_substrings[$cacheKey . ',1'] = mb_substr($this->sql, $offset, $length, 'UTF-8');
    }
    if (!$caseSensitive && !isset($this->_substrings[$cacheKey . ',0'])) {
        $this->_substrings[$cacheKey . ',0'] = mb_strtoupper($this->_substrings[$cacheKey . ',1'], 'UTF-8');
    }
    return $this->_substrings[$cacheKey . ',' . (int) $caseSensitive];
}

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

定義場所: yii\db\SqlTokenizer::tokenize()

コードタイプのトークンをトークン化して返します。

public yii\db\SqlToken tokenize ( )
戻り値 yii\db\SqlToken

コードタイプのトークン。

                public function tokenize()
{
    $this->length = mb_strlen($this->sql, 'UTF-8');
    $this->offset = 0;
    $this->_substrings = [];
    $this->_buffer = '';
    $this->_token = new SqlToken([
        'type' => SqlToken::TYPE_CODE,
        'content' => $this->sql,
    ]);
    $this->_tokenStack = new \SplStack();
    $this->_tokenStack->push($this->_token);
    $this->_token[] = new SqlToken(['type' => SqlToken::TYPE_STATEMENT]);
    $this->_tokenStack->push($this->_token[0]);
    $this->_currentToken = $this->_tokenStack->top();
    while (!$this->isEof()) {
        if ($this->isWhitespace($length) || $this->isComment($length)) {
            $this->addTokenFromBuffer();
            $this->advance($length);
            continue;
        }
        if ($this->tokenizeOperator($length) || $this->tokenizeDelimitedString($length)) {
            $this->advance($length);
            continue;
        }
        $this->_buffer .= $this->substring(1);
        $this->advance(1);
    }
    $this->addTokenFromBuffer();
    if ($this->_token->getHasChildren() && !$this->_token[-1]->getHasChildren()) {
        unset($this->_token[-1]);
    }
    return $this->_token;
}

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

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

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

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

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

イベント名

$event yii\base\Event|null

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

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