[ 
https://issues.apache.org/jira/browse/THRIFT-5963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18081257#comment-18081257
 ] 

Volodymyr Panivko commented on THRIFT-5963:
-------------------------------------------

Resolved by the generator-side pass of the THRIFT-5960 umbrella: THRIFT-5986 
(declare(strict_types=1) emission), THRIFT-5990 (return types on 
read/write/getName/jsonSerialize/validators), THRIFT-5991 (native types on 
properties + constructor), THRIFT-6004 (typed Client/Interface/Processor/Rest 
service-level methods). Generated PHP now carries full native typing for 
properties, constructors, and methods.

> Modernize C++ generator: typed properties and native return types
> -----------------------------------------------------------------
>
>                 Key: THRIFT-5963
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5963
>             Project: Thrift
>          Issue Type: New Feature
>          Components: PHP - Compiler, PHP - Library
>    Affects Versions: 0.24.0
>            Reporter: Volodymyr Panivko
>            Assignee: Volodymyr Panivko
>            Priority: Major
>
> 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)

Reply via email to