diff --git a/analyzer-baseline.toml b/analyzer-baseline.toml index f94309d3..c67a8d38 100644 --- a/analyzer-baseline.toml +++ b/analyzer-baseline.toml @@ -1788,12 +1788,6 @@ code = "overly-wide-return-type" message = "Declared return type `null|string` for `processexpressionparametername` has unused branches: `null`." count = 1 -[[issues]] -file = "src/Sql/AbstractSql.php" -code = "possibly-false-argument" -message = 'Argument #1 of method `PhpDb\Adapter\Platform\PlatformInterface::quoteIdentifier` is possibly `false`, but parameter type `string` does not accept it.' -count = 1 - [[issues]] file = "src/Sql/AbstractSql.php" code = "possibly-invalid-argument" @@ -1860,6 +1854,12 @@ code = "possibly-null-argument" message = 'Argument #4 of method `PhpDb\Sql\AbstractSql::processExpressionParameterName` is possibly `null`, but parameter type `PhpDb\Adapter\Driver\DriverInterface` does not accept it.' count = 1 +[[issues]] +file = "src/Sql/AbstractSql.php" +code = "possibly-undefined-string-array-index" +message = 'Possibly undefined array key `string` accessed on `non-empty-array`.' +count = 1 + [[issues]] file = "src/Sql/AbstractSql.php" code = "redundant-cast" @@ -3582,12 +3582,6 @@ code = "possible-method-access-on-null" message = "Attempting to call a method on `null`." count = 2 -[[issues]] -file = "src/Sql/Select.php" -code = "possibly-false-argument" -message = 'Argument #1 of method `PhpDb\Sql\AbstractSql::resolveTable` is possibly `false`, but parameter type `PhpDb\Sql\Select|PhpDb\Sql\TableIdentifier|null|string` does not accept it.' -count = 1 - [[issues]] file = "src/Sql/Select.php" code = "possibly-false-iterator" @@ -3636,6 +3630,12 @@ code = "possibly-null-argument" message = 'Argument #1 of method `PhpDb\Sql\AbstractSql::renderTable` is possibly `null`, but parameter type `string` does not accept it.' count = 1 +[[issues]] +file = "src/Sql/Select.php" +code = "possibly-null-array-index" +message = "Possibly using `null` as an array index to access elementof variable $table." +count = 1 + [[issues]] file = "src/Sql/Select.php" code = "possibly-null-operand" @@ -3672,6 +3672,12 @@ code = "possibly-undefined-string-array-index" message = '''Possibly undefined array key 'type' accessed on `array{'modifier'?: truthy-string, 'select'?: PhpDb\Sql\Select, 'type'?: string}`.''' count = 1 +[[issues]] +file = "src/Sql/Select.php" +code = "possibly-undefined-string-array-index" +message = 'Possibly undefined array key `null|string` accessed on `array`.' +count = 1 + [[issues]] file = "src/Sql/Select.php" code = "redundant-comparison" diff --git a/src/Sql/AbstractSql.php b/src/Sql/AbstractSql.php index d290bdab..e3540f77 100644 --- a/src/Sql/AbstractSql.php +++ b/src/Sql/AbstractSql.php @@ -17,13 +17,12 @@ use PhpDb\Sql\Argument\Values; use PhpDb\Sql\Platform\PlatformDecoratorInterface; +use function array_key_first; use function count; -use function current; use function get_object_vars; use function implode; use function is_array; use function is_string; -use function key; use function rtrim; use function str_replace; use function strtoupper; @@ -343,8 +342,9 @@ protected function processJoin( $joinAs = null; $joinNameValue = $join['name']; if (is_array($joinNameValue)) { - $joinName = current($joinNameValue); - $joinAs = $platform->quoteIdentifier(key($joinNameValue)); + $alias = array_key_first($joinNameValue); + $joinName = $joinNameValue[$alias]; + $joinAs = $platform->quoteIdentifier($alias); } else { $joinName = $joinNameValue; } diff --git a/src/Sql/Select.php b/src/Sql/Select.php index d761a95e..fe673016 100644 --- a/src/Sql/Select.php +++ b/src/Sql/Select.php @@ -12,8 +12,8 @@ use PhpDb\Sql\Predicate\PredicateInterface; use function array_key_exists; +use function array_key_first; use function count; -use function current; use function explode; use function gettype; use function is_array; @@ -650,7 +650,7 @@ protected function processSelect( } foreach ($this->getJoins()->getJoins() as $join) { - $joinName = is_array($join['name']) ? key($join['name']) : $join['name']; + $joinName = is_array($join['name']) ? array_key_first($join['name']) : $join['name']; $joinName = parent::resolveTable($joinName, $platform, $driver, $parameterContainer); foreach ($join['columns'] as $jKey => $jColumn) { @@ -746,8 +746,8 @@ protected function resolveTable( $alias = null; if (is_array($table)) { - $alias = key($table); - $table = current($table); + $alias = array_key_first($table); + $table = $table[$alias]; } $table = parent::resolveTable($table, $platform, $driver, $parameterContainer);