Volodymyr Panivko created THRIFT-5964:
-----------------------------------------
Summary: Emit native PHP 8.1 enums for Thrift enums (opt-in)
Key: THRIFT-5964
URL: https://issues.apache.org/jira/browse/THRIFT-5964
Project: Thrift
Issue Type: New Feature
Components: PHP - Compiler, PHP - Library
Affects Versions: 0.24.0
Reporter: Volodymyr Panivko
Assignee: Volodymyr Panivko
After lib/php/lib/ is fully typed, the C++ generator at
compiler/cpp/src/thrift/generate/t_php_generator.cc still emits PHP
without declare(strict_types=1), without native parameter or return
types, without typed properties. Generated structs work but look
archaic next to a fully-typed runtime library.
This ticket adds modern emission:
* declare(strict_types=1) at the top of every emitted file.
* Native return types on getName(), read(), write(),
constructor-from-array, validators.
* Native parameter types on read(TProtocol $input),
write(TProtocol $output), validators.
* Typed properties on struct fields where the Thrift type maps to a
PHP scalar or class (string, int, bool, float, array, ClassName,
nullable variants).
* Constructor property promotion is intentionally NOT used — Thrift
constructors do array-deserialization, not pure assignment.
* Add a new helper type_to_native_signature() in the generator
(alongside the existing type_to_phpdoc()).
* Regenerate all golden test fixtures.
This is a breaking change for downstream code that:
* Relied on PHP's loose-typing coercion on struct fields (e.g.,
assigning a string to an int field).
* Subclasses generated structs and overrides read/write with
different signatures.
Plain users that follow the documented Thrift IDL types continue to
work.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)