#37776 [Opn->Csd]: position of define() in source matters
| From: | colder@php.net | Date: | Thu, 15 Jun 2006 11:12:32 +0000 |
| Subject: | #37776 [Opn->Csd]: position of define() in source matters | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969373308@lists.php.net to get a copy of this message | ||
ID: 37776
Updated by: colder@php.net
Reported By: karibu at gmx dot net
-Status: Open
+Status: Closed
Bug Type: Documentation problem
Operating System: MacOS X, MorphOS
PHP Version: Irrelevant
Assigned To: colder
New Comment:
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
Moved from language/constants to define()'s manual page.
I hope it's alright now (:
Previous Comments:
------------------------------------------------------------------------
[2006-06-12 13:56:56] colder@php.net
I reopen this bug as a consequence of Sean's comment (thanks for it).
Will fix that ASAP.
------------------------------------------------------------------------
[2006-06-11 08:53:48] colder@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
I believe it can't hurt anybody.
http://patches.colder.ch/constants-1.43.patch?markup
------------------------------------------------------------------------
[2006-06-10 23:55:08] karibu at gmx dot net
same happens w/o the exit too.
anyway... of course I expect a different result in that case. It's very
confusing for (e.g.) c programmers where that works just fine:
int main(void)
{
printfoobar();
return 0;
}
#define FOO "bar"
void printfoobar()
{
printf(FOO);
}
So it should be documented IMHO... a small extra sentence in the
documentation doesn't hurt.. I think ;)
------------------------------------------------------------------------
[2006-06-10 23:27:16] brianlmoon@php.net
Would you expect this to work different somehow?
<?php
printfoobar();
exit;
$FOO = 'bar');
function printfoobar()
{
echo $GLOBALS["FOO"];
}
?>
I would not. Not only did you call the function before the define, but
you exit() before the define. There is no way that is getting defined.
------------------------------------------------------------------------
[2006-06-10 23:12:17] karibu at gmx dot net
Description:
------------
When I *call* a function which uses a define before this define is
actually defined in the source it appears in the function to be
undefined.
I didn't found this behavoir documented (not in the english or german
section) but it would probably very useful as it quickly can lead to
unexpected problems w/o instantly possible to detect why (in a script
of mine it caused busylooping f.ex.).
Reproduce code:
---------------
<?php
printfoobar();
exit;
define(FOO, 'bar');
function printfoobar()
{
echo FOO;
}
?>
Expected result:
----------------
bar
Actual result:
--------------
FOO
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=37776&edit=1