Re: [RFC] "use global functions/consts" statement
| From: | Rowan Tommins | Date: | Mon, 27 Jan 2020 19:49:52 +0000 |
| Subject: | Re: [RFC] "use global functions/consts" statement | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-108278@lists.php.net to get a copy of this message | ||
On 27/01/2020 14:43, tyson andre wrote:
I'd rather have that done when the future change of defaults is being proposed. Supporting 'fallback' might cause confusion and extra work if the name resolution defaults ever change in a different way. At the point where they do change, we either do or don't want a way to support the old 'fallback', but we will want to support the new 'default'.I think we should aim for forwards-compatibility as well as backwards-compatibility, and that means being able to positively assert that the current behaviour should continue for as long as the engine supports it. If I add declare(function_and_const_lookup='default') at the top of my file, I don't get that guarantee, because the meaning of 'default' might change. Imagine this scenario: * PHP 8 introduces the declare with only 'global' and 'default' options allowed, as proposed. * PHP 9 makes 'default' a synonym for 'global', because it's now the default, and adds a new 'fallback' option * I have an application that uses the fallback mode I can either: * Rewrite every file in my application prior to upgrading, and add a declare for 'global' mode to work in PHP 8, even though it will be redundant on PHP 9 * Add a declare for 'fallback' mode, meaning my code works on PHP 9 without other changes, but can no longer compile on PHP 8 That doesn't mean we have to support both modes forever - we can make 'fallback' mode immediately error, which is still useful feedback for anyone who added it to their code. Explicitly selecting a default for some value is useful when any value would actually be acceptable, and you want to delegate the choice of value to someone else. That's how PASSWORD_DEFAULT works, for instance - it means "please select a sane algorithm based on the current state of the world". I don't think that applies here - any file will have been written with one set of rules in mind, so "use whichever namespace rules are currently recommended" doesn't really make sense as an option IMO. Regards, -- Rowan Tommins (né Collins) [IMSoP]