[
https://issues.apache.org/jira/browse/THRIFT-1209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18083625#comment-18083625
]
Volodymyr Panivko commented on THRIFT-1209:
-------------------------------------------
Correction to my earlier comment: the generator still emits non-namespaced
classes when the IDL does not declare `namespace php X` (see `emit_file_header`
at `compiler/cpp/src/thrift/generate/t_php_generator.cc:579`, which only emits
the `namespace` line when the suffix is non-empty). So the fix here is solely
the PHP minimum version bump to 8.1 (THRIFT-5956) — `public const GLOBAL = 1;`
is valid in PHP 7.1+ regardless of whether the surrounding class lives in a
namespace or in the global scope. The namespace work did not contribute to this
resolution. Still suggest closing as Fixed.
> PHP compiler generates syntax error when for enums containing constant
> "GLOBAL"
> -------------------------------------------------------------------------------
>
> Key: THRIFT-1209
> URL: https://issues.apache.org/jira/browse/THRIFT-1209
> Project: Thrift
> Issue Type: Bug
> Components: PHP - Compiler
> Affects Versions: 0.6.1
> Reporter: Nicholas Telford
> Priority: Major
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> Reported on IRC:
> If an interface calls for an enum that defines a constant that's an invalid
> identifier in PHP (e.g. "GLOBAL") the generated code contains a syntax error.
> Example, from the Hive Metastore Thrift interface:
> {code}
> enum HiveObjectType {
> GLOBAL = 1,
> DATABASE = 2,
> TABLE = 3,
> PARTITION = 4,
> COLUMN = 5,
> }
> {code}
> Generates the following PHP:
> {code}
> final class metastore_HiveObjectType {
> const GLOBAL = 1;
> const DATABASE = 2;
> const TABLE = 3;
> const PARTITION = 4;
> const COLUMN = 5;
> static public $__names = array(
> 1 => 'GLOBAL',
> 2 => 'DATABASE',
> 3 => 'TABLE',
> 4 => 'PARTITION',
> 5 => 'COLUMN',
> );
> }
> {code}
> I suggest we prefix enum constants to avoid this situation, although this
> would mean the interface didn't match.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)