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 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

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

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



Reply via email to