[
https://issues.apache.org/jira/browse/THRIFT-5980?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Volodymyr Panivko resolved THRIFT-5980.
---------------------------------------
Resolution: Fixed
> Add native method types to PHP Transport hierarchy
> --------------------------------------------------
>
> Key: THRIFT-5980
> URL: https://issues.apache.org/jira/browse/THRIFT-5980
> 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
>
> Continue the typing groundwork laid by THRIFT-5976 (properties), THRIFT-5977
> (constructor promotion), THRIFT-5978 (strict_types) and THRIFT-5979 (Server +
> Factory method types) by migrating the public methods on
> `lib/php/lib/Transport/` from PHPDoc-only annotations to native PHP parameter
> and return types.
> h2. Scope
> * `TTransport` abstract: isOpen(), open(), close(), read(), readAll(),
> write(), flush()
> * Concrete implementations (must update synchronously to satisfy LSP):
> ** TSocket
> ** TSSLSocket
> ** TSocketPool
> ** TBufferedTransport
> ** TFramedTransport
> ** TMemoryBuffer
> ** TNullTransport
> ** TPhpStream
> ** TCurlClient
> ** THttpClient
> * Update affected test mocks/fixtures to match the new contracts.
> h2. Out of scope
> * Protocol hierarchy method types — separate ticket (by-ref params, ~6
> concrete impls).
> * Exception hierarchy — separate ticket (bridge constructor with dual-mode
> signature).
> * Generator regen — separate ticket (G).
> h2. Risk
> Medium. TTransport is an abstract base with many concretes; method signatures
> must change atomically in one commit. Generated client/server code under
> `lib/php/test/Resources/packages/` and `test/php/gen-php-classmap/` calls
> these methods from loose-mode files, so loose-mode coercion at the call
> boundary will handle any scalar mismatches the typed contracts surface.
> Internal lib callers (Protocol classes, Factory, Server) are all already
> strict and pass through the typed values.
> 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` (636+ pass)
> # `./vendor/bin/phpunit -c lib/php/phpunit.xml --testsuite="Thrift PHP
> Integration Test Suite" --no-coverage` (106 pass)
> # Cross-test matrix (CI).
> Part of THRIFT-5960 umbrella to modernize PHP runtime library typing.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)