From af671d5c9a3dac595da25ef2add39cd257bcef8a Mon Sep 17 00:00:00 2001 From: Victor GREBOT Date: Mon, 5 Feb 2024 12:30:21 +0100 Subject: [PATCH 1/3] feature: setup static analysis with phpstan --- .github/workflows/tests.yml | 44 + .gitignore | 3 +- composer.json | 3 +- phpstan-baseline.neon | 2541 +++++++++++++++++++++++++++++++++++ phpstan.neon.dist | 7 + 5 files changed, 2596 insertions(+), 2 deletions(-) create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon.dist diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f473dbd4..7b6ef66b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -29,3 +29,47 @@ jobs: - name: Run Atoum tests run: php vendor/bin/atoum + + static-code-analysis: + name: "Static Code Analysis" + + runs-on: "ubuntu-latest" + + strategy: + matrix: + php-version: + - "8.1" + dependencies: + - "locked" + steps: + - name: "Checkout" + uses: "actions/checkout@v3" + + - name: "Install PHP with extensions" + uses: "shivammathur/setup-php@2.24.0" + with: + coverage: "none" + php-version: "${{ matrix.php-version }}" + extensions: bcmath, bz2, gettext, mbstring, memcached, mcrypt, mysqli, opcache, pdo_mysql, zip, pdo, intl, json, pdo_pgsql, pgsql, session, simplexml, xml + tools: composer:v1, pecl + + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + + - name: "Install ${{ matrix.dependencies }} dependencies with composer" + uses: "ramsey/composer-install@2.2.0" + with: + dependency-versions: "${{ matrix.dependencies }}" + + - name: "Create cache directory for phpstan/phpstan" + run: "mkdir -p .build/phpstan" + + - name: "Cache cache directory for phpstan/phpstan" + uses: "actions/cache@v3" + with: + path: ".build/phpstan" + key: "php-${{ matrix.php-version }}-phpstan-${{ github.sha }}" + restore-keys: "php-${{ matrix.php-version }}-phpstan-" + + - name: "Run phpstan/phpstan" + run: "vendor/bin/phpstan analyse --configuration=phpstan.neon.dist --memory-limit=-1" diff --git a/.gitignore b/.gitignore index eb220d06..12143595 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ sample/src/benchmark vendor/ /composer.lock coverage* -.idea/ \ No newline at end of file +.idea/ +.build/ \ No newline at end of file diff --git a/composer.json b/composer.json index 78775f3b..8ad73746 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,8 @@ "ext-pgsql": "*", "ext-mysqli": "*", "atoum/atoum": "^4.0", - "atoum/stubs": "^2.0" + "atoum/stubs": "^2.0", + "phpstan/phpstan": "^1.10" }, "autoload": { "psr-4" : { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 00000000..4c439858 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,2541 @@ +parameters: + ignoreErrors: + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\Cache\\:\\:getStats\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Cache/Cache.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\Cache\\:\\:log\\(\\) has parameter \\$operation with no type specified\\.$#" + count: 1 + path: src/Ting/Cache/Cache.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\Cache\\:\\:log\\(\\) has parameter \\$type with no type specified\\.$#" + count: 1 + path: src/Ting/Cache/Cache.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\Cache\\:\\:setCache\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Cache/Cache.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\Cache\\:\\:setLogger\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Cache/Cache.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\Cache\\:\\:stopLog\\(\\) has parameter \\$miss with no type specified\\.$#" + count: 1 + path: src/Ting/Cache/Cache.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Cache\\\\CacheInterface\\:\\:setLogger\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Cache/CacheInterface.php + + - + message: "#^Cannot call method master\\(\\) on CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\|null\\.$#" + count: 1 + path: src/Ting/Connection.php + + - + message: "#^Cannot call method slave\\(\\) on CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\|null\\.$#" + count: 1 + path: src/Ting/Connection.php + + - + message: "#^Result of \\|\\| is always false\\.$#" + count: 1 + path: src/Ting/Connection.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and null will always evaluate to false\\.$#" + count: 2 + path: src/Ting/Connection.php + + - + message: "#^Call to an undefined method object\\:\\:connect\\(\\)\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Call to an undefined method object\\:\\:setLogger\\(\\)\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Cannot call method setTimezone\\(\\) on class\\-string\\|object\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:closeAll\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:connect\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:setConfig\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:setConfig\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:setDatabaseOptions\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:setDatabaseOptions\\(\\) has parameter \\$options with no type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:\\$connectionConfig type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:\\$connectionSlaves type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:\\$connections type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\ConnectionPool\\:\\:\\$databaseOptions type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPool.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\:\\:closeAll\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPoolInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\:\\:setConfig\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPoolInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\:\\:setConfig\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/ConnectionPoolInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\:\\:setDatabaseOptions\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPoolInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ConnectionPoolInterface\\:\\:setDatabaseOptions\\(\\) has parameter \\$options with no type specified\\.$#" + count: 1 + path: src/Ting/ConnectionPoolInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ContainerInterface\\:\\:get\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ContainerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ContainerInterface\\:\\:get\\(\\) has parameter \\$id with no type specified\\.$#" + count: 1 + path: src/Ting/ContainerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ContainerInterface\\:\\:has\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/ContainerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\ContainerInterface\\:\\:has\\(\\) has parameter \\$id with no type specified\\.$#" + count: 1 + path: src/Ting/ContainerInterface.php + + - + message: "#^Class CCMBenchmark\\\\Ting\\\\Driver\\\\CacheResult implements generic interface CCMBenchmark\\\\Ting\\\\Driver\\\\ResultInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/CacheResult.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:closeStatement\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:closeStatement\\(\\) has parameter \\$statement with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:commit\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:escapeField\\(\\) has parameter \\$field with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:execute\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:getConnectionKey\\(\\) has parameter \\$connectionConfig with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:ifIsError\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:ifIsNotConnected\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:rollback\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:setDatabase\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:setLogger\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:setTimezone\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:setTimezone\\(\\) has parameter \\$timezone with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:startTransaction\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/DriverInterface.php + + - + message: "#^Cannot access property \\$affected_rows on mysqli\\|null\\.$#" + count: 2 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot access property \\$errno on mysqli\\|null\\.$#" + count: 3 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot access property \\$error on mysqli\\|null\\.$#" + count: 6 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot access property \\$insert_id on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot access property \\$report_mode on object\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method begin_transaction\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method close\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method commit\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method ping\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method prepare\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method query\\(\\) on mysqli\\|null\\.$#" + count: 3 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method real_connect\\(\\) on mysqli\\|null\\.$#" + count: 2 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method real_escape_string\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method rollback\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method select_db\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Cannot call method set_charset\\(\\) on mysqli\\|null\\.$#" + count: 2 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:closeStatement\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:closeStatement\\(\\) has parameter \\$statement with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:commit\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:escapeField\\(\\) has parameter \\$field with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:execute\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:getAffectedRows\\(\\) should return int but returns int\\<0, max\\>\\|string\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:getConnectionKey\\(\\) has parameter \\$connectionConfig with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:rollback\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:setCollectionWithResult\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:setCollectionWithResult\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:setLogger\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:setTimezone\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:setTimezone\\(\\) has parameter \\$timezone with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:startTransaction\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#1 \\$database of method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:setDatabase\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#1 \\$driverStatement of class CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement constructor expects object, mysqli_stmt\\|false given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#1 \\$object of function spl_object_hash expects object, mysqli_stmt\\|false given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#1 \\$resultData of method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:setCollectionWithResult\\(\\) expects object, mysqli_result\\|true given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, Closure\\(mixed\\)\\: mixed given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#3 \\$subject of function str_replace expects array\\|string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Parameter \\#4 \\$database of class CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement constructor expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:\\$connection \\(mysqli\\|null\\) does not accept mysqli\\|false\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:\\$connection \\(mysqli\\|null\\) does not accept object\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:\\$connectionConfig type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Driver\\:\\:\\$preparedQueries type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Driver.php + + - + message: "#^Call to an undefined method object\\:\\:fetch_fields\\(\\)\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Class CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result implements generic interface CCMBenchmark\\\\Ting\\\\Driver\\\\ResultInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:dataSeek\\(\\) has parameter \\$offset with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:format\\(\\) has parameter \\$data with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:format\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:\\$connectionName has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:\\$database has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:\\$fields has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:\\$iteratorCurrent has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:\\$iteratorOffset has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Result\\:\\:\\$result has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Serializer\\\\Boolean\\:\\:serialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Serializer/Boolean.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Serializer\\\\Boolean\\:\\:unserialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Serializer/Boolean.php + + - + message: "#^Return type \\(int\\|null\\) of method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Serializer\\\\Boolean\\:\\:serialize\\(\\) should be compatible with return type \\(string\\) of method CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializeInterface\\:\\:serialize\\(\\)$#" + count: 2 + path: src/Ting/Driver/Mysqli/Serializer/Boolean.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and 0 will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Serializer/Boolean.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and 1 will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Serializer/Boolean.php + + - + message: "#^Cannot access property \\$errno on mixed\\.$#" + count: 2 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Cannot access property \\$error on mixed\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Cannot call method bind_param\\(\\) on mixed\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Cannot call method close\\(\\) on mixed\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Cannot call method execute\\(\\) on mixed\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Cannot call method get_result\\(\\) on mixed\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:__construct\\(\\) has parameter \\$paramsOrder with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:close\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:execute\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:execute\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:setCollectionWithResult\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Parameter \\#1 \\$array of function array_keys expects array, array\\|null given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Parameter \\#1 \\$object of function spl_object_hash expects object, mixed given\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Mysqli\\\\Statement\\:\\:\\$paramsOrder type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Mysqli/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:closeStatement\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:closeStatement\\(\\) has parameter \\$statement with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:commit\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:convertParameters\\(\\) has parameter \\$sql with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:convertParameters\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:escapeField\\(\\) has parameter \\$field with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:execute\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:getConnectionKey\\(\\) has parameter \\$connectionConfig with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:getInsertedIdForSequence\\(\\) has parameter \\$sequenceName with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:ifIsError\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:ifIsNotConnected\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:rollback\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:setCollectionWithResult\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:setCollectionWithResult\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:setLogger\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:setTimezone\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:setTimezone\\(\\) has parameter \\$timezone with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:startTransaction\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Parameter \\#1 \\$result of method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:setResult\\(\\) expects object, PgSql\\\\Result\\|resource given\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Parameter \\#1 \\$statementName of class CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement constructor expects object, string given\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Driver\\:\\:\\$preparedQueries type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Driver.php + + - + message: "#^Argument of an invalid type array\\\\|false supplied for foreach, only iterables are supported\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Cannot access offset int on array\\\\|false\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Class CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result implements generic interface CCMBenchmark\\\\Ting\\\\Driver\\\\ResultInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:format\\(\\) has parameter \\$data with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:format\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:setQuery\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:setQuery\\(\\) has parameter \\$query with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:unescapeField\\(\\) has parameter \\$field with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Offset 'table' does not exist on array\\{complex\\: bool, column\\: string, table\\?\\: string, alias\\?\\: string\\}\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Parameter \\#1 \\$string of function strtolower expects string, int\\|string\\|false given\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, array\\\\|false given\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:\\$connectionName has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:\\$database has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:\\$fields has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:\\$iteratorCurrent has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:\\$iteratorOffset has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:\\$result has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Result of \\|\\| is always true\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Result.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Serializer\\\\Boolean\\:\\:serialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Serializer/Boolean.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Serializer\\\\Boolean\\:\\:unserialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Serializer/Boolean.php + + - + message: "#^Cannot call method set\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface\\|null\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:__construct\\(\\) has parameter \\$paramsOrder with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:close\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:execute\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:setCollectionWithResult\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:setCollectionWithResult\\(\\) has parameter \\$resultResource with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:setConnection\\(\\) has parameter \\$connection with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:setQuery\\(\\) has parameter \\$query with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:\\$connection has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:\\$paramsOrder has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:\\$query has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:\\$queryType has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement\\:\\:\\$statementName has no type specified\\.$#" + count: 1 + path: src/Ting/Driver/Pgsql/Statement.php + + - + message: "#^Cannot call method real_escape_string\\(\\) on mysqli\\|null\\.$#" + count: 1 + path: src/Ting/Driver/SphinxQL/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\SphinxQL\\\\Driver\\:\\:escapeField\\(\\) has parameter \\$field with no type specified\\.$#" + count: 1 + path: src/Ting/Driver/SphinxQL/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\SphinxQL\\\\Driver\\:\\:quoteValue\\(\\) should return string but returns float\\|int\\.$#" + count: 1 + path: src/Ting/Driver/SphinxQL/Driver.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 2 + path: src/Ting/Driver/SphinxQL/Driver.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\StatementInterface\\:\\:__construct\\(\\) has parameter \\$paramsOrder with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/StatementInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\StatementInterface\\:\\:execute\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Driver/StatementInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Driver\\\\StatementInterface\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Driver/StatementInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\CacheLoggerInterface\\:\\:startOperation\\(\\) has parameter \\$keys with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/CacheLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\CacheLoggerInterface\\:\\:startOperation\\(\\) has parameter \\$operation with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/CacheLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\CacheLoggerInterface\\:\\:stopOperation\\(\\) has parameter \\$miss with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/CacheLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:addConnection\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:addConnection\\(\\) has parameter \\$connection with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:addConnection\\(\\) has parameter \\$connectionConfig with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:addConnection\\(\\) has parameter \\$name with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startPrepare\\(\\) has parameter \\$connection with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startPrepare\\(\\) has parameter \\$database with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startPrepare\\(\\) has parameter \\$sql with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startQuery\\(\\) has parameter \\$connection with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startQuery\\(\\) has parameter \\$database with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startQuery\\(\\) has parameter \\$params with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startQuery\\(\\) has parameter \\$sql with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startStatementExecute\\(\\) has parameter \\$params with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:startStatementExecute\\(\\) has parameter \\$statement with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:stopPrepare\\(\\) has parameter \\$statement with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Logger\\\\DriverLoggerInterface\\:\\:stopStatementExecute\\(\\) has parameter \\$statement with no type specified\\.$#" + count: 1 + path: src/Ting/Logger/DriverLoggerInterface.php + + - + message: "#^Argument of an invalid type array\\\\|false supplied for foreach, only iterables are supported\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Else branch is unreachable because previous condition is always true\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:addMetadata\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:batchLoadMetadata\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:batchLoadMetadata\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:batchLoadMetadataFromCache\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:batchLoadMetadataFromCache\\(\\) has parameter \\$paths with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:batchLoadMetadataFromCache\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:findMetadataForEntity\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:findMetadataForRepository\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:findMetadataForTable\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:getAllEntities\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:getOptionForRepository\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:getOptionForRepository\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^PHPDoc tag @var for variable \\$metadata contains generic class CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata but does not specify its types\\: T$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Parameter \\#1 \\$repositoryClass of method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:addMetadata\\(\\) expects class\\-string\\\\>, \\(int\\|string\\) given\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Parameter \\#1 \\$serializerFactory of static method CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataInitializer\\:\\:initMetadata\\(\\) expects CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializerFactoryInterface, CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializerFactoryInterface\\|null given\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:\\$entityToRepository type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:\\$metadataList with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata does not specify its types\\: T$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:\\$tableWithConnectionToMetadata type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Trying to invoke \\(Closure\\(\\)\\: void\\)\\|null but it might not be a callable\\.$#" + count: 1 + path: src/Ting/MetadataRepository.php + + - + message: "#^Cannot call method get\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Cannot call method master\\(\\) on CCMBenchmark\\\\Ting\\\\Connection\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Cannot call method save\\(\\) on Doctrine\\\\Common\\\\Cache\\\\Cache\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Cannot call method slave\\(\\) on CCMBenchmark\\\\Ting\\\\Connection\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\PreparedQuery\\:\\:query\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\PreparedQuery\\:\\:query\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Parameter \\#1 \\$key of method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:checkCache\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Parameter \\#1 \\$sql of method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:prepare\\(\\) expects string, string\\|null given\\.$#" + count: 2 + path: src/Ting/Query/Cached/PreparedQuery.php + + - + message: "#^Cannot call method fetch\\(\\) on Doctrine\\\\Common\\\\Cache\\\\Cache\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Cannot call method get\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Cannot call method save\\(\\) on Doctrine\\\\Common\\\\Cache\\\\Cache\\|null\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:checkCache\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:checkTtl\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:query\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:query\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:setCacheKey\\(\\) has parameter \\$cacheKey with no type specified\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Parameter \\#1 \\$key of method CCMBenchmark\\\\Ting\\\\Query\\\\Cached\\\\Query\\:\\:checkCache\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Parameter \\#1 \\$result of method CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface\\\\:\\:fromCache\\(\\) expects array, mixed given\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and null will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Query/Cached/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:__construct\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:delete\\(\\) has parameter \\$primariesKeyValue with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:escapeFields\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:escapeFields\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:generateConditionAndParams\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:generateConditionAndParams\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:generateConditionAndParams\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:generateLimit\\(\\) has parameter \\$limit with no type specified\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:generateOrder\\(\\) has parameter \\$orderList with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getAll\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteria\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteria\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteriaWithOrderAndLimit\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteriaWithOrderAndLimit\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteriaWithOrderAndLimit\\(\\) has parameter \\$forceMaster with no type specified\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteriaWithOrderAndLimit\\(\\) has parameter \\$limit with no type specified\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getByCriteriaWithOrderAndLimit\\(\\) has parameter \\$order with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getOneByCriteria\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getOneByCriteria\\(\\) has parameter \\$primariesValue with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getSelect\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getSqlAndParamsByCriteria\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:getSqlAndParamsByCriteria\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:insert\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:update\\(\\) has parameter \\$primariesValue with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:update\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:updateSQLWithOrderAndLimit\\(\\) has parameter \\$order with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:\\$fields has no type specified\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:\\$schemaName has no type specified\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Query\\\\Generator\\:\\:\\$tableName has no type specified\\.$#" + count: 1 + path: src/Ting/Query/Generator.php + + - + message: "#^Cannot call method get\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface\\|null\\.$#" + count: 1 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Cannot call method master\\(\\) on CCMBenchmark\\\\Ting\\\\Connection\\|null\\.$#" + count: 2 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Cannot call method slave\\(\\) on CCMBenchmark\\\\Ting\\\\Connection\\|null\\.$#" + count: 1 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\PreparedQuery\\:\\:getStatementName\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\PreparedQuery\\:\\:query\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\PreparedQuery\\:\\:query\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Parameter \\#1 \\$sql of method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:prepare\\(\\) expects string, string\\|null given\\.$#" + count: 3 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Parameter \\#1 \\$string of function sha1 expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Query/PreparedQuery.php + + - + message: "#^Cannot call method get\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface\\|null\\.$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Cannot call method master\\(\\) on CCMBenchmark\\\\Ting\\\\Connection\\|null\\.$#" + count: 4 + path: src/Ting/Query/Query.php + + - + message: "#^Cannot call method slave\\(\\) on CCMBenchmark\\\\Ting\\\\Connection\\|null\\.$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:__construct\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:__construct\\(\\) with return type void returns \\$this\\(CCMBenchmark\\\\Ting\\\\Query\\\\Query\\) but should not return anything\\.$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:query\\(\\) has parameter \\$collection with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:query\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:query\\(\\) should return CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface but returns mixed\\.$#" + count: 2 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:setParams\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Parameter \\#1 \\$sql of method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:execute\\(\\) expects string, string\\|null given\\.$#" + count: 3 + path: src/Ting/Query/Query.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:\\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Query\\\\Query\\:\\:\\$params type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/Query.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactory\\:\\:get\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactory\\:\\:getCached\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactory\\:\\:getCachedPrepared\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactory\\:\\:getPrepared\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactoryInterface\\:\\:get\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactoryInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactoryInterface\\:\\:getCached\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactoryInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactoryInterface\\:\\:getCachedPrepared\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactoryInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryFactoryInterface\\:\\:getPrepared\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryFactoryInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryInterface\\:\\:__construct\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Query/QueryInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Query\\\\QueryInterface\\:\\:setParams\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Query/QueryInterface.php + + - + message: "#^Cannot call method count\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\|null\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Cannot call method getIterator\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\|null\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Cannot call method setResult\\(\\) on CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\|null\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\:\\:first\\(\\) should return T but returns null\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\:\\:fromCache\\(\\) has parameter \\$result with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\:\\:getIterator\\(\\) should return Generator\\ but returns Traversable\\\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\:\\:toCache\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\\\:\\:\\$hydrator \\(CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\|null\\) does not accept CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorArray\\\\.$#" + count: 1 + path: src/Ting/Repository/Collection.php + + - + message: "#^Cannot clone CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\|null\\.$#" + count: 1 + path: src/Ting/Repository/CollectionFactory.php + + - + message: "#^Parameter \\#1 \\$metadataRepository of method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\:\\:setMetadataRepository\\(\\) expects CCMBenchmark\\\\Ting\\\\MetadataRepository, CCMBenchmark\\\\Ting\\\\MetadataRepository\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/CollectionFactory.php + + - + message: "#^Parameter \\#1 \\$unitOfWork of method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorInterface\\\\:\\:setUnitOfWork\\(\\) expects CCMBenchmark\\\\Ting\\\\UnitOfWork, CCMBenchmark\\\\Ting\\\\UnitOfWork\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/CollectionFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface\\:\\:fromCache\\(\\) has parameter \\$result with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/CollectionInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface\\:\\:toCache\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/CollectionInterface.php + + - + message: "#^Access to an undefined property CCMBenchmark\\\\Ting\\\\Entity\\\\NotifyPropertyInterface\\:\\:\\$tingUUID\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Cannot access property \\$tingUUID on mixed\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Generator expects value type stdClass\\|T, array\\ given\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:extractSchemaFromColumn\\(\\) has parameter \\$column with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:hasVirtualObject\\(\\) has parameter \\$result with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:hydrateColumns\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:hydrateColumns\\(\\) should return array\\ but returns array\\\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:manageIfYouCan\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:unserializeAliasWith\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Parameter \\#1 \\$connectionName of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Parameter \\#2 \\$database of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Parameter \\#3 \\$columns of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects array, T given\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$alreadyManaged has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$mapAliases has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$mapObjects has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$metadataList has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$objectDatabase has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$objectSchema has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$references has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$unserializeAliases has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\Aggregate\\:\\:\\$target has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator/Aggregate.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\Relation\\:\\:getSetter\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator/Relation.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\Relation\\:\\:getSource\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator/Relation.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\Relation\\:\\:getTarget\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Hydrator/Relation.php + + - + message: "#^Cannot access offset 'aggregate' on mixed\\.$#" + count: 1 + path: src/Ting/Repository/HydratorAggregator.php + + - + message: "#^Generator expects key type int, int\\|null given\\.$#" + count: 2 + path: src/Ting/Repository/HydratorAggregator.php + + - + message: "#^Parameter \\#1 \\$connectionName of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorAggregator.php + + - + message: "#^Parameter \\#2 \\$database of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorAggregator.php + + - + message: "#^Parameter \\#3 \\$columns of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects array, T given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorAggregator.php + + - + message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Cannot access offset 'name' on mixed\\.$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Cannot access offset 'value' on mixed\\.$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Generator expects value type T, array\\ given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorArray\\:\\:\\$metadataRepository has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorArray\\:\\:\\$result with generic interface CCMBenchmark\\\\Ting\\\\Driver\\\\ResultInterface does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorArray\\:\\:\\$unitOfWork has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/HydratorArray.php + + - + message: "#^Cannot access offset 'source' on mixed\\.$#" + count: 5 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Cannot access offset 'target' on mixed\\.$#" + count: 4 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:addRelation\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:assignResourcesToReferences\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:resolveDependencies\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:saveResourceFor\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:saveResourceFor\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:saveSourceReference\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:saveSourceReference\\(\\) has parameter \\$result with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:saveTargetReference\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:saveTargetReference\\(\\) has parameter \\$result with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Parameter \\#1 \\$config of method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\\\:\\:saveResourceFor\\(\\) expects array, mixed given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Parameter \\#1 \\$config of method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\\\:\\:saveSourceReference\\(\\) expects array, mixed given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Parameter \\#1 \\$config of method CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\\\:\\:saveTargetReference\\(\\) expects array, mixed given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Parameter \\#1 \\$connectionName of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 2 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Parameter \\#2 \\$database of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 2 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Parameter \\#3 \\$columns of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects array, T given\\.$#" + count: 2 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:\\$config with generic class SplDoublyLinkedList does not specify its types\\: TValue$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:\\$referencesRelation type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorRelational\\:\\:\\$resources type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Variable \\$keyTarget might not be defined\\.$#" + count: 2 + path: src/Ting/Repository/HydratorRelational.php + + - + message: "#^Generator expects value type T, stdClass\\|T\\|false given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorSingleObject.php + + - + message: "#^Parameter \\#1 \\$connectionName of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorSingleObject.php + + - + message: "#^Parameter \\#2 \\$database of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorSingleObject.php + + - + message: "#^Parameter \\#3 \\$columns of method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\\\:\\:hydrateColumns\\(\\) expects array, T given\\.$#" + count: 1 + path: src/Ting/Repository/HydratorSingleObject.php + + - + message: "#^Cannot call method get\\(\\) on CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializerFactoryInterface\\|null\\.$#" + count: 2 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:generateQueryForDelete\\(\\) has parameter \\$entity with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:generateQueryForDelete\\(\\) has parameter \\$properties with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:generateQueryForInsert\\(\\) has parameter \\$entity with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:generateQueryForUpdate\\(\\) has parameter \\$entity with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:generateQueryForUpdate\\(\\) has parameter \\$properties with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getAll\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getAll\\(\\) should return CCMBenchmark\\\\Ting\\\\Query\\\\Query but returns CCMBenchmark\\\\Ting\\\\Query\\\\QueryInterface\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getByCriteria\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getByCriteria\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getByPrimaries\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getByPrimaries\\(\\) has parameter \\$forceMaster with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getByPrimaries\\(\\) has parameter \\$primariesKeyValue with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getColumnsFromCriteria\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getColumnsFromCriteria\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getEntity\\(\\) should return class\\-string\\ but returns class\\-string\\\\|null\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getEntityProperty\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getGetter\\(\\) has parameter \\$fieldName with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getOneByCriteria\\(\\) has parameter \\$collectionFactory with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactoryInterface but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getOneByCriteria\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getOneByCriteria\\(\\) has parameter \\$forceMaster with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getPrimaries\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getPrimariesKeyValuesAsArray\\(\\) has parameter \\$originalValue with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getPrimariesKeyValuesAsArray\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getPrimariesKeyValuesByProperties\\(\\) has parameter \\$entity with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getPrimariesKeyValuesByProperties\\(\\) has parameter \\$properties with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getPrimariesKeyValuesByProperties\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getRepository\\(\\) should return class\\-string\\\\> but returns class\\-string\\\\>\\|null\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:getSetter\\(\\) has parameter \\$fieldName with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:hasColumn\\(\\) has parameter \\$column with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:setEntityProperty\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:setEntityProperty\\(\\) has parameter \\$column with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:setEntityProperty\\(\\) has parameter \\$entity with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:setEntityProperty\\(\\) has parameter \\$value with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Offset 'columnName' on array\\{fieldName\\: string, columnName\\: string, type\\: string, primary\\?\\: bool, autoincrement\\?\\: bool, serializer\\?\\: class\\-string\\, serializer_options\\?\\: array\\{serialize\\?\\: array, unserialize\\?\\: array\\}\\} in isset\\(\\) always exists and is not nullable\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Offset 'fieldName' on array\\{fieldName\\: string, columnName\\: string, type\\: string, primary\\?\\: bool, autoincrement\\?\\: bool, serializer\\?\\: class\\-string\\, serializer_options\\?\\: array\\{serialize\\?\\: array, unserialize\\?\\: array\\}\\} in isset\\(\\) always exists and is not nullable\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Offset 'getter' on array\\{fieldName\\: string, columnName\\: string, type\\: string, primary\\?\\: bool, autoincrement\\?\\: bool, serializer\\?\\: class\\-string\\, serializer_options\\?\\: array\\{serialize\\?\\: array, unserialize\\?\\: array\\}\\} in isset\\(\\) does not exist\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Offset 'setter' on array\\{fieldName\\: string, columnName\\: string, type\\: string, primary\\?\\: bool, autoincrement\\?\\: bool, serializer\\?\\: class\\-string\\, serializer_options\\?\\: array\\{serialize\\?\\: array, unserialize\\?\\: array\\}\\} in isset\\(\\) does not exist\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Offset 'type' on array\\{fieldName\\: string, columnName\\: string, type\\: string, primary\\?\\: bool, autoincrement\\?\\: bool, serializer\\?\\: class\\-string\\, serializer_options\\?\\: array\\{serialize\\?\\: array, unserialize\\?\\: array\\}\\} in isset\\(\\) always exists and is not nullable\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^PHPDoc tag @throws has invalid value \\(\\)\\: Unexpected token \"\\\\n \\*\", expected type at offset 188$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$autoincrement has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$connectionName has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$databaseName has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$defaultSerializers has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$primaries has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$schemaName has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\:\\:\\$table has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Strict comparison using \\=\\=\\= between false and true will always evaluate to false\\.$#" + count: 2 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Strict comparison using \\=\\=\\= between true and false will always evaluate to false\\.$#" + count: 3 + path: src/Ting/Repository/Metadata.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataCacheGenerator\\:\\:createCache\\(\\) has parameter \\$repositories with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/MetadataCacheGenerator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataCacheGenerator\\:\\:getFileName\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/MetadataCacheGenerator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataCacheGenerator\\:\\:\\$cacheDir has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/MetadataCacheGenerator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataCacheGenerator\\:\\:\\$filename has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/MetadataCacheGenerator.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataCacheGenerator\\:\\:\\$template has no type specified\\.$#" + count: 1 + path: src/Ting/Repository/MetadataCacheGenerator.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataInitializer\\:\\:initMetadata\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/MetadataInitializer.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\MetadataInitializer\\:\\:initMetadata\\(\\) return type with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/MetadataInitializer.php + + - + message: "#^Call to an undefined method Traversable\\\\:\\:current\\(\\)\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Constructor of class CCMBenchmark\\\\Ting\\\\Repository\\\\Repository has an unused parameter \\$serializerFactory\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:__construct\\(\\) has parameter \\$collectionFactory with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactory but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:delete\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:get\\(\\) has parameter \\$primariesKeyValue with no type specified\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:getBy\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:getCollection\\(\\) should return CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\ but returns CCMBenchmark\\\\Ting\\\\Repository\\\\Collection\\\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:getOneBy\\(\\) has parameter \\$criteria with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:ping\\(\\) should return bool but returns null\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:pingMaster\\(\\) should return bool but returns null\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:save\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Parameter \\#1 \\$array of function reset expects array\\|object, mixed given\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Parameter \\#1 \\$entity of method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:pushDelete\\(\\) expects CCMBenchmark\\\\Ting\\\\Entity\\\\NotifyPropertyInterface, T given\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Parameter \\#1 \\$entity of method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:pushSave\\(\\) expects CCMBenchmark\\\\Ting\\\\Entity\\\\NotifyPropertyInterface, T given\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Parameter \\#1 \\$repositoryClass of method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:addMetadata\\(\\) expects class\\-string\\\\>, class\\-string\\\\> given\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Parameter \\#1 \\$repositoryName of method CCMBenchmark\\\\Ting\\\\MetadataRepository\\:\\:findMetadataForRepository\\(\\) expects class\\-string\\\\>, class\\-string\\\\> given\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:\\$collectionFactory with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactory does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\:\\:\\$metadata with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Result of method CCMBenchmark\\\\Ting\\\\Driver\\\\DriverInterface\\:\\:ping\\(\\) \\(void\\) is used\\.$#" + count: 2 + path: src/Ting/Repository/Repository.php + + - + message: "#^Type mixed in generic type CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\ in PHPDoc tag @return is not subtype of template type T of object of class CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\.$#" + count: 1 + path: src/Ting/Repository/Repository.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\RepositoryFactory\\:\\:__construct\\(\\) has parameter \\$collectionFactory with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactory but does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/RepositoryFactory.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\RepositoryFactory\\:\\:\\$collection with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\Collection does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/RepositoryFactory.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\RepositoryFactory\\:\\:\\$collectionFactory with generic class CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionFactory does not specify its types\\: T$#" + count: 1 + path: src/Ting/Repository/RepositoryFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\DateTime\\:\\:serialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/DateTime.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\DateTime\\:\\:unserialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/DateTime.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Serializer\\\\DateTime\\:\\:\\$defaultOptions type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/DateTime.php + + - + message: "#^Strict comparison using \\=\\=\\= between DateTime and null will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Serializer/DateTime.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and null will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Serializer/DateTime.php + + - + message: "#^Strict comparison using \\=\\=\\= between true and false will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Serializer/DateTime.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\Ip\\:\\:serialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\Ip\\:\\:unserialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\Ip\\:\\:unserialize\\(\\) should return string\\|null but returns string\\|false\\.$#" + count: 1 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Parameter \\#1 \\$serialized \\(int\\) of method CCMBenchmark\\\\Ting\\\\Serializer\\\\Ip\\:\\:unserialize\\(\\) should be compatible with parameter \\$serialized \\(string\\) of method CCMBenchmark\\\\Ting\\\\Serializer\\\\UnserializeInterface\\:\\:unserialize\\(\\)$#" + count: 2 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Return type \\(int\\|null\\) of method CCMBenchmark\\\\Ting\\\\Serializer\\\\Ip\\:\\:serialize\\(\\) should be compatible with return type \\(string\\) of method CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializeInterface\\:\\:serialize\\(\\)$#" + count: 2 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Strict comparison using \\=\\=\\= between int and null will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and null will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Serializer/Ip.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\Json\\:\\:serialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/Json.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\Json\\:\\:serialize\\(\\) should return string\\|null but returns string\\|false\\.$#" + count: 1 + path: src/Ting/Serializer/Json.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\Json\\:\\:unserialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/Json.php + + - + message: "#^Strict comparison using \\=\\=\\= between string and null will always evaluate to false\\.$#" + count: 1 + path: src/Ting/Serializer/Json.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializeInterface\\:\\:serialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/SerializeInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializerFactory\\:\\:get\\(\\) should return CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializerInterface but returns object\\.$#" + count: 1 + path: src/Ting/Serializer/SerializerFactory.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Serializer\\\\SerializerFactory\\:\\:\\$serializers \\(array\\\\) does not accept array\\\\.$#" + count: 1 + path: src/Ting/Serializer/SerializerFactory.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Serializer\\\\UnserializeInterface\\:\\:unserialize\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Serializer/UnserializeInterface.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:get\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:get\\(\\) has parameter \\$id with no type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:get\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:has\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:has\\(\\) has parameter \\$id with no type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:set\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:set\\(\\) has parameter \\$factory with no type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Services\\:\\:set\\(\\) has parameter \\$id with no type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Services\\:\\:\\$container has no type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\Services\\:\\:\\$serviceOptions has no type specified\\.$#" + count: 1 + path: src/Ting/Services.php + + - + message: "#^Access to an undefined property CCMBenchmark\\\\Ting\\\\Entity\\\\NotifyPropertyInterface\\:\\:\\$tingUUID\\.$#" + count: 4 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:addStatementToClose\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:addStatementToClose\\(\\) has parameter \\$statementName with no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:detach\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:detachAll\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:manage\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:process\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processDelete\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processDelete\\(\\) has parameter \\$uuid with no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processManaged\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processManaged\\(\\) has parameter \\$uuid with no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processNew\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processNew\\(\\) has parameter \\$uuid with no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Parameter \\#1 \\$prefix of function uniqid expects string, int\\<0, max\\> given\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$connectionPool has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$entities has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$entitiesChanged has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$entitiesShouldBePersisted has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$metadataRepository has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$queryFactory has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$statements has no type specified\\.$#" + count: 1 + path: src/Ting/UnitOfWork.php + + - + message: "#^Method CCMBenchmark\\\\Ting\\\\Util\\\\Debug\\:\\:dump\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Ting/Util/Debug.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 00000000..eada0f40 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,7 @@ +includes: + - phpstan-baseline.neon + +parameters: + level: max + paths: + - src/ \ No newline at end of file From aabf47301e659d9eae7160ccc2b8f84719d6f20f Mon Sep 17 00:00:00 2001 From: Victor GREBOT Date: Thu, 21 Mar 2024 19:57:18 +0100 Subject: [PATCH 2/3] fix: typing issues (phpstan) --- phpstan-baseline.neon | 90 -------------------------------- src/Ting/Driver/CacheResult.php | 2 +- src/Ting/Repository/Hydrator.php | 1 + src/Ting/UnitOfWork.php | 1 + 4 files changed, 3 insertions(+), 91 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 4c439858..4bcb70cc 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1575,16 +1575,6 @@ parameters: count: 1 path: src/Ting/Repository/CollectionInterface.php - - - message: "#^Access to an undefined property CCMBenchmark\\\\Ting\\\\Entity\\\\NotifyPropertyInterface\\:\\:\\$tingUUID\\.$#" - count: 1 - path: src/Ting/Repository/Hydrator.php - - - - message: "#^Cannot access property \\$tingUUID on mixed\\.$#" - count: 1 - path: src/Ting/Repository/Hydrator.php - - message: "#^Generator expects value type stdClass\\|T, array\\ given\\.$#" count: 1 @@ -1635,11 +1625,6 @@ parameters: count: 1 path: src/Ting/Repository/Hydrator.php - - - message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$alreadyManaged has no type specified\\.$#" - count: 1 - path: src/Ting/Repository/Hydrator.php - - message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:\\$mapAliases has no type specified\\.$#" count: 1 @@ -2430,71 +2415,11 @@ parameters: count: 1 path: src/Ting/Services.php - - - message: "#^Access to an undefined property CCMBenchmark\\\\Ting\\\\Entity\\\\NotifyPropertyInterface\\:\\:\\$tingUUID\\.$#" - count: 4 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:addStatementToClose\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:addStatementToClose\\(\\) has parameter \\$statementName with no type specified\\.$#" count: 1 path: src/Ting/UnitOfWork.php - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:detach\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:detachAll\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:manage\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:process\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processDelete\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processDelete\\(\\) has parameter \\$uuid with no type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processManaged\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processManaged\\(\\) has parameter \\$uuid with no type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processNew\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Method CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:processNew\\(\\) has parameter \\$uuid with no type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - message: "#^Parameter \\#1 \\$prefix of function uniqid expects string, int\\<0, max\\> given\\.$#" count: 1 @@ -2505,21 +2430,6 @@ parameters: count: 1 path: src/Ting/UnitOfWork.php - - - message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$entities has no type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$entitiesChanged has no type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - - - message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$entitiesShouldBePersisted has no type specified\\.$#" - count: 1 - path: src/Ting/UnitOfWork.php - - message: "#^Property CCMBenchmark\\\\Ting\\\\UnitOfWork\\:\\:\\$metadataRepository has no type specified\\.$#" count: 1 diff --git a/src/Ting/Driver/CacheResult.php b/src/Ting/Driver/CacheResult.php index 48a78d95..035ddfd7 100644 --- a/src/Ting/Driver/CacheResult.php +++ b/src/Ting/Driver/CacheResult.php @@ -38,7 +38,7 @@ class CacheResult implements ResultInterface protected $database = null; /** - * @var \Iterator|null + * @var (\Iterator&\Traversable)|null */ protected $result = null; diff --git a/src/Ting/Repository/Hydrator.php b/src/Ting/Repository/Hydrator.php index 9f2c3db7..751399f1 100644 --- a/src/Ting/Repository/Hydrator.php +++ b/src/Ting/Repository/Hydrator.php @@ -46,6 +46,7 @@ class Hydrator implements HydratorInterface protected $objectDatabase = []; protected $objectSchema = []; protected $unserializeAliases = []; + /** @var WeakMap */ protected WeakMap $alreadyManaged; protected $references = []; protected $metadataList = []; diff --git a/src/Ting/UnitOfWork.php b/src/Ting/UnitOfWork.php index 176c6d34..afc9c19b 100644 --- a/src/Ting/UnitOfWork.php +++ b/src/Ting/UnitOfWork.php @@ -42,6 +42,7 @@ class UnitOfWork implements PropertyListenerInterface protected $metadataRepository = null; protected $queryFactory = null; protected WeakMap $entities; + /** @var WeakMap>> */ protected WeakMap $entitiesChanged; protected WeakMap $entitiesShouldBePersisted; protected $statements = []; From ca0bfccdfbdab548e02badf6eace31fb9da2d6ca Mon Sep 17 00:00:00 2001 From: Victor GREBOT Date: Thu, 21 Mar 2024 21:06:33 +0100 Subject: [PATCH 3/3] fix: phpstan --- phpstan-baseline.neon | 15 --------- src/Ting/Driver/CacheResult.php | 4 +-- src/Ting/Driver/Pgsql/Driver.php | 55 +++++++++++++++++++++++++++----- src/Ting/UnitOfWork.php | 4 ++- 4 files changed, 52 insertions(+), 26 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 4bcb70cc..3e1b2b93 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -705,11 +705,6 @@ parameters: count: 1 path: src/Ting/Driver/Pgsql/Driver.php - - - message: "#^Parameter \\#1 \\$result of method CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Result\\:\\:setResult\\(\\) expects object, PgSql\\\\Result\\|resource given\\.$#" - count: 1 - path: src/Ting/Driver/Pgsql/Driver.php - - message: "#^Parameter \\#1 \\$statementName of class CCMBenchmark\\\\Ting\\\\Driver\\\\Pgsql\\\\Statement constructor expects object, string given\\.$#" count: 1 @@ -1595,11 +1590,6 @@ parameters: count: 1 path: src/Ting/Repository/Hydrator.php - - - message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:hydrateColumns\\(\\) should return array\\ but returns array\\\\.$#" - count: 1 - path: src/Ting/Repository/Hydrator.php - - message: "#^Method CCMBenchmark\\\\Ting\\\\Repository\\\\Hydrator\\:\\:manageIfYouCan\\(\\) has no return type specified\\.$#" count: 1 @@ -1720,11 +1710,6 @@ parameters: count: 1 path: src/Ting/Repository/HydratorArray.php - - - message: "#^Generator expects value type T, array\\ given\\.$#" - count: 1 - path: src/Ting/Repository/HydratorArray.php - - message: "#^Property CCMBenchmark\\\\Ting\\\\Repository\\\\HydratorArray\\:\\:\\$metadataRepository has no type specified\\.$#" count: 1 diff --git a/src/Ting/Driver/CacheResult.php b/src/Ting/Driver/CacheResult.php index 035ddfd7..1adf8f30 100644 --- a/src/Ting/Driver/CacheResult.php +++ b/src/Ting/Driver/CacheResult.php @@ -38,7 +38,7 @@ class CacheResult implements ResultInterface protected $database = null; /** - * @var (\Iterator&\Traversable)|null + * @var \Iterator|null */ protected $result = null; @@ -158,6 +158,6 @@ public function valid() */ public function getNumRows() { - return iterator_count($this->result); + return $this->result !== null ? iterator_count($this->result) : 0; } } diff --git a/src/Ting/Driver/Pgsql/Driver.php b/src/Ting/Driver/Pgsql/Driver.php index 34e8c48b..51e29c65 100755 --- a/src/Ting/Driver/Pgsql/Driver.php +++ b/src/Ting/Driver/Pgsql/Driver.php @@ -58,7 +58,7 @@ class Driver implements DriverInterface protected $currentTimezone = null; /** - * @var resource|null|\PgSql\Connection pgsql + * @var \PgSql\Connection|null */ protected $connection = null; @@ -78,7 +78,7 @@ class Driver implements DriverInterface protected $objectHash = ''; /** - * @var resource|\PgSql\Result + * @var \PgSql\Result */ protected $result = null; @@ -147,7 +147,7 @@ public function setCharset($charset) return; } - if (pg_set_client_encoding($this->connection, $charset) === -1) { + if ($this->connection === null || pg_set_client_encoding($this->connection, $charset) === -1) { throw new DriverException('Can\'t set charset ' . $charset . ' (' . pg_last_error($this->connection) . ')'); } @@ -208,6 +208,10 @@ public function execute($originalSQL, array $params = array(), CollectionInterfa { list ($sql, $paramsOrder) = $this->convertParameters($originalSQL); + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } + $values = array(); foreach (array_keys($paramsOrder) as $key) { $values[] = &$params[$key]; @@ -218,18 +222,23 @@ public function execute($originalSQL, array $params = array(), CollectionInterfa } if ($values === []) { - $this->result = pg_query($this->connection, $sql); + $result = pg_query($this->connection, $sql); + if ($result === false) { + throw new QueryException(pg_last_error($this->connection) . ' (Query: ' . $sql . ')'); + } + $this->result = $result; } else { - $this->result = pg_query_params($this->connection, $sql, $values); + $result = pg_query_params($this->connection, $sql, $values); + if ($result === false) { + throw new QueryException(pg_last_error($this->connection) . ' (Query: ' . $sql . ')'); + } + $this->result = $result; } if ($this->logger !== null) { $this->logger->stopQuery(); } - if ($this->result === false) { - throw new QueryException(pg_last_error($this->connection) . ' (Query: ' . $sql . ')'); - } if ($collection === null) { $resultStatus = pg_result_status($this->result); @@ -284,6 +293,9 @@ public function prepare($originalSQL) $this->logger->startPrepare($originalSQL, $this->objectHash, $this->database); $statement->setLogger($this->logger); } + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } $result = pg_prepare($this->connection, $statementName, $sql); if ($this->logger !== null) { $this->logger->stopPrepare($statementName); @@ -382,6 +394,9 @@ public function startTransaction() if ($this->transactionOpened === true) { throw new TransactionException('Cannot start another transaction'); } + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } pg_query($this->connection, 'BEGIN'); $this->transactionOpened = true; } @@ -395,6 +410,9 @@ public function commit() if ($this->transactionOpened === false) { throw new TransactionException('Cannot commit no transaction'); } + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } pg_query($this->connection, 'COMMIT'); $this->transactionOpened = false; } @@ -408,6 +426,9 @@ public function rollback() if ($this->transactionOpened === false) { throw new TransactionException('Cannot rollback no transaction'); } + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } pg_query($this->connection, 'ROLLBACK'); $this->transactionOpened = false; } @@ -418,8 +439,17 @@ public function rollback() */ public function getInsertedId() { + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } $resultResource = pg_query($this->connection, 'SELECT lastval()'); + if ($resultResource === false) { + throw new DriverException('Could not fetch last inserted id.'); + } $row = pg_fetch_row($resultResource); + if ($row === false) { + throw new DriverException('Could not fetch last inserted id.'); + } return (int) $row[0]; } @@ -430,6 +460,9 @@ public function getInsertedId() */ public function getInsertedIdForSequence($sequenceName) { + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } $sql = "SELECT currval('$sequenceName')"; $resultResource = @pg_query($this->connection, $sql); @@ -438,6 +471,9 @@ public function getInsertedIdForSequence($sequenceName) } $row = pg_fetch_row($resultResource); + if ($row === false) { + throw new DriverException('Could not fetch last inserted id. Details: '. pg_last_error($this->connection)); + } return (int) $row[0]; } @@ -502,6 +538,9 @@ public function setTimezone($timezone) $value = 'DEFAULT'; $query = str_replace('"', '', $query); } + if ($this->connection === null) { + throw new DriverException('No active connection.'); + } pg_query($this->connection, sprintf($query, $value)); $this->currentTimezone = $timezone; } diff --git a/src/Ting/UnitOfWork.php b/src/Ting/UnitOfWork.php index afc9c19b..c3036136 100644 --- a/src/Ting/UnitOfWork.php +++ b/src/Ting/UnitOfWork.php @@ -41,9 +41,11 @@ class UnitOfWork implements PropertyListenerInterface protected $connectionPool = null; protected $metadataRepository = null; protected $queryFactory = null; + /** @var WeakMap */ protected WeakMap $entities; - /** @var WeakMap>> */ + /** @var WeakMap>> */ protected WeakMap $entitiesChanged; + /** @var WeakMap */ protected WeakMap $entitiesShouldBePersisted; protected $statements = [];