0 follower

Class yii\db\SqlToken

Inheritanceyii\db\SqlToken » yii\base\BaseObject
ImplementsArrayAccess, yii\base\Configurable
Available since version2.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

Hide inherited 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

Hide inherited 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

Hide inherited 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

Hide inherited properties

$children public property

Child tokens.

public yii\db\SqlToken[] $children = null
$content public property

Token content.

public string|null $content = null
$endOffset public property

Original SQL token end position.

public integer $endOffset = null
$hasChildren public property

Whether the token has children.

public boolean $hasChildren = null
$isCollection public property

Whether the token represents a collection of tokens.

public boolean $isCollection = null
$parent public property

Parent token.

public yii\db\SqlToken $parent = null
$sql public property

SQL code.

public string $sql = null
$startOffset public property

Original SQL token start position.

public integer $startOffset = null
$type public property
public integer $type = self::TYPE_TOKEN

Method Details

Hide inherited methods

__call() public method

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 ( $name, $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()");
}

 
__construct() public method

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 $config here.
  • call the parent implementation at the end of the constructor.
public void __construct ( $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();
}

 
__get() public method

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

 
__isset() public method

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.

See also https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $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;
}

 
__set() public method

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 void __set ( $name, $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);
 }
}

 
__toString() public method

Returns the SQL code representing the token.

public string __toString ( )
return string

SQL code.

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

 
__unset() public method

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.

See also https://www.php.net/manual/en/function.unset.php.

public void __unset ( $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);
 }
}

 
canGetProperty() public method

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 $checkVars is true);

See also canSetProperty().

public boolean canGetProperty ( $name, $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);
}

 
canSetProperty() public method

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 $checkVars is true);

See also canGetProperty().

public boolean canSetProperty ( $name, $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);
}

 
className() public static method
Deprecated since 2.0.14. On PHP >=5.5, use ::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();
}

 
getChildren() public method

Returns child tokens.

public yii\db\SqlToken[] getChildren ( )
return yii\db\SqlToken[]

Child tokens.

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

 
getHasChildren() public method

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

 
getIsCollection() public method

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

 
getSql() public method

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

 
hasMethod() public method

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 ( $name )
$name string

The method name

return boolean

Whether the method is defined

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

 
hasProperty() public method

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 $checkVars is true);

See also:

public boolean hasProperty ( $name, $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);
}

 
init() public method

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 void init ( )

 public function init()
{
}

 
matches() public method

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, $offset = 0, &$firstMatchIndex = null, &$lastMatchIndex = null )
$patternToken yii\db\SqlToken

Tokenized SQL code to match against. In addition to normal SQL, the any keyword is supported which will match any number of keywords, identifiers, whitespaces.

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

 
offsetExists() public method

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 ( $offset )
$offset integer

Child token offset.

return boolean

Whether the token exists.

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

 
offsetGet() public method

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 ( $offset )
$offset integer

Child token offset.

return yii\db\SqlToken|null

The child token at the specified offset, null if there's no token.

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

 
offsetSet() public method

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 void offsetSet ( $offset, $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();
}

 
offsetUnset() public method

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

 
setChildren() public method

Sets a list of child tokens.

public void setChildren ( $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();
}