Greetings,
I have created a PR that will throw exceptions when using define()
with invalid types or when trying to redefine.
Trying to redefine a constant or define a bad constant would throw a
ValueError on the name parameter, trying to pass an unsupported type
would give a TypeError on the value parameter.
Normal promotions are fairly run of the mill, however for some utterly
bizarre reason the existing behaviour is to print a notice and not a
warning as with almost all other functions that are failing.
Is there a good reason not to promote these to exceptions?
https://github.com/php/php-src/pull/5265
--
Mark Randall
marandall@php.net
Greetings,
I have created a PR that will throw exceptions when using
define()
with invalid types or when trying to redefine.Trying to redefine a constant or define a bad constant would throw a
ValueError on the name parameter, trying to pass an unsupported type
would give a TypeError on the value parameter.Normal promotions are fairly run of the mill, however for some utterly
bizarre reason the existing behaviour is to print a notice and not a
warning as with almost all other functions that are failing.Is there a good reason not to promote these to exceptions?
https://github.com/php/php-src/pull/5265
--
Mark Randall
marandall@php.net--
I'm all for it, I wouldn't a lot of code to be affected by it as that code
would be truly broken.
Best regards
George P. Banyard
Greetings,
I have created a PR that will throw exceptions when using
define()
with invalid types or when trying to redefine.Trying to redefine a constant or define a bad constant would throw a
ValueError on the name parameter, trying to pass an unsupported type
would give a TypeError on the value parameter.Normal promotions are fairly run of the mill, however for some utterly
bizarre reason the existing behaviour is to print a notice and not a
warning as with almost all other functions that are failing.Is there a good reason not to promote these to exceptions?
This was previously discussed in the context of
https://wiki.php.net/rfc/constant_redefinition. Looking back at the thread,
it basically went "we should not break BC in a minor version, do it in PHP
8 instead".
Well, now we have PHP 8, so let's do it.
This is also the first step towards improving our optimization capabilities
in this area. It's not quite enough by itself (due to early binding related
issues), but it's a step in the right direction.
Regards,
Nikita