On 26-8-2026 21:42, [email protected] wrote:
Not readability -- unambiguity. Three concrete things, no jargon:

1. Two identifiers that look identical on screen are currently two
   different identifiers. $x and $x followed by U+00A0 NO-BREAK SPACE
   are separate variables. So are "a" plus a combining diaeresis and the
   single character U+00E4; both display as a-umlaut.

2. Text that is not valid UTF-8 at all is currently a valid identifier.
   ${"\xFF\xFE"} = 1; compiles.

3. Nobody can state what a PHP identifier is except by copying the byte
   class out of the scanner. The manual does exactly that, and so does
   PHP-Parser.

The declare says: in this file, an identifier is well-formed UTF-8, is a
Unicode identifier in the sense of UAX #31 (the Unicode annex that
defines this for programming languages), and is written in one canonical
spelling. Anything else is a compile error.


Hi Luca & list,

Reading this and seeing you talk about making it a compile time error, raises the question for me of how this will interact with variable variables which don't comply with the proposed rules - AFAICS those wouldn't be able to be a compile time error and they also wouldn't have been found in the scan of Packagist files. I imagine "on the fly" class creation, like when mocking code may also run into issues with this up to a point ?

Those are also the things which static analysis of code would not be able to find or flag (if this were left to static analysis).

Curious to hear your thoughts on this.

Smile,
Juliette

Reply via email to