[
https://issues.apache.org/jira/browse/THRIFT-5978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Volodymyr Panivko resolved THRIFT-5978.
---------------------------------------
Resolution: Fixed
> Apply declare(strict_types=1) in PHP runtime library
> ----------------------------------------------------
>
> Key: THRIFT-5978
> URL: https://issues.apache.org/jira/browse/THRIFT-5978
> Project: Thrift
> Issue Type: Sub-task
> Components: PHP - Library
> Reporter: Volodymyr Panivko
> Assignee: Volodymyr Panivko
> Priority: Minor
> Labels: pull-request-available
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Enable PHP strict typing across the PHP runtime library so the native
> parameter and property types added in THRIFT-5976 (properties) and
> THRIFT-5977 (constructor property promotion) are enforced at runtime, instead
> of being silently coerced.
> Without `declare(strict_types=1)` PHP coerces `"5"` to `5`, `0.5` to `0`,
> etc. — the type annotations become decorative and TypeError checks never fire.
> h2. Scope
> * Add `declare(strict_types=1);` between the license docblock and the
> namespace declaration in:
> ** All 52 PHP files under `lib/php/lib/`.
> ** All ~71 non-fixture PHP files under `lib/php/test/` (Unit + Integration +
> bootstrap).
> * Out of scope: `lib/php/test/Resources/packages/*` (generated fixtures —
> covered by a separate sub-ticket for regenerating with the PHP generator).
> * Out of scope: C-extension PHP wrapper under `lib/php/src/ext/`.
> h2. Risk
> Low. Pure additive change (no signature edits, no LSP cascade). PHP enforces
> strictness at the *caller* site, so loose-mode generated fixtures continue to
> call strict-mode lib code without a TypeError. Tests already pass without
> coercion, so no test fixes are expected.
> h2. Verification
> # `./vendor/bin/phpcs --report=summary` (0 errors)
> # `./vendor/bin/phpstan analyse -c lib/php/phpstan.neon --no-progress` (0
> errors)
> # `./vendor/bin/phpunit -c lib/php/phpunit.xml --testsuite="Thrift PHP Unit
> Test Suite" --no-coverage` (629 pass)
> # `./vendor/bin/phpunit -c lib/php/phpunit.xml --testsuite="Thrift PHP
> Integration Test Suite" --no-coverage` (106 pass)
> Part of the THRIFT-5960 umbrella effort to modernize the PHP library typing.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)