Class yii\db\SqlToken
| Inheritance | yii\db\SqlToken » yii\base\BaseObject |
|---|---|
| Implements | ArrayAccess, yii\base\Configurable |
| Available since version | 2.0.13 |
| Source Code | https://github.com/yiisoft/yii2/blob/master/framework/db/SqlToken.php |
SqlToken represents SQL tokens produced by yii\db\SqlTokenizer or its child classes.
Public Properties
| Property | Type | Description | Defined By |
|---|---|---|---|
| $children | yii\db\SqlToken[] | Child tokens. | yii\db\SqlToken |
| $content | string|null | Token content. | yii\db\SqlToken |
| $endOffset | integer | Original SQL token end position. | yii\db\SqlToken |
| $hasChildren | boolean | Whether the token has children. | yii\db\SqlToken |
| $isCollection | boolean | Whether the token represents a collection of tokens. | yii\db\SqlToken |
| $parent | yii\db\SqlToken | Parent token. | yii\db\SqlToken |
| $sql | string | SQL code. | yii\db\SqlToken |
| $startOffset | integer | Original SQL token start position. | yii\db\SqlToken |
| $type | integer | Token type. | yii\db\SqlToken |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __call() | Calls the named method which is not a class method. | yii\base\BaseObject |
| __construct() | Constructor. | yii\base\BaseObject |
| __get() | Returns the value of an object property. | yii\base\BaseObject |
| __isset() | Checks if a property is set, i.e. defined and not null. | yii\base\BaseObject |
| __set() | Sets value of an object property. | yii\base\BaseObject |
| __toString() | Returns the SQL code representing the token. | yii\db\SqlToken |
| __unset() | Sets an object property to null. | yii\base\BaseObject |
| canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\BaseObject |
| canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\BaseObject |
| className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
| getChildren() | Returns child tokens. | yii\db\SqlToken |
| getHasChildren() | Returns whether the token represents a collection of tokens and has non-zero number of children. | yii\db\SqlToken |
| getIsCollection() | Returns whether the token represents a collection of tokens. | yii\db\SqlToken |
| getSql() | Returns the SQL code representing the token. | yii\db\SqlToken |
| hasMethod() | Returns a value indicating whether a method is defined. | yii\base\BaseObject |
| hasProperty() | Returns a value indicating whether a property is defined. | yii\base\BaseObject |
| init() | Initializes the object. | yii\base\BaseObject |
| matches() | Returns whether this token (including its children) matches the specified "pattern" SQL code. | yii\db\SqlToken |
| offsetExists() | Returns whether there is a child token at the specified offset. | yii\db\SqlToken |
| offsetGet() | Returns a child token at the specified offset. | yii\db\SqlToken |
| offsetSet() | Adds a child token to the token. | yii\db\SqlToken |
| offsetUnset() | Removes a child token at the specified offset. | yii\db\SqlToken |
| setChildren() | Sets a list of child tokens. | yii\db\SqlToken |
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| 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 |
Property Details
Whether the token represents a collection of tokens.
Token type. It has to be one of the following constants:
Method Details
Defined in: yii\base\BaseObject::__call()
Calls the named method which is not a class method.
Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.
| public mixed __call ( string $name, array $params ) | ||
| $name | string | The method name |
| $params | array | Method parameters |
| return | mixed | The method return value |
|---|---|---|
| throws | yii\base\UnknownMethodException | when calling unknown method |
public function __call($name, $params) { throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()"); } Defined in: yii\base\BaseObject::__construct()
Constructor.
The default implementation does two things:
- Initializes the object with the given configuration
$config. - Call init().
If this method is overridden in a child class, it is recommended that
- the last parameter of the constructor is a configuration array, like
$confighere. - call the parent implementation at the end of the constructor.
| public mixed __construct ( array $config = [] ) | ||
| $config | array | Name-value pairs that will be used to initialize the object properties |
public function __construct($config = []) { if (!empty($config)) { Yii::configure($this, $config); } $this->init(); } Defined in: yii\base\BaseObject::__get()
Returns the value of an object property.
Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $value = $object->property;.
See also __set().
| public mixed __get ( string $name ) | ||
| $name | string | The property name |
| return | mixed | The property value |
|---|---|---|
| throws | yii\base\UnknownPropertyException | if the property is not defined |
| throws | yii\base\InvalidCallException | if the property is write-only |
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); } Defined in: yii\base\BaseObject::__isset()
Checks if a property is set, i.e. defined and not null.
Do not call this method directly as it is a PHP magic method that will be implicitly called when executing isset($object->property).
Note that if the property is not defined, false will be returned.
| public boolean __isset ( string $name ) | ||
| $name | string | The property name or the event name |
| return | boolean | Whether the named property is set (not null). |
|---|---|---|
public function __isset($name) { $getter = 'get' . $name; if (method_exists($this, $getter)) { return $this->$getter() !== null; } return false; } Defined in: yii\base\BaseObject::__set()
Sets value of an object property.
Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $object->property = $value;.
See also __get().
| public mixed __set ( string $name, mixed $value ) | ||
| $name | string | The property name or the event name |
| $value | mixed | The property value |
| throws | yii\base\UnknownPropertyException | if the property is not defined |
|---|---|---|
| throws | yii\base\InvalidCallException | if the property is read-only |
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); } } Returns the SQL code representing the token.
| public string __toString ( ) | ||
| return | string | SQL code. |
|---|---|---|
public function __toString() { return $this->getSql(); } Defined in: yii\base\BaseObject::__unset()
Sets an object property to null.
Do not call this method directly as it is a PHP magic method that will be implicitly called when executing unset($object->property).
Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.
| public mixed __unset ( string $name ) | ||
| $name | string | The property name |
| throws | yii\base\InvalidCallException | if the property is read only. |
|---|---|---|
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); } } Defined in: yii\base\BaseObject::canGetProperty()
Returns a value indicating whether a property can be read.
A property is readable if:
- the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVarsis true);
See also canSetProperty().
| public boolean canGetProperty ( string $name, boolean $checkVars = true ) | ||
| $name | string | The property name |
| $checkVars | boolean | Whether to treat member variables as properties |
| return | boolean | Whether the property can be read |
|---|---|---|
public function canGetProperty($name, $checkVars = true) { return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name); } Defined in: yii\base\BaseObject::canSetProperty()
Returns a value indicating whether a property can be set.
A property is writable if:
- the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVarsis true);
See also canGetProperty().
| public boolean canSetProperty ( string $name, boolean $checkVars = true ) | ||
| $name | string | The property name |
| $checkVars | boolean | Whether to treat member variables as properties |
| return | boolean | Whether the property can be written |
|---|---|---|
public function canSetProperty($name, $checkVars = true) { return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name); } ::class instead. Defined in: yii\base\BaseObject::className()
Returns the fully qualified name of this class.
| public static string className ( ) | ||
| return | string | The fully qualified name of this class. |
|---|---|---|
public static function className() { return get_called_class(); } Returns child tokens.
| public yii\db\SqlToken[] getChildren ( ) | ||
| return | yii\db\SqlToken[] | Child tokens. |
|---|---|---|
public function getChildren() { return $this->_children; } Returns whether the token represents a collection of tokens and has non-zero number of children.
| public boolean getHasChildren ( ) | ||
| return | boolean | Whether the token has children. |
|---|---|---|
public function getHasChildren() { return $this->getIsCollection() && !empty($this->_children); } Returns whether the token represents a collection of tokens.
| public boolean getIsCollection ( ) | ||
| return | boolean | Whether the token represents a collection of tokens. |
|---|---|---|
public function getIsCollection() { return in_array($this->type, [ self::TYPE_CODE, self::TYPE_STATEMENT, self::TYPE_PARENTHESIS, ], true); } Returns the SQL code representing the token.
| public string getSql ( ) | ||
| return | string | SQL code. |
|---|---|---|
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'); } Defined in: yii\base\BaseObject::hasMethod()
Returns a value indicating whether a method is defined.
The default implementation is a call to php function method_exists(). You may override this method when you implemented the php magic method __call().
| public boolean hasMethod ( string $name ) | ||
| $name | string | The method name |
| return | boolean | Whether the method is defined |
|---|---|---|
public function hasMethod($name) { return method_exists($this, $name); } Defined in: yii\base\BaseObject::hasProperty()
Returns a value indicating whether a property is defined.
A property is defined if:
- the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVarsis true);
See also:
| public boolean hasProperty ( string $name, boolean $checkVars = true ) | ||
| $name | string | The property name |
| $checkVars | boolean | Whether to treat member variables as properties |
| return | boolean | Whether the property is defined |
|---|---|---|
public function hasProperty($name, $checkVars = true) { return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false); } Defined in: yii\base\BaseObject::init()
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
| public mixed init ( ) |
public function init() { } Returns whether this token (including its children) matches the specified "pattern" SQL code.
Usage Example:
$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, integer $offset = 0, integer|null &$firstMatchIndex = null, integer|null &$lastMatchIndex = null ) | ||
| $patternToken | yii\db\SqlToken | Tokenized SQL code to match against. In addition to normal SQL, the |
| $offset | integer | Token children offset to start lookup with. |
| $firstMatchIndex | integer|null | Token children offset where a successful match begins. |
| $lastMatchIndex | integer|null | Token children offset where a successful match ends. |
| return | boolean | Whether this token matches the pattern SQL code. |
|---|---|---|
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); } Returns whether there is a child token at the specified offset.
This method is required by the SPL ArrayAccess interface. It is implicitly called when you use something like isset($token[$offset]).
| public boolean offsetExists ( integer $offset ) | ||
| $offset | integer | Child token offset. |
| return | boolean | Whether the token exists. |
|---|---|---|
#[\ReturnTypeWillChange] public function offsetExists($offset) { return isset($this->_children[$this->calculateOffset($offset)]); } Returns a child token at the specified offset.
This method is required by the SPL ArrayAccess interface. It is implicitly called when you use something like $child = $token[$offset];.
| public yii\db\SqlToken|null offsetGet ( integer $offset ) | ||
| $offset | integer | Child token offset. |
| return | yii\db\SqlToken|null | The child token at the specified offset, |
|---|---|---|
#[\ReturnTypeWillChange] public function offsetGet($offset) { $offset = $this->calculateOffset($offset); return isset($this->_children[$offset]) ? $this->_children[$offset] : null; } Adds a child token to the token.
This method is required by the SPL ArrayAccess interface. It is implicitly called when you use something like $token[$offset] = $child;.
| public mixed offsetSet ( integer|null $offset, yii\db\SqlToken $token ) | ||
| $offset | integer|null | Child token offset. |
| $token | yii\db\SqlToken | Token to be added. |
#[\ReturnTypeWillChange] public function offsetSet($offset, $token) { $token->parent = $this; if ($offset === null) { $this->_children[] = $token; } else { $this->_children[$this->calculateOffset($offset)] = $token; } $this->updateCollectionOffsets(); } Removes a child token at the specified offset.
This method is required by the SPL ArrayAccess interface. It is implicitly called when you use something like unset($token[$offset]).
| public mixed offsetUnset ( integer $offset ) | ||
| $offset | integer | Child token offset. |
#[\ReturnTypeWillChange] public function offsetUnset($offset) { $offset = $this->calculateOffset($offset); if (isset($this->_children[$offset])) { array_splice($this->_children, $offset, 1); } $this->updateCollectionOffsets(); } Sets a list of child tokens.
| public mixed setChildren ( yii\db\SqlToken[] $children ) | ||
| $children | yii\db\SqlToken[] | Child tokens. |
public function setChildren($children) { $this->_children = []; foreach ($children as $child) { $child->parent = $this; $this->_children[] = $child; } $this->updateCollectionOffsets(); }
Signup or Login in order to comment.