#20406 [Bgs]: defined() does not work properly within function or class
| From: | fredbird at contactoffice dot net | Date: | Wed, 13 Nov 2002 15:47:03 +0000 |
| Subject: | #20406 [Bgs]: defined() does not work properly within function or class | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-24813@lists.php.net to get a copy of this message | ||
ID: 20406
User updated by: fredbird@contactoffice.net
Reported By: fredbird@contactoffice.net
Status: Bogus
Bug Type: Variables related
Operating System: Windows XP
PHP Version: 4.2.0
New Comment:
oh, and EasyPHP is a all-in-one package for installing Apache, MySQL,
PHP and PHPMyAdmin on one windows computer.
Check http://www.easyphp.org/ for more info. It's free
;o)
Previous Comments:
------------------------------------------------------------------------
[2002-11-13 09:47:01] fredbird@contactoffice.net
oh, and EasyPHP is a all-in-one package for installing Apache, MySQL,
PHP and PHPMyAdmin on one windows computer.
Check http://www.easyphp.org/ for more info. It's free
;o)
------------------------------------------------------------------------
[2002-11-13 09:43:38] fredbird@contactoffice.net
About NAME and NOM : this is a translation problem only (NOM being the
french word for NAME). This piece of code is just an example to show
the bug : please read NAME and NOM as the same constant. I tested this
code and it print _really_ "value".
As for the name of an undefined constant being treated as the string
value of the name, i didn't knew about it.
It just makes me wonder more how are we supposed to check if a constant
is defined within a function or a class, and why we can't althought we
can access the value of this constant. I can't help but thinking that
this _is_ a bug.
------------------------------------------------------------------------
[2002-11-13 07:35:44] tix@php.net
Btw. your example is wrong, you check 'NOM' instead of 'NAME'.
Another thing in your script is "defined(NOM)". You should write
"define('NOM')".
And the last: you can't use "if (NAME)" for a replacement of "if
(defined('NAME'))". In this case NAME is evaluted to the string 'NAME'.
The condition is always TRUE :)
Think about it.
------------------------------------------------------------------------
[2002-11-13 07:32:26] cynic@php.net
first, read the code you gave us again. it can't produce the output you
claim
it does. it will output "NOM", and possibly an E_NOTICE. clearly, this
is
not a test case for your perceived problem.
second, i don't know what EasyPHP is, but maybe you should file a PR
with its
vendor?
------------------------------------------------------------------------
[2002-11-13 07:20:19] fredbird@contactoffice.net
I was not asking for support nor help. I know that i can replace "if
(defined(NAME))" by "if (NAME)", for example.
I may be wrong about the place where i reported this bug.
But i wonder how you can explain that this is a good behavior for
defined() : how can a constant have a value that you can have access to
and not be defined ?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/20406
--
Edit this bug report at http://bugs.php.net/?id=20406&edit=1