hi guys,
I was mucking around and noticed the following:
define("404_SKIP", 1);
does not give an error and you can successfully get the value of the
constant by doing:
constant("404_SKIP");
where as doing:
echo 404_SKIP;
gives an error.
as I understand it, i.e. what the docs say, is that the following regexp
expresses valid starting chars for the name of a constant (the same
going for vars):
/^[a-zA-Z_\x7f-\xff]/
so pretty minor thing here but I expected to see the define()
throw a
(fatal?) error, rather than letting me go on.
kind regards,
Jochem
Hi Jochem,
you can get the valu of that constant with the constant()
function and use
such a constant with defined()
so forbidding this would at least be a BC
break.
btw. the same goes for reserved words so define('echo', 42); is valid too
but "echo echo;" doesn't work :-)
johannes
Jochem Maas wrote:
hi guys,
I was mucking around and noticed the following:
define("404_SKIP", 1);
does not give an error and you can successfully get the value of the
constant by doing:constant("404_SKIP");
where as doing:
echo 404_SKIP;
gives an error.
as I understand it, i.e. what the docs say, is that the following regexp
expresses valid starting chars for the name of a constant (the same
going for vars):/^[a-zA-Z_\x7f-\xff]/
so pretty minor thing here but I expected to see the
define()
throw a
(fatal?) error, rather than letting me go on.kind regards,
Jochem
There are plenty of such examples in many languages. As Johannes mentions,
some ppl might even be "abusing" it already :)
Anyway, I don't think adding necessary checks for such things, and slowing
define()
down (even if it's negligible) is warranted in such cases.
Andi
At 12:29 AM 1/5/2005 +0100, Johannes Schlueter wrote:
Hi Jochem,
you can get the valu of that constant with the
constant()
function and use
such a constant withdefined()
so forbidding this would at least be a BC
break.
btw. the same goes for reserved words so define('echo', 42); is valid too
but "echo echo;" doesn't work :-)johannes
Jochem Maas wrote:
hi guys,
I was mucking around and noticed the following:
define("404_SKIP", 1);
does not give an error and you can successfully get the value of the
constant by doing:constant("404_SKIP");
where as doing:
echo 404_SKIP;
gives an error.
as I understand it, i.e. what the docs say, is that the following regexp
expresses valid starting chars for the name of a constant (the same
going for vars):/^[a-zA-Z_\x7f-\xff]/
so pretty minor thing here but I expected to see the
define()
throw a
(fatal?) error, rather than letting me go on.kind regards,
Jochem