Abstract Class 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 令牌(token).

它可用于从 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
$sql string SQL 代码. yii\db\SqlTokenizer

受保护的属性

隐藏继承的属性

属性类型描述定义在
$length integer SQL 代码字符串长度. yii\db\SqlTokenizer
$offset integer 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 protected 属性

SQL 代码字符串长度.

protected integer $length null
$offset protected 属性

SQL 代码字符串的当前偏移量.

protected integer $offset null
$sql public 属性

SQL 代码.

public string $sql null

方法详情

__construct() public 方法

构造函数.

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

要标记的 SQL 代码.

$config array

将用于初始化对象属性的 name-value 对.

indexAfter() protected 方法

在 SQL 代码中从给定偏移量开始的给定字符串之后返回索引.

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

要找到的字符串.

$offset integer|null

SQL 代码偏移量, 如果传递了null, 则默认为当前值.

return integer

给定字符串之后的索引或字符串索引的结尾.

isComment() protected abstract 方法

返回当前偏移量是否有注释.

如果此方法返回true, 则必须将$length参数设置为匹配字符串的长度.

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

匹配字符串的长度.

return boolean

当前偏移量是否有注释.

isIdentifier() protected abstract 方法

返回当前偏移量处是否有标识符.

如果此方法返回true, 则必须将$length参数设置为匹配字符串的长度. 它还可以将$content设置为将用作令牌内容的字符串.

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

匹配字符串的长度.

$content string

可选内容, 而不是匹配的字符串.

return boolean

当前偏移量处是否有标识符.

isKeyword() protected abstract 方法

返回给定的字符串是否是关键字.

该方法可以将$content设置为将用作令牌内容的字符串.

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

要匹配的字符串.

$content string

可选内容, 而不是匹配的字符串.

return boolean

给定的字符串是否是关键字.

isOperator() protected abstract 方法

返回当前偏移量是否有运算符.

如果此方法返回true, 则必须将$length参数设置为匹配字符串的长度. 它还可以将$content设置为将用作令牌内容的字符串.

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

匹配字符串的长度.

$content string

可选内容, 而不是匹配的字符串.

return boolean

当前偏移量是否有运算符.

isStringLiteral() protected abstract 方法

返回当前偏移量是否有字符串文字.

如果此方法返回true, 则必须将$length参数设置为匹配字符串的长度. 它还可以将$content设置为将用作令牌内容的字符串.

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

匹配字符串的长度.

$content string

可选内容, 而不是匹配的字符串.

return boolean

当前偏移量是否有字符串文字.

isWhitespace() protected abstract 方法

返回当前偏移量是否存在空格.

如果此方法返回true, 则必须将$length参数设置为匹配字符串的长度.

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

匹配字符串的长度.

return boolean

当前偏移量是否存在空格.

startsWithAnyLongest() protected 方法

返回最长公共前缀是否等于当前偏移量处相同长度的 SQL 代码.

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

要测试的字符串. 方法修改此参数以加快查找速度.

$caseSensitive boolean

是否执行区分大小写的比较.

$length integer|null

匹配字符串的长度.

$content string|null

匹配的字符串.

return boolean

是否找到匹配项.

substring() protected 方法

返回以指定的偏移量开头的给定长度的字符串.

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

要返回的字符串长度.

$caseSensitive boolean

如果为false, 则字符串将大写.

$offset integer|null

SQL 代码偏移量, 如果传递了null, 则默认为当前值.

return string

结果字符串, 如果没有返回值, 则可能为空.

tokenize() public 方法

标记化并返回代码类型标记.

public yii\db\SqlToken tokenize ( )
return yii\db\SqlToken

代码类型令牌(token).