#18872 [Opn->Ver]: Improper handling of class constants used as default function argument values
| From: | iliaa@php.net | Date: | Fri, 18 Oct 2002 04:08:35 +0000 |
| Subject: | #18872 [Opn->Ver]: Improper handling of class constants used as default function argument values | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-22725@lists.php.net to get a copy of this message | ||
ID: 18872
Updated by: iliaa@php.net
Reported By: optikSmoke@subdimension.com
-Status: Open
+Status: Verified
Bug Type: Zend Engine 2 problem
Operating System: Mandrake 8.2 (linux 2.4.18)
PHP Version: 4CVS-2002-08-12
Previous Comments:
------------------------------------------------------------------------
[2002-08-12 23:27:03] optikSmoke@subdimension.com
I am using CVS from August 12, compiled with Zend2, as a
module in Apache 1.3.23. My problem is this: When I use a
class constant as the default value to an argument in a
function, the first time I call the function (omitting the
argument), PHP correctly uses the value of the constant
for the value of the omitted argument. The second time I
call the same function (again omitting the argument), PHP
uses a slightly-garbled form of the name of the class
constant, instead of the value of the constant. For
example:
<?
class FooBar {
const BIFF = 3;
}
function foo($biff = FooBar::BIFF) {
echo $biff . "\n";
}
foo();
foo();
?>
The expected output of this is (obviously):
3
3
The output I get is:
3
foobar :BIFF
(The space before ":BIFF" should be a non-printing
character, rendered as a box on my system, but I'm not
sure if it will come through properly :)
This error does not occur when using regular "define()'d"
constants. For example, if I replaced FooBar::BIFF with a
constant BIFF, I get the expected output (no garbled
constant names, "3" is displayed by each call to foo()).
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=18872&edit=1