0 フォロワー

クラス yii\db\SqlToken

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

SqlToken は、yii\db\SqlTokenizer またはその子クラスによって生成される SQL トークンを表します。

公開プロパティ

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

プロパティ 説明 定義元
$children yii\db\SqlToken[] 子トークン。 yii\db\SqlToken
$content string|null トークンの内容。 yii\db\SqlToken
$endOffset integer 元の SQL トークンの終了位置。 yii\db\SqlToken
$hasChildren boolean トークンが子を持つかどうか。 yii\db\SqlToken
$isCollection boolean トークンがトークンのコレクションを表すかどうか。 yii\db\SqlToken
$parent yii\db\SqlToken 親トークン。 yii\db\SqlToken
$sql string SQL コード。 yii\db\SqlToken
$startOffset integer 元の SQL トークンの開始位置。 yii\db\SqlToken
$type integer トークンの種類。 yii\db\SqlToken

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクタ。 yii\base\BaseObject
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されているかどうか(つまり、定義されていてnullではない)を確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__toString() トークンを表すSQLコードを返します。 yii\db\SqlToken
__unset() オブジェクトプロパティをnullに設定します。 yii\base\BaseObject
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
getChildren() 子トークンを返します。 yii\db\SqlToken
getHasChildren() トークンがトークンのコレクションを表し、子トークンの数がゼロより大きいかどうかを返します。 yii\db\SqlToken
getIsCollection() トークンがトークンのコレクションを表すかどうかを返します。 yii\db\SqlToken
getSql() トークンを表すSQLコードを返します。 yii\db\SqlToken
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject
matches() このトークン(とその子)が指定された「パターン」SQLコードと一致するかどうかを返します。 yii\db\SqlToken
offsetExists() 指定されたオフセットに子トークンがあるかどうかを返します。 yii\db\SqlToken
offsetGet() 指定されたオフセットの子トークンを返します。 yii\db\SqlToken
offsetSet() トークンに子トークンを追加します。 yii\db\SqlToken
offsetUnset() 指定されたオフセットの子トークンを削除します。 yii\db\SqlToken
setChildren() 子トークンのリストを設定します。 yii\db\SqlToken

定数

継承された定数を非表示

定数 説明 定義元
TYPE_CODE 0 yii\db\SqlToken
TYPE_IDENTIFIER 6 yii\db\SqlToken
TYPE_KEYWORD 4 yii\db\SqlToken
TYPE_OPERATOR 5 yii\db\SqlToken
TYPE_PARENTHESIS 3 yii\db\SqlToken
TYPE_STATEMENT 1 yii\db\SqlToken
TYPE_STRING_LITERAL 7 yii\db\SqlToken
TYPE_TOKEN 2 yii\db\SqlToken

プロパティの詳細

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

$children public property

子トークン。

public yii\db\SqlToken[] $children null
$content public プロパティ

トークンの内容。

public string|null $content null
$endOffset public プロパティ

元の SQL トークンの終了位置。

public integer $endOffset null
$hasChildren public プロパティ

トークンが子を持つかどうか。

public boolean $hasChildren null
$isCollection public プロパティ

トークンがトークンのコレクションを表すかどうか。

public boolean $isCollection null
$parent public プロパティ

親トークン。

public yii\db\SqlToken $parent null
$sql public プロパティ

SQL コード。

public string $sql null
$startOffset public プロパティ

元の SQL トークンの開始位置。

public integer $startOffset null
$type public プロパティ

トークンの種類。以下の定数のいずれかである必要があります。

public integer $type self::TYPE_TOKEN

メソッドの詳細

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

__call() public メソッド

定義されている場所: yii\base\BaseObject::__call()

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

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

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

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

不明なメソッド呼び出し時

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() public メソッド

定義されている場所: 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 メソッド

定義されている場所: yii\base\BaseObject::__get()

オブジェクトプロパティの値を返します。

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

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

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

プロパティ値

例外 yii\base\UnknownPropertyException

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

例外 yii\base\InvalidCallException

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

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (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\BaseObject::__isset()

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

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

プロパティが定義されていない場合、falseが返されることに注意してください。

https://www.php.net/manual/en/function.isset.phpも参照してください。

public boolean __isset ( $name )
$name string

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

戻り値 boolean

指定されたプロパティが設定されているかどうか(nullでないか)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public メソッド

定義されている場所: yii\base\BaseObject::__set()

オブジェクトプロパティの値を設定します。

これはPHPのマジックメソッドであり、`$object->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)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__toString() public メソッド

トークンを表すSQLコードを返します。

public string __toString ( )
戻り値 string

SQL コード。

                public function __toString()
{
    return $this->getSql();
}

            
__unset() public メソッド

定義されている場所: yii\base\BaseObject::__unset()

オブジェクトプロパティをnullに設定します。

これはPHPのマジックメソッドであり、`unset($object->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);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() public メソッド

定義されている場所: yii\base\BaseObject::canGetProperty()

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

プロパティは、以下の場合に読み取り可能です。

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

参照: canSetProperty().

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

プロパティ名

$checkVars boolean

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

戻り値 boolean

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

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public メソッド

定義されている場所: yii\base\BaseObject::canSetProperty()

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

プロパティは、以下の場合に書き込み可能です。

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

参照: canGetProperty().

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

プロパティ名

$checkVars boolean

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

戻り値 boolean

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

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

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

            
getChildren() public メソッド

子トークンを返します。

public yii\db\SqlToken[] getChildren ( )
戻り値 yii\db\SqlToken[]

子トークン。

                public function getChildren()
{
    return $this->_children;
}

            
getHasChildren() public メソッド

トークンがトークンのコレクションを表し、子トークンの数がゼロより大きいかどうかを返します。

public boolean getHasChildren ( )
戻り値 boolean

トークンが子を持つかどうか。

                public function getHasChildren()
{
    return $this->getIsCollection() && !empty($this->_children);
}

            
getIsCollection() public メソッド

トークンがトークンのコレクションを表すかどうかを返します。

public boolean getIsCollection ( )
戻り値 boolean

トークンがトークンのコレクションを表すかどうか。

                public function getIsCollection()
{
    return in_array($this->type, [
        self::TYPE_CODE,
        self::TYPE_STATEMENT,
        self::TYPE_PARENTHESIS,
    ], true);
}

            
getSql() public メソッド

トークンを表すSQLコードを返します。

public string getSql ( )
戻り値 string

SQL コード。

                public function getSql()
{
    $code = $this;
    while ($code->parent !== null) {
        $code = $code->parent;
    }
    return mb_substr($code->content, $this->startOffset, $this->endOffset - $this->startOffset, 'UTF-8');
}

            
hasMethod() public メソッド

定義されている場所: yii\base\BaseObject::hasMethod()

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

デフォルトの実装は、PHP関数`method_exists()`の呼び出しです。PHPのマジックメソッド`__call()`を実装した場合は、このメソッドをオーバーライドできます。

public boolean hasMethod ( $name )
$name string

メソッド名

戻り値 boolean

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

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public メソッド

定義されている場所: yii\base\BaseObject::hasProperty()

プロパティが定義されているかどうかを示す値を返します。

プロパティは、以下の場合に定義されています。

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

参照

public boolean hasProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

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

戻り値 boolean

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

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

            
init() publicメソッド

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

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

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

public void init ( )

                public function init()
{
}

            
matches() publicメソッド

このトークン(とその子)が指定された「パターン」SQLコードと一致するかどうかを返します。

使用例

$patternToken = (new \yii\db\sqlite\SqlTokenizer('SELECT any FROM any'))->tokenize();
if ($sqlToken->matches($patternToken, 0, $firstMatchIndex, $lastMatchIndex)) {
    // ...
}
public boolean matches ( yii\db\SqlToken $patternToken, $offset 0, &$firstMatchIndex null, &$lastMatchIndex null )
$patternToken yii\db\SqlToken

照合するトークン化されたSQLコード。通常のSQLに加えて、任意の数のキーワード、識別子、空白に一致するanyキーワードがサポートされています。

$offset integer

ルックアップを開始するトークンの子要素のオフセット。

$firstMatchIndex integer|null

成功した一致が始まるトークンの子要素のオフセット。

$lastMatchIndex integer|null

成功した一致が終了するトークンの子要素のオフセット。

戻り値 boolean

このトークンがパターンSQLコードと一致するかどうか。

                public function matches(SqlToken $patternToken, $offset = 0, &$firstMatchIndex = null, &$lastMatchIndex = null)
{
    if (!$patternToken->getHasChildren()) {
        return false;
    }
    $patternToken = $patternToken[0];
    return $this->tokensMatch($patternToken, $this, $offset, $firstMatchIndex, $lastMatchIndex);
}

            
offsetExists() publicメソッド

指定されたオフセットに子トークンがあるかどうかを返します。

このメソッドは、SPL ArrayAccess インターフェースで必要です。isset($token[$offset])のようなものを使用すると暗黙的に呼び出されます。

public boolean offsetExists ( $offset )
$offset integer

子トークンのオフセット。

戻り値 boolean

トークンが存在するかどうか。

                #[\ReturnTypeWillChange]
public function offsetExists($offset)
{
    return isset($this->_children[$this->calculateOffset($offset)]);
}

            
offsetGet() publicメソッド

指定されたオフセットの子トークンを返します。

このメソッドは、SPL ArrayAccess インターフェースで必要です。$child = $token[$offset];のようなものを使用すると暗黙的に呼び出されます。

public yii\db\SqlToken|null offsetGet ( $offset )
$offset integer

子トークンのオフセット。

戻り値 yii\db\SqlToken|null

指定されたオフセットの子トークン。トークンがない場合はnull

                #[\ReturnTypeWillChange]
public function offsetGet($offset)
{
    $offset = $this->calculateOffset($offset);
    return isset($this->_children[$offset]) ? $this->_children[$offset] : null;
}

            
offsetSet() publicメソッド

トークンに子トークンを追加します。

このメソッドは、SPL ArrayAccess インターフェースで必要です。$token[$offset] = $child;のようなものを使用すると暗黙的に呼び出されます。

public void offsetSet ( $offset, $token )
$offset integer|null

子トークンのオフセット。

$token yii\db\SqlToken

追加するトークン。

                #[\ReturnTypeWillChange]
public function offsetSet($offset, $token)
{
    $token->parent = $this;
    if ($offset === null) {
        $this->_children[] = $token;
    } else {
        $this->_children[$this->calculateOffset($offset)] = $token;
    }
    $this->updateCollectionOffsets();
}

            
offsetUnset() publicメソッド

指定されたオフセットの子トークンを削除します。

このメソッドは、SPL ArrayAccess インターフェースで必要です。unset($token[$offset])のようなものを使用すると暗黙的に呼び出されます。

public void offsetUnset ( $offset )
$offset integer

子トークンのオフセット。

                #[\ReturnTypeWillChange]
public function offsetUnset($offset)
{
    $offset = $this->calculateOffset($offset);
    if (isset($this->_children[$offset])) {
        array_splice($this->_children, $offset, 1);
    }
    $this->updateCollectionOffsets();
}

            
setChildren() publicメソッド

子トークンのリストを設定します。

public void setChildren ( $children )
$children yii\db\SqlToken[]

子トークン。

                public function setChildren($children)
{
    $this->_children = [];
    foreach ($children as $child) {
        $child->parent = $this;
        $this->_children[] = $child;
    }
    $this->updateCollectionOffsets();
}