diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 0b170765..b7778798 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -39,6 +39,7 @@ jobs: - '8.0' - '8.1' - '8.2' + - '8.3' steps: - name: Checkout. @@ -70,4 +71,9 @@ jobs: run: composer update --no-interaction --no-progress --optimize-autoloader --ansi - name: Static analysis. + if: ${{ matrix.php != '8.0' }} run: vendor/bin/psalm --config=${{ inputs.psalm-config }} --shepherd --stats --output-format=github --php-version=${{ matrix.php }} + + - name: Static analysis. + if: ${{ matrix.php == '8.0' }} + run: vendor/bin/psalm --config=psalm4.xml --shepherd --stats --output-format=github --php-version=${{ matrix.php }} diff --git a/CHANGELOG.md b/CHANGELOG.md index b78d56f3..3dc7d3b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Enh #281: Remove unused code in `Command` class (@vjik) - Enh #282: Change property `Schema::$typeMap` to constant `Schema::TYPE_MAP` (@Tigrov) - Enh #283: Remove unnecessary check for array type in `Schema::loadTableIndexes()` (@Tigrov) +- Enh #288: Minor refactoring of `DDLQueryBuilder` and `Schema` (@Tigrov) ## 1.1.0 November 12, 2023 diff --git a/composer.json b/composer.json index c2223a5a..5e57c922 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,7 @@ "rector/rector": "^0.19", "roave/infection-static-analysis-plugin": "^1.16", "spatie/phpunit-watcher": "^1.23", - "vimeo/psalm": "^4.3|^5.6", + "vimeo/psalm": "^4.30|^5.20", "yiisoft/aliases": "^2.0", "yiisoft/cache-file": "^3.1", "yiisoft/json": "^1.0", diff --git a/psalm.xml b/psalm.xml index 10d319ae..906206a6 100644 --- a/psalm.xml +++ b/psalm.xml @@ -15,5 +15,6 @@ + diff --git a/psalm4.xml b/psalm4.xml new file mode 100644 index 00000000..10d319ae --- /dev/null +++ b/psalm4.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/src/DDLQueryBuilder.php b/src/DDLQueryBuilder.php index 84a9c89b..15b8cd92 100644 --- a/src/DDLQueryBuilder.php +++ b/src/DDLQueryBuilder.php @@ -105,8 +105,8 @@ public function createIndex( [$schema, $table] = $tableParts; } - return 'CREATE ' . ($indexType ? ($indexType . ' ') : '') . 'INDEX ' - . $this->quoter->quoteTableName(($schema ? $schema . '.' : '') . $name) + return 'CREATE ' . (!empty($indexType) ? $indexType . ' ' : '') . 'INDEX ' + . $this->quoter->quoteTableName((!empty($schema) ? $schema . '.' : '') . $name) . ' ON ' . $this->quoter->quoteTableName($table) . ' (' . $this->queryBuilder->buildColumns($columns) . ')'; diff --git a/src/Schema.php b/src/Schema.php index 23d46723..3d2853c1 100644 --- a/src/Schema.php +++ b/src/Schema.php @@ -752,7 +752,7 @@ private function getJsonColumns(TableSchemaInterface $table): array $regexp = '/\bjson_valid\(\s*["`\[]?(.+?)["`\]]?\s*\)/i'; foreach ($checks as $check) { - if (preg_match_all($regexp, $check->getExpression(), $matches, PREG_SET_ORDER)) { + if (preg_match_all($regexp, $check->getExpression(), $matches, PREG_SET_ORDER) > 0) { foreach ($matches as $match) { $result[] = $match[1]; }