diff options
Diffstat (limited to 'src/Components')
-rw-r--r-- | src/Components/AlterOperation.php | 135 | ||||
-rw-r--r-- | src/Components/Array2d.php | 25 | ||||
-rw-r--r-- | src/Components/ArrayObj.php | 34 | ||||
-rw-r--r-- | src/Components/CaseExpression.php | 47 | ||||
-rw-r--r-- | src/Components/Condition.php | 70 | ||||
-rw-r--r-- | src/Components/CreateDefinition.php | 78 | ||||
-rw-r--r-- | src/Components/DataType.php | 44 | ||||
-rw-r--r-- | src/Components/Expression.php | 50 | ||||
-rw-r--r-- | src/Components/ExpressionArray.php | 24 | ||||
-rw-r--r-- | src/Components/FunctionCall.php | 31 | ||||
-rw-r--r-- | src/Components/IntoKeyword.php | 57 | ||||
-rw-r--r-- | src/Components/JoinKeyword.php | 66 | ||||
-rw-r--r-- | src/Components/Key.php | 42 | ||||
-rw-r--r-- | src/Components/Limit.php | 27 | ||||
-rw-r--r-- | src/Components/OptionsArray.php | 52 | ||||
-rw-r--r-- | src/Components/OrderKeyword.php | 32 | ||||
-rw-r--r-- | src/Components/ParameterDefinition.php | 27 | ||||
-rw-r--r-- | src/Components/PartitionDefinition.php | 48 | ||||
-rw-r--r-- | src/Components/Reference.php | 38 | ||||
-rw-r--r-- | src/Components/RenameOperation.php | 27 | ||||
-rw-r--r-- | src/Components/SetOperation.php | 27 | ||||
-rw-r--r-- | src/Components/UnionKeyword.php | 13 |
22 files changed, 463 insertions, 531 deletions
diff --git a/src/Components/AlterOperation.php b/src/Components/AlterOperation.php index c2344c6..43bd14a 100644 --- a/src/Components/AlterOperation.php +++ b/src/Components/AlterOperation.php @@ -2,10 +2,8 @@ /** * Parses an alter operation. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,86 +15,84 @@ use SqlParser\TokensList; * Parses an alter operation. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class AlterOperation extends Component { - /** - * All database options + * All database options. * * @var array */ public static $DB_OPTIONS = array( - 'CHARACTER SET' => array(1, 'var'), - 'CHARSET' => array(1, 'var'), - 'DEFAULT CHARACTER SET' => array(1, 'var'), - 'DEFAULT CHARSET' => array(1, 'var'), - 'UPGRADE' => array(1, 'var'), - 'COLLATE' => array(2, 'var'), - 'DEFAULT COLLATE' => array(2, 'var'), + 'CHARACTER SET' => array(1, 'var'), + 'CHARSET' => array(1, 'var'), + 'DEFAULT CHARACTER SET' => array(1, 'var'), + 'DEFAULT CHARSET' => array(1, 'var'), + 'UPGRADE' => array(1, 'var'), + 'COLLATE' => array(2, 'var'), + 'DEFAULT COLLATE' => array(2, 'var'), ); /** - * All table options + * All table options. * * @var array */ public static $TABLE_OPTIONS = array( - 'ENGINE' => array(1, 'var='), - 'AUTO_INCREMENT' => array(1, 'var='), - 'AVG_ROW_LENGTH' => array(1, 'var'), - 'MAX_ROWS' => array(1, 'var'), - 'ROW_FORMAT' => array(1, 'var'), - 'COMMENT' => array(1, 'var'), - 'ADD' => 1, - 'ALTER' => 1, - 'ANALYZE' => 1, - 'CHANGE' => 1, - 'CHECK' => 1, - 'COALESCE' => 1, - 'CONVERT' => 1, - 'DISABLE' => 1, - 'DISCARD' => 1, - 'DROP' => 1, - 'ENABLE' => 1, - 'IMPORT' => 1, - 'MODIFY' => 1, - 'OPTIMIZE' => 1, - 'ORDER' => 1, - 'PARTITION' => 1, - 'REBUILD' => 1, - 'REMOVE' => 1, - 'RENAME' => 1, - 'REORGANIZE' => 1, - 'REPAIR' => 1, - 'UPGRADE' => 1, + 'ENGINE' => array(1, 'var='), + 'AUTO_INCREMENT' => array(1, 'var='), + 'AVG_ROW_LENGTH' => array(1, 'var'), + 'MAX_ROWS' => array(1, 'var'), + 'ROW_FORMAT' => array(1, 'var'), + 'COMMENT' => array(1, 'var'), + 'ADD' => 1, + 'ALTER' => 1, + 'ANALYZE' => 1, + 'CHANGE' => 1, + 'CHECK' => 1, + 'COALESCE' => 1, + 'CONVERT' => 1, + 'DISABLE' => 1, + 'DISCARD' => 1, + 'DROP' => 1, + 'ENABLE' => 1, + 'IMPORT' => 1, + 'MODIFY' => 1, + 'OPTIMIZE' => 1, + 'ORDER' => 1, + 'PARTITION' => 1, + 'REBUILD' => 1, + 'REMOVE' => 1, + 'RENAME' => 1, + 'REORGANIZE' => 1, + 'REPAIR' => 1, + 'UPGRADE' => 1, - 'COLUMN' => 2, - 'CONSTRAINT' => 2, - 'DEFAULT' => 2, - 'TO' => 2, - 'BY' => 2, - 'FOREIGN' => 2, - 'FULLTEXT' => 2, - 'KEY' => 2, - 'KEYS' => 2, - 'PARTITIONING' => 2, - 'PRIMARY KEY' => 2, - 'SPATIAL' => 2, - 'TABLESPACE' => 2, - 'INDEX' => 2, + 'COLUMN' => 2, + 'CONSTRAINT' => 2, + 'DEFAULT' => 2, + 'TO' => 2, + 'BY' => 2, + 'FOREIGN' => 2, + 'FULLTEXT' => 2, + 'KEY' => 2, + 'KEYS' => 2, + 'PARTITIONING' => 2, + 'PRIMARY KEY' => 2, + 'SPATIAL' => 2, + 'TABLESPACE' => 2, + 'INDEX' => 2, ); /** - * All view options + * All view options. * * @var array */ public static $VIEW_OPTIONS = array( - 'AS' => 1, + 'AS' => 1, ); /** @@ -121,20 +117,20 @@ class AlterOperation extends Component public $unknown = array(); /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return AlterOperation */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new AlterOperation(); + $ret = new self(); /** * Counts brackets. * - * @var int $brackets + * @var int */ $brackets = 0; @@ -149,7 +145,7 @@ class AlterOperation extends Component * * 2 -------------------------[ , ]-----------------------> 0 * - * @var int $state + * @var int */ $state = 0; @@ -157,7 +153,7 @@ class AlterOperation extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -223,7 +219,7 @@ class AlterOperation extends Component // We have reached the end of ALTER operation and suddenly found // a start to new statement, but have not find a delimiter between them - if (! ($token->value == 'SET' && $list->tokens[$list->idx - 1]->value == 'CHARACTER')) { + if (!($token->value == 'SET' && $list->tokens[$list->idx - 1]->value == 'CHARACTER')) { $parser->error( __('A new statement was found, but no delimiter between it and the previous one.'), $token @@ -248,8 +244,8 @@ class AlterOperation extends Component } /** - * @param AlterOperation $component The component to be built. - * @param array $options Parameters for building. + * @param AlterOperation $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -260,6 +256,7 @@ class AlterOperation extends Component $ret .= $component->field . ' '; } $ret .= TokensList::build($component->unknown); + return $ret; } } diff --git a/src/Components/Array2d.php b/src/Components/Array2d.php index 2199efe..e8da84b 100644 --- a/src/Components/Array2d.php +++ b/src/Components/Array2d.php @@ -2,10 +2,8 @@ /** * `VALUES` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,17 +15,15 @@ use SqlParser\TokensList; * `VALUES` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class Array2d extends Component { - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return ArrayObj[] */ @@ -38,7 +34,7 @@ class Array2d extends Component /** * The number of values in each set. * - * @var int $count + * @var int */ $count = -1; @@ -52,7 +48,7 @@ class Array2d extends Component * 1 ------------------------[ , ]------------------------> 0 * 1 -----------------------[ else ]----------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -60,7 +56,7 @@ class Array2d extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -117,12 +113,13 @@ class Array2d extends Component } --$list->idx; + return $ret; } /** - * @param ArrayObj[] $component The component to be built. - * @param array $options Parameters for building. + * @param ArrayObj[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/ArrayObj.php b/src/Components/ArrayObj.php index bed7fc7..8a046a8 100644 --- a/src/Components/ArrayObj.php +++ b/src/Components/ArrayObj.php @@ -2,10 +2,8 @@ /** * Parses an array. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * Parses an array. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class ArrayObj extends Component { - /** * The array that contains the unprocessed value of each token. * @@ -41,8 +37,8 @@ class ArrayObj extends Component /** * Constructor. * - * @param array $raw The unprocessed values. - * @param array $values The processed values. + * @param array $raw the unprocessed values + * @param array $values the processed values */ public function __construct(array $raw = array(), array $values = array()) { @@ -51,41 +47,41 @@ class ArrayObj extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return ArrayObj|Component[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = empty($options['type']) ? new ArrayObj() : array(); + $ret = empty($options['type']) ? new self() : array(); /** * The last raw expression. * - * @var string $lastRaw + * @var string */ $lastRaw = ''; /** * The last value. * - * @var string $lastValue + * @var string */ $lastValue = ''; /** * Counts brackets. * - * @var int $brackets + * @var int */ $brackets = 0; /** * Last separator (bracket or comma). * - * @var boolean $isCommaLast + * @var bool */ $isCommaLast = false; @@ -93,7 +89,7 @@ class ArrayObj extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -175,8 +171,8 @@ class ArrayObj extends Component } /** - * @param ArrayObj|ArrayObj[] $component The component to be built. - * @param array $options Parameters for building. + * @param ArrayObj|ArrayObj[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/CaseExpression.php b/src/Components/CaseExpression.php index df5a1bd..0971ed8 100644 --- a/src/Components/CaseExpression.php +++ b/src/Components/CaseExpression.php @@ -1,11 +1,9 @@ <?php /** - * Parses a reference to a CASE expression - * - * @package SqlParser - * @subpackage Components + * Parses a reference to a CASE expression. */ + namespace SqlParser\Components; use SqlParser\Component; @@ -13,48 +11,45 @@ use SqlParser\Parser; use SqlParser\Token; use SqlParser\TokensList; - /** - * Parses a reference to a CASE expression + * Parses a reference to a CASE expression. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class CaseExpression extends Component { - /** - * The value to be compared + * The value to be compared. * * @var Expression */ public $value; /** - * The conditions in WHEN clauses + * The conditions in WHEN clauses. * * @var array */ public $conditions; /** - * The results matching with the WHEN clauses + * The results matching with the WHEN clauses. * * @var array */ public $results; /** - * The values to be compared against + * The values to be compared against. * * @var array */ public $compare_values; /** - * The result in ELSE section of expr + * The result in ELSE section of expr. * * @var array */ @@ -62,45 +57,42 @@ class CaseExpression extends Component /** * Constructor. - * */ public function __construct() { } /** - * - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed * * @return Expression */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new CaseExpression(); + $ret = new self(); /** - * State of parser + * State of parser. * - * @var int $parser + * @var int */ $state = 0; /** - * Syntax type (type 0 or type 1) + * Syntax type (type 0 or type 1). * - * @var int $type + * @var int */ $type = 0; ++$list->idx; // Skip 'CASE' for (; $list->idx < $list->count; ++$list->idx) { - /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -205,12 +197,13 @@ class CaseExpression extends Component } --$list->idx; + return $ret; } /** - * @param Expression $component The component to be built. - * @param array $options Parameters for building. + * @param Expression $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/Condition.php b/src/Components/Condition.php index c69441a..1971c09 100644 --- a/src/Components/Condition.php +++ b/src/Components/Condition.php @@ -2,10 +2,8 @@ /** * `WHERE` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * `WHERE` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class Condition extends Component { - /** * Logical operators that can be used to delimit expressions. * @@ -37,24 +33,24 @@ class Condition extends Component * @var array */ public static $ALLOWED_KEYWORDS = array( - 'ALL' => 1, - 'AND' => 1, - 'BETWEEN' => 1, - 'EXISTS' => 1, - 'IF' => 1, - 'IN' => 1, - 'INTERVAL' => 1, - 'IS' => 1, - 'LIKE' => 1, - 'MATCH' => 1, - 'NOT IN' => 1, - 'NOT NULL' => 1, - 'NOT' => 1, - 'NULL' => 1, - 'OR' => 1, - 'REGEXP' => 1, - 'RLIKE' => 1, - 'XOR' => 1, + 'ALL' => 1, + 'AND' => 1, + 'BETWEEN' => 1, + 'EXISTS' => 1, + 'IF' => 1, + 'IN' => 1, + 'INTERVAL' => 1, + 'IS' => 1, + 'LIKE' => 1, + 'MATCH' => 1, + 'NOT IN' => 1, + 'NOT NULL' => 1, + 'NOT' => 1, + 'NULL' => 1, + 'OR' => 1, + 'REGEXP' => 1, + 'RLIKE' => 1, + 'XOR' => 1, ); /** @@ -81,7 +77,7 @@ class Condition extends Component /** * Constructor. * - * @param string $expr The condition or the operator. + * @param string $expr the condition or the operator */ public function __construct($expr = null) { @@ -89,9 +85,9 @@ class Condition extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return Condition[] */ @@ -99,12 +95,12 @@ class Condition extends Component { $ret = array(); - $expr = new Condition(); + $expr = new self(); /** * Counts brackets. * - * @var int $brackets + * @var int */ $brackets = 0; @@ -115,16 +111,15 @@ class Condition extends Component * the keyword `AND`, which is also an operator that delimits * expressions. * - * @var bool $betweenBefore + * @var bool */ $betweenBefore = false; for (; $list->idx < $list->count; ++$list->idx) { - /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -158,12 +153,12 @@ class Condition extends Component } // Adding the operator. - $expr = new Condition($token->value); + $expr = new self($token->value); $expr->isOperator = true; $ret[] = $expr; // Preparing to parse another condition. - $expr = new Condition(); + $expr = new self(); continue; } } @@ -211,12 +206,13 @@ class Condition extends Component } --$list->idx; + return $ret; } /** - * @param Condition[] $component The component to be built. - * @param array $options Parameters for building. + * @param Condition[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/CreateDefinition.php b/src/Components/CreateDefinition.php index 86bb315..567602a 100644 --- a/src/Components/CreateDefinition.php +++ b/src/Components/CreateDefinition.php @@ -4,10 +4,8 @@ * Parses the create definition of a column or a key. * * Used for parsing `CREATE TABLE` statement. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Context; @@ -22,42 +20,39 @@ use SqlParser\TokensList; * Used for parsing `CREATE TABLE` statement. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class CreateDefinition extends Component { - /** * All field options. * * @var array */ public static $FIELD_OPTIONS = array( - // Tells the `OptionsArray` to not sort the options. // See the note below. - '_UNSORTED' => true, - - 'NOT NULL' => 1, - 'NULL' => 1, - 'DEFAULT' => array(2, 'expr', array('breakOnAlias' => true)), - 'AUTO_INCREMENT' => 3, - 'PRIMARY' => 4, - 'PRIMARY KEY' => 4, - 'UNIQUE' => 4, - 'UNIQUE KEY' => 4, - 'COMMENT' => array(5, 'var'), - 'COLUMN_FORMAT' => array(6, 'var'), - 'ON UPDATE' => array(7, 'expr'), + '_UNSORTED' => true, + + 'NOT NULL' => 1, + 'NULL' => 1, + 'DEFAULT' => array(2, 'expr', array('breakOnAlias' => true)), + 'AUTO_INCREMENT' => 3, + 'PRIMARY' => 4, + 'PRIMARY KEY' => 4, + 'UNIQUE' => 4, + 'UNIQUE KEY' => 4, + 'COMMENT' => array(5, 'var'), + 'COLUMN_FORMAT' => array(6, 'var'), + 'ON UPDATE' => array(7, 'expr'), // Generated columns options. - 'GENERATED ALWAYS' => 8, - 'AS' => array(9, 'expr', array('parenthesesDelimited' => true)), - 'VIRTUAL' => 10, - 'PERSISTENT' => 11, - 'STORED' => 11, + 'GENERATED ALWAYS' => 8, + 'AS' => array(9, 'expr', array('parenthesesDelimited' => true)), + 'VIRTUAL' => 10, + 'PERSISTENT' => 11, + 'STORED' => 11, // Common entries. // // NOTE: Some of the common options are not in the same order which @@ -119,11 +114,11 @@ class CreateDefinition extends Component /** * Constructor. * - * @param string $name The name of the field. - * @param OptionsArray $options The options of this field. - * @param DataType|Key $type The data type of this field or the key. - * @param bool $isConstraint Whether this field is a constraint or not. - * @param Reference $references References. + * @param string $name the name of the field + * @param OptionsArray $options the options of this field + * @param DataType|Key $type the data type of this field or the key + * @param bool $isConstraint whether this field is a constraint or not + * @param Reference $references references */ public function __construct( $name = null, @@ -144,9 +139,9 @@ class CreateDefinition extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return CreateDefinition[] */ @@ -154,7 +149,7 @@ class CreateDefinition extends Component { $ret = array(); - $expr = new CreateDefinition(); + $expr = new self(); /** * The state of the parser. @@ -176,7 +171,7 @@ class CreateDefinition extends Component * 5 ------------------------[ , ]-----------------------> 1 * 5 ------------------------[ ) ]-----------------------> 6 (-1) * - * @var int $state + * @var int */ $state = 0; @@ -184,7 +179,7 @@ class CreateDefinition extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -219,7 +214,7 @@ class CreateDefinition extends Component if (!$expr->isConstraint) { $state = 2; } - } else if ($token->type === Token::TYPE_KEYWORD) { + } elseif ($token->type === Token::TYPE_KEYWORD) { if ($token->flags & Token::FLAG_KEYWORD_RESERVED) { // Reserved keywords can't be used // as field names without backquotes @@ -230,6 +225,7 @@ class CreateDefinition extends Component ), $token ); + return $ret; } else { // Non-reserved keywords are allowed without backquotes @@ -241,6 +237,7 @@ class CreateDefinition extends Component __('A symbol name was expected!'), $token ); + return $ret; } } elseif ($state === 2) { @@ -261,7 +258,7 @@ class CreateDefinition extends Component if ((!empty($expr->type)) || (!empty($expr->key))) { $ret[] = $expr; } - $expr = new CreateDefinition(); + $expr = new self(); if ($token->value === ',') { $state = 1; } elseif ($token->value === ')') { @@ -292,12 +289,13 @@ class CreateDefinition extends Component } --$list->idx; + return $ret; } /** - * @param CreateDefinition|CreateDefinition[] $component The component to be built. - * @param array $options Parameters for building. + * @param CreateDefinition|CreateDefinition[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/DataType.php b/src/Components/DataType.php index 378ec9d..04ec79d 100644 --- a/src/Components/DataType.php +++ b/src/Components/DataType.php @@ -2,10 +2,8 @@ /** * Parses a data type. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,25 +15,23 @@ use SqlParser\TokensList; * Parses a data type. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class DataType extends Component { - /** * All data type options. * * @var array */ public static $DATA_TYPE_OPTIONS = array( - 'BINARY' => 1, - 'CHARACTER SET' => array(2, 'var'), - 'CHARSET' => array(2, 'var'), - 'COLLATE' => array(3, 'var'), - 'UNSIGNED' => 4, - 'ZEROFILL' => 5, + 'BINARY' => 1, + 'CHARACTER SET' => array(2, 'var'), + 'CHARSET' => array(2, 'var'), + 'COLLATE' => array(3, 'var'), + 'UNSIGNED' => 4, + 'ZEROFILL' => 5, ); /** @@ -70,9 +66,9 @@ class DataType extends Component /** * Constructor. * - * @param string $name The name of this data type. - * @param array $parameters The parameters (size or possible values). - * @param OptionsArray $options The options of this data type. + * @param string $name the name of this data type + * @param array $parameters the parameters (size or possible values) + * @param OptionsArray $options the options of this data type */ public function __construct( $name = null, @@ -85,15 +81,15 @@ class DataType extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return DataType */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new DataType(); + $ret = new self(); /** * The state of the parser. @@ -104,7 +100,7 @@ class DataType extends Component * * 1 ----------------[ size and options ]----------------> 2 * - * @var int $state + * @var int */ $state = 0; @@ -112,7 +108,7 @@ class DataType extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -138,7 +134,6 @@ class DataType extends Component ++$list->idx; break; } - } if (empty($ret->name)) { @@ -146,12 +141,13 @@ class DataType extends Component } --$list->idx; + return $ret; } /** - * @param DataType $component The component to be built. - * @param array $options Parameters for building. + * @param DataType $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/Expression.php b/src/Components/Expression.php index 7a7a333..b0c45df 100644 --- a/src/Components/Expression.php +++ b/src/Components/Expression.php @@ -3,10 +3,8 @@ /** * Parses a reference to an expression (column, table or database name, function * call, mathematical expression, etc.). - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Context; @@ -20,20 +18,18 @@ use SqlParser\TokensList; * call, mathematical expression, etc.). * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class Expression extends Component { - /** * List of allowed reserved keywords in expressions. * * @var array */ private static $ALLOWED_KEYWORDS = array( - 'AS' => 1, 'DUAL' => 1, 'NULL' => 1, 'REGEXP' => 1, 'CASE' => 1 + 'AS' => 1, 'DUAL' => 1, 'NULL' => 1, 'REGEXP' => 1, 'CASE' => 1, ); /** @@ -98,11 +94,11 @@ class Expression extends Component * string. * * @param string $database The name of the database or the the expression. - * the the expression. + * the the expression. * @param string $table The name of the table or the alias of the expression. - * the alias of the expression. - * @param string $column The name of the column. - * @param string $alias The name of the alias. + * the alias of the expression. + * @param string $column the name of the column + * @param string $alias the name of the alias */ public function __construct($database = null, $table = null, $column = null, $alias = null) { @@ -118,7 +114,7 @@ class Expression extends Component } /** - * Possible options: + * Possible options:. * * `field` * @@ -143,48 +139,48 @@ class Expression extends Component * * If not empty, breaks after last parentheses occurred. * - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return Expression */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new Expression(); + $ret = new self(); /** * Whether current tokens make an expression or a table reference. * - * @var bool $isExpr + * @var bool */ $isExpr = false; /** * Whether a period was previously found. * - * @var bool $dot + * @var bool */ $dot = false; /** * Whether an alias is expected. Is 2 if `AS` keyword was found. * - * @var bool $alias + * @var bool */ $alias = false; /** * Counts brackets. * - * @var int $brackets + * @var int */ $brackets = 0; /** * Keeps track of the last two previous tokens. * - * @var Token[] $prev + * @var Token[] */ $prev = array(null, null); @@ -195,11 +191,10 @@ class Expression extends Component } for (; $list->idx < $list->count; ++$list->idx) { - /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -227,7 +222,7 @@ class Expression extends Component $ret->subquery = $token->value; } elseif (($token->flags & Token::FLAG_KEYWORD_FUNCTION) && (empty($options['parseField']) - && ! $alias) + && !$alias) ) { $isExpr = true; } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) @@ -261,7 +256,7 @@ class Expression extends Component continue; } $isExpr = true; - } elseif ($brackets === 0 && strlen($ret->expr) > 0 && ! $alias) { + } elseif ($brackets === 0 && strlen($ret->expr) > 0 && !$alias) { /* End of expression */ break; } @@ -408,12 +403,13 @@ class Expression extends Component } --$list->idx; + return $ret; } /** - * @param Expression|Expression[] $component The component to be built. - * @param array $options Parameters for building. + * @param Expression|Expression[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/ExpressionArray.php b/src/Components/ExpressionArray.php index e2aa86e..1901048 100644 --- a/src/Components/ExpressionArray.php +++ b/src/Components/ExpressionArray.php @@ -2,10 +2,8 @@ /** * Parses a list of expressions delimited by a comma. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,17 +15,15 @@ use SqlParser\TokensList; * Parses a list of expressions delimited by a comma. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class ExpressionArray extends Component { - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return Expression[] */ @@ -45,7 +41,7 @@ class ExpressionArray extends Component * 1 ------------------------[ , ]------------------------> 0 * 1 -----------------------[ else ]----------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -53,7 +49,7 @@ class ExpressionArray extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -109,12 +105,13 @@ class ExpressionArray extends Component } --$list->idx; + return $ret; } /** - * @param Expression[] $component The component to be built. - * @param array $options Parameters for building. + * @param Expression[] $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -124,6 +121,7 @@ class ExpressionArray extends Component foreach ($component as $frag) { $ret[] = $frag::build($frag); } + return implode($ret, ', '); } } diff --git a/src/Components/FunctionCall.php b/src/Components/FunctionCall.php index e260532..3d9b33b 100644 --- a/src/Components/FunctionCall.php +++ b/src/Components/FunctionCall.php @@ -2,10 +2,8 @@ /** * Parses a function call. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * Parses a function call. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class FunctionCall extends Component { - /** * The name of this function. * @@ -32,7 +28,7 @@ class FunctionCall extends Component public $name; /** - * The list of parameters + * The list of parameters. * * @var ArrayObj */ @@ -41,8 +37,8 @@ class FunctionCall extends Component /** * Constructor. * - * @param string $name The name of the function to be called. - * @param array|ArrayObj $parameters The parameters of this function. + * @param string $name the name of the function to be called + * @param array|ArrayObj $parameters the parameters of this function */ public function __construct($name = null, $parameters = null) { @@ -55,15 +51,15 @@ class FunctionCall extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return FunctionCall */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new FunctionCall(); + $ret = new self(); /** * The state of the parser. @@ -74,7 +70,7 @@ class FunctionCall extends Component * * 1 --------------------[ parameters ]-------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -82,7 +78,7 @@ class FunctionCall extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -105,15 +101,14 @@ class FunctionCall extends Component } break; } - } return $ret; } /** - * @param FunctionCall $component The component to be built. - * @param array $options Parameters for building. + * @param FunctionCall $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/IntoKeyword.php b/src/Components/IntoKeyword.php index 1a182ff..c7d0d40 100644 --- a/src/Components/IntoKeyword.php +++ b/src/Components/IntoKeyword.php @@ -2,10 +2,8 @@ /** * `INTO` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,24 +15,21 @@ use SqlParser\TokensList; * `INTO` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class IntoKeyword extends Component { - /** * FIELDS/COLUMNS Options for `SELECT...INTO` statements. * * @var array */ public static $FIELDS_OPTIONS = array( - - 'TERMINATED BY' => array(1, 'expr'), - 'OPTIONALLY' => 2, - 'ENCLOSED BY' => array(3, 'expr'), - 'ESCAPED BY' => array(4, 'expr'), + 'TERMINATED BY' => array(1, 'expr'), + 'OPTIONALLY' => 2, + 'ENCLOSED BY' => array(3, 'expr'), + 'ESCAPED BY' => array(4, 'expr'), ); /** @@ -43,9 +38,8 @@ class IntoKeyword extends Component * @var array */ public static $LINES_OPTIONS = array( - - 'STARTING BY' => array(1, 'expr'), - 'TERMINATED BY' => array(2, 'expr'), + 'STARTING BY' => array(1, 'expr'), + 'TERMINATED BY' => array(2, 'expr'), ); /** @@ -70,45 +64,47 @@ class IntoKeyword extends Component public $columns; /** - * The values to be selected into (SELECT .. INTO @var1) + * The values to be selected into (SELECT .. INTO @var1). * * @var ExpressionArray */ public $values; /** - * Options for FIELDS/COLUMNS keyword + * Options for FIELDS/COLUMNS keyword. * * @var OptionsArray + * * @see static::$FIELDS_OPTIONS */ public $fields_options; /** - * Whether to use `FIELDS` or `COLUMNS` while building + * Whether to use `FIELDS` or `COLUMNS` while building. * - * @var boolean + * @var bool */ public $fields_keyword; /** - * Options for OPTIONS keyword + * Options for OPTIONS keyword. * * @var OptionsArray + * * @see static::$LINES_OPTIONS */ public $lines_options; /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return IntoKeyword */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new IntoKeyword(); + $ret = new self(); /** * The state of the parser. @@ -122,7 +118,7 @@ class IntoKeyword extends Component * * 2 ---------------------[ filename ]--------------------> 1 * - * @var int $state + * @var int */ $state = 0; @@ -130,7 +126,7 @@ class IntoKeyword extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -199,10 +195,12 @@ class IntoKeyword extends Component } --$list->idx; + return $ret; } - public function parseFileOptions(Parser $parser, TokensList $list, $keyword='FIELDS') { + public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS') + { ++$list->idx; if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { @@ -229,8 +227,8 @@ class IntoKeyword extends Component } /** - * @param IntoKeyword $component The component to be built. - * @param array $options Parameters for building. + * @param IntoKeyword $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -239,6 +237,7 @@ class IntoKeyword extends Component if ($component->dest instanceof Expression) { $columns = !empty($component->columns) ? '(`' . implode('`, `', $component->columns) . '`)' : ''; + return $component->dest . $columns; } elseif (isset($component->values)) { return ExpressionArray::build($component->values); @@ -259,4 +258,4 @@ class IntoKeyword extends Component return $ret; } } -}
\ No newline at end of file +} diff --git a/src/Components/JoinKeyword.php b/src/Components/JoinKeyword.php index 60711ce..8954482 100644 --- a/src/Components/JoinKeyword.php +++ b/src/Components/JoinKeyword.php @@ -2,10 +2,8 @@ /** * `JOIN` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,40 +15,39 @@ use SqlParser\TokensList; * `JOIN` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class JoinKeyword extends Component { - /** * Types of join. * * @var array */ public static $JOINS = array( - 'CROSS JOIN' => 'CROSS', - 'FULL JOIN' => 'FULL', - 'FULL OUTER JOIN' => 'FULL', - 'INNER JOIN' => 'INNER', - 'JOIN' => 'JOIN', - 'LEFT JOIN' => 'LEFT', - 'LEFT OUTER JOIN' => 'LEFT', - 'RIGHT JOIN' => 'RIGHT', - 'RIGHT OUTER JOIN' => 'RIGHT', - 'NATURAL JOIN' => 'NATURAL', - 'NATURAL LEFT JOIN' => 'NATURAL LEFT', - 'NATURAL RIGHT JOIN' => 'NATURAL RIGHT', - 'NATURAL LEFT OUTER JOIN' => 'NATURAL LEFT OUTER', - 'NATURAL RIGHT OUTER JOIN' => 'NATURAL RIGHT OUTER', - 'STRAIGHT_JOIN' => 'STRAIGHT', + 'CROSS JOIN' => 'CROSS', + 'FULL JOIN' => 'FULL', + 'FULL OUTER JOIN' => 'FULL', + 'INNER JOIN' => 'INNER', + 'JOIN' => 'JOIN', + 'LEFT JOIN' => 'LEFT', + 'LEFT OUTER JOIN' => 'LEFT', + 'RIGHT JOIN' => 'RIGHT', + 'RIGHT OUTER JOIN' => 'RIGHT', + 'NATURAL JOIN' => 'NATURAL', + 'NATURAL LEFT JOIN' => 'NATURAL LEFT', + 'NATURAL RIGHT JOIN' => 'NATURAL RIGHT', + 'NATURAL LEFT OUTER JOIN' => 'NATURAL LEFT OUTER', + 'NATURAL RIGHT OUTER JOIN' => 'NATURAL RIGHT OUTER', + 'STRAIGHT_JOIN' => 'STRAIGHT', ); /** * Type of this join. * * @see static::$JOINS + * * @var string */ public $type; @@ -70,16 +67,16 @@ class JoinKeyword extends Component public $on; /** - * Columns in Using clause + * Columns in Using clause. * * @var ArrayObj */ public $using; /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return JoinKeyword[] */ @@ -87,7 +84,7 @@ class JoinKeyword extends Component { $ret = array(); - $expr = new JoinKeyword(); + $expr = new self(); /** * The state of the parser. @@ -105,7 +102,7 @@ class JoinKeyword extends Component * * 4 ----------------------[ columns ]--------------------> 0 * - * @var int $state + * @var int */ $state = 0; @@ -120,7 +117,7 @@ class JoinKeyword extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -157,7 +154,7 @@ class JoinKeyword extends Component && (!empty(static::$JOINS[$token->value])) ) { $ret[] = $expr; - $expr = new JoinKeyword(); + $expr = new self(); $expr->type = static::$JOINS[$token->value]; $state = 1; } else { @@ -169,15 +166,14 @@ class JoinKeyword extends Component } elseif ($state === 3) { $expr->on = Condition::parse($parser, $list); $ret[] = $expr; - $expr = new JoinKeyword(); + $expr = new self(); $state = 0; } elseif ($state === 4) { $expr->using = ArrayObj::parse($parser, $list); $ret[] = $expr; - $expr = new JoinKeyword(); + $expr = new self(); $state = 0; } - } if (!empty($expr->type)) { @@ -185,12 +181,13 @@ class JoinKeyword extends Component } --$list->idx; + return $ret; } /** - * @param JoinKeyword[] $component The component to be built. - * @param array $options Parameters for building. + * @param JoinKeyword[] $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -204,6 +201,7 @@ class JoinKeyword extends Component . (!empty($c->using) ? ' USING ' . ArrayObj::build($c->using) : ''); } + return implode(' ', $ret); } } diff --git a/src/Components/Key.php b/src/Components/Key.php index 24cc363..a33122a 100644 --- a/src/Components/Key.php +++ b/src/Components/Key.php @@ -2,10 +2,8 @@ /** * Parses the definition of a key. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Context; @@ -20,23 +18,21 @@ use SqlParser\TokensList; * Used for parsing `CREATE TABLE` statement. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class Key extends Component { - /** * All key options. * * @var array */ public static $KEY_OPTIONS = array( - 'KEY_BLOCK_SIZE' => array(1, 'var'), - 'USING' => array(2, 'var'), - 'WITH PARSER' => array(3, 'var'), - 'COMMENT' => array(4, 'var='), + 'KEY_BLOCK_SIZE' => array(1, 'var'), + 'USING' => array(2, 'var'), + 'WITH PARSER' => array(3, 'var'), + 'COMMENT' => array(4, 'var='), ); /** @@ -70,10 +66,10 @@ class Key extends Component /** * Constructor. * - * @param string $name The name of the key. - * @param array $columns The columns covered by this key. - * @param string $type The type of this key. - * @param OptionsArray $options The options of this key. + * @param string $name the name of the key + * @param array $columns the columns covered by this key + * @param string $type the type of this key + * @param OptionsArray $options the options of this key */ public function __construct( $name = null, @@ -88,15 +84,15 @@ class Key extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return Key */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new Key(); + $ret = new self(); /** * Last parsed column. @@ -117,7 +113,7 @@ class Key extends Component * * 2 ---------------------[ options ]---------------------> 3 * - * @var int $state + * @var int */ $state = 0; @@ -125,7 +121,7 @@ class Key extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -176,12 +172,13 @@ class Key extends Component } --$list->idx; + return $ret; } /** - * @param Key $component The component to be built. - * @param array $options Parameters for building. + * @param Key $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -202,6 +199,7 @@ class Key extends Component } $ret .= '(' . implode(',', $columns) . ') ' . $component->options; + return trim($ret); } } diff --git a/src/Components/Limit.php b/src/Components/Limit.php index 13a1127..d192949 100644 --- a/src/Components/Limit.php +++ b/src/Components/Limit.php @@ -2,10 +2,8 @@ /** * `LIMIT` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * `LIMIT` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class Limit extends Component { - /** * The number of rows skipped. * @@ -41,8 +37,8 @@ class Limit extends Component /** * Constructor. * - * @param int $rowCount The row count. - * @param int $offset The offset. + * @param int $rowCount the row count + * @param int $offset the offset */ public function __construct($rowCount = 0, $offset = 0) { @@ -51,15 +47,15 @@ class Limit extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return Limit */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new Limit(); + $ret = new self(); $offset = false; @@ -67,7 +63,7 @@ class Limit extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -115,12 +111,13 @@ class Limit extends Component } --$list->idx; + return $ret; } /** - * @param Limit $component The component to be built. - * @param array $options Parameters for building. + * @param Limit $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/OptionsArray.php b/src/Components/OptionsArray.php index 315237f..e7694b3 100644 --- a/src/Components/OptionsArray.php +++ b/src/Components/OptionsArray.php @@ -2,10 +2,8 @@ /** * Parses a list of options. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * Parses a list of options. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class OptionsArray extends Component { - /** * ArrayObj of selected options. * @@ -44,41 +40,41 @@ class OptionsArray extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return OptionsArray */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new OptionsArray(); + $ret = new self(); /** * The ID that will be assigned to duplicate options. * - * @var int $lastAssignedId + * @var int */ $lastAssignedId = count($options) + 1; /** * The option that was processed last time. * - * @var array $lastOption + * @var array */ $lastOption = null; /** * The index of the option that was processed last time. * - * @var int $lastOptionId + * @var int */ $lastOptionId = 0; /** * Counts brackets. * - * @var int $brackets + * @var int */ $brackets = 0; @@ -93,7 +89,7 @@ class OptionsArray extends Component * * 2 ----------------------[ value ]----------------------> 0 * - * @var int $state + * @var int */ $state = 0; @@ -101,7 +97,7 @@ class OptionsArray extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -182,7 +178,7 @@ class OptionsArray extends Component 'value' => '', ); $state = 1; - } elseif ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { + } elseif ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { // This is a keyword that is followed by an expression. // The expression is used by the specialized parser. @@ -269,12 +265,13 @@ class OptionsArray extends Component } --$list->idx; + return $ret; } /** - * @param OptionsArray $component The component to be built. - * @param array $options Parameters for building. + * @param OptionsArray $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -294,13 +291,14 @@ class OptionsArray extends Component . (!empty($option['expr']) ? $option['expr'] : $option['value']); } } + return implode(' ', $options); } /** * Checks if it has the specified option and returns it value or true. * - * @param string $key The key to be checked. + * @param string $key the key to be checked * @param bool $getExpr Gets the expression instead of the value. * The value is the processed form of the expression. * @@ -317,15 +315,16 @@ class OptionsArray extends Component return true; } } + return false; } /** * Removes the option from the array. * - * @param string $key The key to be removed. + * @param string $key the key to be removed * - * @return bool Whether the key was found and deleted or not. + * @return bool whether the key was found and deleted or not */ public function remove($key) { @@ -333,13 +332,16 @@ class OptionsArray extends Component if (is_array($option)) { if (!strcasecmp($key, $option['name'])) { unset($this->options[$idx]); + return true; } } elseif (!strcasecmp($key, $option)) { unset($this->options[$idx]); + return true; } } + return false; } @@ -347,15 +349,13 @@ class OptionsArray extends Component * Merges the specified options with these ones. Values with same ID will be * replaced. * - * @param array|OptionsArray $options The options to be merged. - * - * @return void + * @param array|OptionsArray $options the options to be merged */ public function merge($options) { if (is_array($options)) { $this->options = array_merge_recursive($this->options, $options); - } elseif ($options instanceof OptionsArray) { + } elseif ($options instanceof self) { $this->options = array_merge_recursive($this->options, $options->options); } } diff --git a/src/Components/OrderKeyword.php b/src/Components/OrderKeyword.php index ba773a8..1a7a5f2 100644 --- a/src/Components/OrderKeyword.php +++ b/src/Components/OrderKeyword.php @@ -2,10 +2,8 @@ /** * `ORDER BY` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * `ORDER BY` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class OrderKeyword extends Component { - /** * The expression that is used for ordering. * @@ -41,8 +37,8 @@ class OrderKeyword extends Component /** * Constructor. * - * @param Expression $expr The expression that we are sorting by. - * @param string $type The sorting type. + * @param Expression $expr the expression that we are sorting by + * @param string $type the sorting type */ public function __construct($expr = null, $type = 'ASC') { @@ -51,9 +47,9 @@ class OrderKeyword extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return OrderKeyword[] */ @@ -61,7 +57,7 @@ class OrderKeyword extends Component { $ret = array(); - $expr = new OrderKeyword(); + $expr = new self(); /** * The state of the parser. @@ -73,7 +69,7 @@ class OrderKeyword extends Component * 1 ------------------------[ , ]------------------------> 0 * 1 -------------------[ ASC / DESC ]--------------------> 1 * - * @var int $state + * @var int */ $state = 0; @@ -81,7 +77,7 @@ class OrderKeyword extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -109,13 +105,12 @@ class OrderKeyword extends Component if (!empty($expr->expr)) { $ret[] = $expr; } - $expr = new OrderKeyword(); + $expr = new self(); $state = 0; } else { break; } } - } // Last iteration was not processed. @@ -124,12 +119,13 @@ class OrderKeyword extends Component } --$list->idx; + return $ret; } /** - * @param OrderKeyword|OrderKeyword[] $component The component to be built. - * @param array $options Parameters for building. + * @param OrderKeyword|OrderKeyword[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/ParameterDefinition.php b/src/Components/ParameterDefinition.php index 274555e..bc74776 100644 --- a/src/Components/ParameterDefinition.php +++ b/src/Components/ParameterDefinition.php @@ -2,10 +2,8 @@ /** * The definition of a parameter of a function or procedure. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Context; @@ -18,13 +16,11 @@ use SqlParser\TokensList; * The definition of a parameter of a function or procedure. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class ParameterDefinition extends Component { - /** * The name of the new column. * @@ -47,9 +43,9 @@ class ParameterDefinition extends Component public $type; /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return ParameterDefinition[] */ @@ -57,7 +53,7 @@ class ParameterDefinition extends Component { $ret = array(); - $expr = new ParameterDefinition(); + $expr = new self(); /** * The state of the parser. @@ -74,7 +70,7 @@ class ParameterDefinition extends Component * 3 ------------------------[ , ]-----------------------> 1 * 3 ------------------------[ ) ]-----------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -82,7 +78,7 @@ class ParameterDefinition extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -117,7 +113,7 @@ class ParameterDefinition extends Component $state = 3; } elseif ($state === 3) { $ret[] = $expr; - $expr = new ParameterDefinition(); + $expr = new self(); if ($token->value === ',') { $state = 1; } elseif ($token->value === ')') { @@ -133,12 +129,13 @@ class ParameterDefinition extends Component } --$list->idx; + return $ret; } /** - * @param ParameterDefinition[] $component The component to be built. - * @param array $options Parameters for building. + * @param ParameterDefinition[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/PartitionDefinition.php b/src/Components/PartitionDefinition.php index 33c3692..c688f55 100644 --- a/src/Components/PartitionDefinition.php +++ b/src/Components/PartitionDefinition.php @@ -4,10 +4,8 @@ * Parses the create definition of a partition. * * Used for parsing `CREATE TABLE` statement. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -21,28 +19,26 @@ use SqlParser\TokensList; * Used for parsing `CREATE TABLE` statement. * * @category Components - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class PartitionDefinition extends Component { - /** * All field options. * * @var array */ public static $OPTIONS = array( - 'STORAGE ENGINE' => array(1, 'var'), - 'ENGINE' => array(1, 'var'), - 'COMMENT' => array(2, 'var'), - 'DATA DIRECTORY' => array(3, 'var'), - 'INDEX DIRECTORY' => array(4, 'var'), - 'MAX_ROWS' => array(5, 'var'), - 'MIN_ROWS' => array(6, 'var'), - 'TABLESPACE' => array(7, 'var'), - 'NODEGROUP' => array(8, 'var'), + 'STORAGE ENGINE' => array(1, 'var'), + 'ENGINE' => array(1, 'var'), + 'COMMENT' => array(2, 'var'), + 'DATA DIRECTORY' => array(3, 'var'), + 'INDEX DIRECTORY' => array(4, 'var'), + 'MAX_ROWS' => array(5, 'var'), + 'MIN_ROWS' => array(6, 'var'), + 'TABLESPACE' => array(7, 'var'), + 'NODEGROUP' => array(8, 'var'), ); /** @@ -88,15 +84,15 @@ class PartitionDefinition extends Component public $options; /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return PartitionDefinition */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new PartitionDefinition(); + $ret = new self(); /** * The state of the parser. @@ -118,7 +114,7 @@ class PartitionDefinition extends Component * * 6 ------------------[ subpartitions ]------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -126,7 +122,7 @@ class PartitionDefinition extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -183,7 +179,7 @@ class PartitionDefinition extends Component $parser, $list, array( - 'type' => 'SqlParser\\Components\\PartitionDefinition' + 'type' => 'SqlParser\\Components\\PartitionDefinition', ) ); ++$list->idx; @@ -193,12 +189,13 @@ class PartitionDefinition extends Component } --$list->idx; + return $ret; } /** - * @param PartitionDefinition|PartitionDefinition[] $component The component to be built. - * @param array $options Parameters for building. + * @param PartitionDefinition|PartitionDefinition[] $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -211,7 +208,8 @@ class PartitionDefinition extends Component return trim('SUBPARTITION ' . $component->name . ' ' . $component->options); } else { $subpartitions = empty($component->subpartitions) - ? '' : ' ' . PartitionDefinition::build($component->subpartitions); + ? '' : ' ' . self::build($component->subpartitions); + return trim( 'PARTITION ' . $component->name . (empty($component->type) ? '' : ' VALUES ' . $component->type . ' ' . $component->expr . ' ') diff --git a/src/Components/Reference.php b/src/Components/Reference.php index 24d633c..447e3cf 100644 --- a/src/Components/Reference.php +++ b/src/Components/Reference.php @@ -2,10 +2,8 @@ /** * `REFERENCES` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Context; @@ -18,22 +16,20 @@ use SqlParser\TokensList; * `REFERENCES` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class Reference extends Component { - /** * All references options. * * @var array */ public static $REFERENCES_OPTIONS = array( - 'MATCH' => array(1, 'var'), - 'ON DELETE' => array(2, 'var'), - 'ON UPDATE' => array(3, 'var'), + 'MATCH' => array(1, 'var'), + 'ON DELETE' => array(2, 'var'), + 'ON UPDATE' => array(3, 'var'), ); /** @@ -60,9 +56,9 @@ class Reference extends Component /** * Constructor. * - * @param Expression $table The name of the table referenced. - * @param array $columns The columns referenced. - * @param OptionsArray $options The options. + * @param Expression $table the name of the table referenced + * @param array $columns the columns referenced + * @param OptionsArray $options the options */ public function __construct($table = null, array $columns = array(), $options = null) { @@ -72,15 +68,15 @@ class Reference extends Component } /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return Reference */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { - $ret = new Reference(); + $ret = new self(); /** * The state of the parser. @@ -93,7 +89,7 @@ class Reference extends Component * * 2 ---------------------[ options ]--------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -101,7 +97,7 @@ class Reference extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -133,16 +129,16 @@ class Reference extends Component ++$list->idx; break; } - } --$list->idx; + return $ret; } /** - * @param Reference $component The component to be built. - * @param array $options Parameters for building. + * @param Reference $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/RenameOperation.php b/src/Components/RenameOperation.php index 291bd43..84c4aed 100644 --- a/src/Components/RenameOperation.php +++ b/src/Components/RenameOperation.php @@ -2,10 +2,8 @@ /** * `RENAME TABLE` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * `RENAME TABLE` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class RenameOperation extends Component { - /** * The old table name. * @@ -39,9 +35,9 @@ class RenameOperation extends Component public $new; /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return RenameOperation[] */ @@ -49,7 +45,7 @@ class RenameOperation extends Component { $ret = array(); - $expr = new RenameOperation(); + $expr = new self(); /** * The state of the parser. @@ -65,7 +61,7 @@ class RenameOperation extends Component * 3 ------------------------[ , ]------------------------> 0 * 3 -----------------------[ else ]----------------------> (END) * - * @var int $state + * @var int */ $state = 0; @@ -73,7 +69,7 @@ class RenameOperation extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -132,7 +128,7 @@ class RenameOperation extends Component } elseif ($state === 3) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { $ret[] = $expr; - $expr = new RenameOperation(); + $expr = new self(); $state = 0; } else { break; @@ -153,12 +149,13 @@ class RenameOperation extends Component } --$list->idx; + return $ret; } /** - * @param RenameOperation $component The component to be built. - * @param array $options Parameters for building. + * @param RenameOperation $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/SetOperation.php b/src/Components/SetOperation.php index cd8b854..2bd600b 100644 --- a/src/Components/SetOperation.php +++ b/src/Components/SetOperation.php @@ -2,10 +2,8 @@ /** * `SET` keyword parser. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -17,13 +15,11 @@ use SqlParser\TokensList; * `SET` keyword parser. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class SetOperation extends Component { - /** * The name of the column that is being updated. * @@ -39,9 +35,9 @@ class SetOperation extends Component public $value; /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing * * @return SetOperation[] */ @@ -49,7 +45,7 @@ class SetOperation extends Component { $ret = array(); - $expr = new SetOperation(); + $expr = new self(); /** * The state of the parser. @@ -61,7 +57,7 @@ class SetOperation extends Component * 1 ------------------------[ , ]------------------------> 0 * 1 ----------------------[ value ]----------------------> 1 * - * @var int $state + * @var int */ $state = 0; @@ -69,7 +65,7 @@ class SetOperation extends Component /** * Token parsed at this moment. * - * @var Token $token + * @var Token */ $token = $list->tokens[$list->idx]; @@ -112,18 +108,19 @@ class SetOperation extends Component $expr->column = trim($expr->column); $expr->value = $tmp->expr; $ret[] = $expr; - $expr = new SetOperation(); + $expr = new self(); $state = 0; } } --$list->idx; + return $ret; } /** - * @param SetOperation|SetOperation[] $component The component to be built. - * @param array $options Parameters for building. + * @param SetOperation|SetOperation[] $component the component to be built + * @param array $options parameters for building * * @return string */ diff --git a/src/Components/UnionKeyword.php b/src/Components/UnionKeyword.php index 138a79e..8e4923a 100644 --- a/src/Components/UnionKeyword.php +++ b/src/Components/UnionKeyword.php @@ -2,10 +2,8 @@ /** * `UNION` keyword builder. - * - * @package SqlParser - * @subpackage Components */ + namespace SqlParser\Components; use SqlParser\Component; @@ -15,16 +13,14 @@ use SqlParser\Statements\SelectStatement; * `UNION` keyword builder. * * @category Keywords - * @package SqlParser - * @subpackage Components + * * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ class UnionKeyword extends Component { - /** - * @param SelectStatement[] $component The component to be built. - * @param array $options Parameters for building. + * @param SelectStatement[] $component the component to be built + * @param array $options parameters for building * * @return string */ @@ -34,6 +30,7 @@ class UnionKeyword extends Component foreach ($component as $component) { $tmp[] = $component[0] . ' ' . $component[1]; } + return implode(' ', $tmp); } } |