Conversation
PHP's stubs declare `PDOStatement::setFetchMode(): true`, so the `bool` override was reported as an incompatible signature. Keep `bool` to stay compatible with PHP 8.0/8.1 (the `true` return type needs PHP 8.2) and mark the method with `#[\ReturnTypeWillChange]`, as the other overrides in this class already do. `universalSetFetchMode()` only ever returns `true`, which the phpdoc of both methods now states. Adds a regression test for `setFetchMode()`, which had no coverage.
rtm-ctrlz
force-pushed
the
fix/php8-pdoStatement-setFetchMode-return-type
branch
from
September 29, 2026 17:31
95b4fe5 to
00cd8e5
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PHP's stubs declare
PDOStatement::setFetchMode(): true, so thebooloverride inVimeo\MysqlEngine\Php8\FakePdoStatementis reported as an incompatible signature by IDEs and static analysis.The return type stays
bool— thetruereturn type would require PHP 8.2, whilePhp8\FakePdoStatementis loaded for every PHP 8.x (FakePdo::getFakePdo()only checksPHP_MAJOR_VERSION === 8) andcomposer.jsonstill allows^8.0. Instead the method is marked with#[\ReturnTypeWillChange], asexecute()andfetchObject()in the same class already are, and the phpdoc now states@return true(universalSetFetchMode()only ever returnstrue).Also adds a regression test:
setFetchMode()had no coverage at all.vendor/bin/phpunit: 176 tests, 263 assertions, OK (1 pre-existing skip inSelectParseTest::testBracketedFirstSelect).🤖 Generated with Claude Code