You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Volodymyr Panivko (Jira)" <ji...@apache.org> on 2026/05/11 17:44:00 UTC

[jira] [Created] (THRIFT-5980) Add native method types to PHP Transport hierarchy

Volodymyr Panivko created THRIFT-5980:
-----------------------------------------

             Summary: Add native method types to PHP Transport hierarchy
                 Key: THRIFT-5980
                 URL: https://issues.apache.org/jira/browse/THRIFT-5980
             Project: Thrift
          Issue Type: Improvement
          Components: PHP - Library
            Reporter: Volodymyr Panivko


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)