0 フォロワー

抽象クラス yii\db\SqlTokenizer

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

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

SQL コードから追加情報を取得するために使用できます。

使用例

$tokenizer = new SqlTokenizer("SELECT * FROM user WHERE id = 1");
$root = $tokeinzer->tokenize();
$sqlTokens = $root->getChildren();

トークンは yii\db\SqlToken のインスタンスです。

公開プロパティ

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

プロパティ 説明 定義元
$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\SqlTokenizer
isIdentifier() 現在のオフセットに識別子があるかどうかを返します。 yii\db\SqlTokenizer
isKeyword() 指定された文字列がキーワードであるかどうかを返します。 yii\db\SqlTokenizer
isOperator() 現在のオフセットに演算子があるかどうかを返します。 yii\db\SqlTokenizer
isStringLiteral() 現在のオフセットに文字列リテラルがあるかどうかを返します。 yii\db\SqlTokenizer
isWhitespace() 現在のオフセットに空白があるかどうかを返します。 yii\db\SqlTokenizer
startsWithAnyLongest() 最長の共通プレフィックスが現在のオフセットでの同じ長さの SQL コードと等しいかどうかを返します。 yii\db\SqlTokenizer
substring() 指定されたオフセットから始まる指定された長さの文字列を返します。 yii\db\SqlTokenizer

プロパティの詳細

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

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

SQL コード文字列の長さ。

protected integer $length null
$offset 保護されたプロパティ

SQL コード文字列の現在のオフセット。

protected integer $offset null
$sql public プロパティ

SQL コード。

public string $sql null

メソッド詳細

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

__call() public メソッド

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

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

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

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

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

メソッド名

$params 配列

メソッドのパラメータ

戻り値 mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

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

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

            
__clone() public メソッド

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

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

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

public void __clone ( )

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

            
__construct() public メソッド

コンストラクタ。

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

トークン化される SQL コード。

$config 配列

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

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

            
__get() public メソッド

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

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

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

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

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

参照: __set()

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

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

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

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

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

            
__isset() public メソッド

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

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

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

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

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

参照: https://www.php.net/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

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

戻り値 boolean

名前付きプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

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

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

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

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

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

参照: __get()

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

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

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

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

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

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

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

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

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

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

参照: https://www.php.net/manual/en/function.unset.php

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

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

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

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

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

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

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

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

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

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

  • クラスに、指定された名前に関連付けられた getter メソッドがある場合 (この場合、プロパティ名は大小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合 ($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合 ($checkBehaviors が true の場合)。

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

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

            
canSetProperty() public メソッド

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

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

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

  • クラスに、指定された名前に関連付けられた setter メソッドがある場合 (この場合、プロパティ名は大小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合 ($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合 ($checkBehaviors が true の場合)。

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

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

プロパティを書き込むことができるかどうか

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

            
className() public static メソッド
2.0.14以降は非推奨です。PHP >=5.5では、代わりに ::class を使用してください。

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

このクラスの完全修飾名を返します。

public static string className ( )
戻り値 string

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

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

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

指定されたオフセットから始まる 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 abstract メソッド

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

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

protected abstract boolean isComment ( &$length )
$length integer

マッチした文字列の長さ。

戻り値 boolean

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

                abstract protected function isComment(&$length);

            
isIdentifier() protected abstract メソッド

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

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

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

マッチした文字列の長さ。

$content string

マッチした文字列の代わりに使われるオプションのコンテンツ。

戻り値 boolean

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

                abstract protected function isIdentifier(&$length, &$content);

            
isKeyword() protected abstract メソッド

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

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

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

マッチさせる文字列。

$content string

マッチした文字列の代わりに使われるオプションのコンテンツ。

戻り値 boolean

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

                abstract protected function isKeyword($string, &$content);

            
isOperator() protected abstract メソッド

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

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

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

マッチした文字列の長さ。

$content string

マッチした文字列の代わりに使われるオプションのコンテンツ。

戻り値 boolean

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

                abstract protected function isOperator(&$length, &$content);

            
isStringLiteral() protected abstract メソッド

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

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

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

マッチした文字列の長さ。

$content string

マッチした文字列の代わりに使われるオプションのコンテンツ。

戻り値 boolean

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

                abstract protected function isStringLiteral(&$length, &$content);

            
isWhitespace() protected abstract メソッド

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

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

protected abstract boolean isWhitespace ( &$length )
$length integer

マッチした文字列の長さ。

戻り値 boolean

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

                abstract protected function isWhitespace(&$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 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]);
    }
}

            
startsWithAnyLongest() protected メソッド

最長の共通プレフィックスが現在のオフセットでの同じ長さの 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() protected メソッド

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

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

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

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