ID: 34120
Updated by: [EMAIL PROTECTED]
Reported By: ondrej at sury dot org
-Status: Verified
+Status: Assigned
Bug Type: Scripting Engine problem
Operating System: *
PHP Version: 5CVS, 4CVS (2005-08-013)
-Assigned To:
+Assigned To: dmitry
New Comment:
Dmitry, this script should fail for all of those:
<?php
function doTitle($a = NULL, $b = NULL) {
print "doTitle: $a, $b\n";
}
function doHead() {
doTitle(func_num_args());
doTitle(func_get_arg(0));
doTitle(func_get_args());
}
doHead("1", "2");
Previous Comments:
------------------------------------------------------------------------
[2005-08-13 20:23:35] [EMAIL PROTECTED]
Manual says:
"Note: Because this function depends on the current scope to determine
parameter details, it cannot be used as a function parameter. If you
must pass this value, assign the results to a variable, and pass the
variable."
------------------------------------------------------------------------
[2005-08-13 14:38:51] [EMAIL PROTECTED]
Well, that's true then. But I'm not sure how important this bug is :)
------------------------------------------------------------------------
[2005-08-13 14:37:03] ondrej at sury dot org
Hi Derrick,
I don't consider to be bug, that it cannot be used as function
argument.
However I consider to be bug, that it CAN be used if you use it only
once.
This works:
doTitle(func_get_arg(0));
This works also:
doTitle(func_get_arg(1));
So it should not work at all, to be consistent.
Ondrej.
------------------------------------------------------------------------
[2005-08-13 13:58:46] ondrej at sury dot org
Description:
------------
func_get_arg() can be used as argument to function only once.
Reproduce code:
---------------
<?php
function doTitle($a = NULL, $b = NULL) {
print "doTitle: $a, $b\n";
}
function doHead() {
doTitle(func_get_arg(0));
doTitle(func_get_arg(1));
doTitle(func_get_arg(0), "3");
doTitle(func_get_arg(0), func_get_arg(1));
}
doHead("1", "2");
?>
Expected result:
----------------
doTitle: 1,
doTitle: 2,
doTitle: 1, 3
doTitle: 1, 2
Actual result:
--------------
doTitle: 1,
doTitle: 2,
doTitle: 1, 3
Fatal error: func_get_arg(): Can't be used as a function parameter in
/tmp/func_get_arg.php on line 11
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34120&edit=1