Hi,

I want to thank you all for opting for the technically sound, clear and performant solution. Of course some users will never understand the precise reasons :: was avoided, but it's something we'll have to live with, given some past design choices in PHP.

Regarding "foo\tbar" turning into "foo[tab]bar", I just wanted to throw it out there, although I don't think it's a great idea. We have only few escape combinations in string literals which can also be in a valid identifier:

\t  \n  \r

There are also some which aren't a problem since they can't be in a valid identifier:

\x..  \0  \\  \$  \'  \"  \{..} etc.

So the problem is with exactly three combos: \t, \n and \r. In the few places PHP takes class/function identifiers as strings, TAB, CR and LF could be interpolated back into the two characters they express, since TAB, CR and LF aren't valid on their own in identifiers, so ambiguity is not possible.

Those places of the top of my mind are: new $class(), $class::property, call_user_*(), _autoload, and all other places accepting callbacks.

This would mean both of those will work correctly: "foo\\tbar" and "foo\tbar" when used as an identifier.

Think of it as a plan B in case people cause a big fuss about it (which I think they won't: think about escaping of windows file paths and escaping in regex pattern, we're doing just fine there).

Regards,
Stan Vassilev

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to