[ 
https://issues.apache.org/jira/browse/THRIFT-5978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Volodymyr Panivko reassigned THRIFT-5978:
-----------------------------------------

    Assignee: Volodymyr Panivko

> 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
>
> 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)

Reply via email to