Hey internals, Is there any particular reason as to why constants cannot be typed? For example:
``` class Test { // this is illegal public const int TEST = 1; } ``` Having typed constants would be quite beneficial. First of all, we would obviously be more consistent with properties and functions ;) But also, we could ensure that the correct type is retained during inheritance. For example: ``` class Test { public const TEST = 0; } class Test2 extends Test { // this is legal (even though the type is different) public const TEST = 'abc'; } ``` ...but with typed constants, this would be possible: ``` class Test { // this is legal public const int TEST = 0; } class Test2 extends Test { // this is illegal since the type is not declared public const TEST = 'abc'; } class Test3 extends Test { // this is illegal since the type is not an integer public const string TEST = 'abc'; } class Test4 extends Test { // this is illegal since the value is not an integer public const int TEST = 'abc'; } class Test5 extends Test { // this is legal public const int TEST = 1; } ``` Moreover, even the PHP manual (e. g. https://www.php.net/manual/en/class.reflectionclass.php) and numerous RFCs (e. g. https://wiki.php.net/rfc/attribute_amendments) specify the type for constants. This may confuse newcomers since that is actually not allowed in PHP. I am prepared to do all of the hard work and implement this myself, if other internals also find this proposal a good idea. Best regards, Benas Seliuginas -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php