#35995 [Bgs]: Problems defining vars in arguments

From: Date: Fri, 13 Jan 2006 12:02:28 +0000
Subject: #35995 [Bgs]: Problems defining vars in arguments
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-91843@lists.php.net to get a copy of this message
ID: 35995 User updated by: jadelucca at comcast dot net Reported By: jadelucca at comcast dot net Status: Bogus Bug Type: Scripting Engine problem Operating System: Windows XP PHP Version: 5.1.2 New Comment: tony Thank you. I realize this now. BUT let's not give people the wrong impression, the bug still exists :) I shouldn't have even mentioned the 2nd part because it'll confuse people, confusing them with erroneous code and an example of the bug. Previous Comments: ------------------------------------------------------------------------ [2006-01-13 12:56:17] tony2001@php.net It's not possible to pass expressions by reference. $test = "default value" is an expression. This is expected behaviour. ------------------------------------------------------------------------ [2006-01-13 12:55:44] jadelucca at comcast dot net Under reproduce code, that SAME EXACT CODE WORKS on PHP 5.1.1! I just testing. The SECOND (Modification code) sends a parse error there too, so maybe the 2nd example can't be done. But the bug still lies within PHP 5.1.2! (For those who speed-read through this and perhaps misundestood me.) ------------------------------------------------------------------------ [2006-01-13 12:49:04] jadelucca at comcast dot net Description: ------------ You cannot define a variable in arguments in 5.1.2, but you could in previous versions. Reproduce code: --------------- AN EXAMPLE would be: <?php function prefix(&$text) { $text = "Prefix " . $text; } prefix($text = "Add prefix to this here, which would do that in older versions but not this one."); ?> Expected result: ---------------- After I run the code above, $text *should* be "Prefix Add prefix..." etc. This is how it worked in older versions of PHP. Actual result: -------------- $text is unmodified. It passes-by-value, not reference, despite the fact that I added the & in the argument list. *Modification example* If I swap the & sign from the function argument list to the actual function arguments, like so: <?php function prefix($text) { $text = "Prefix " . $text; } prefix(&$text = "Add prefix to this here, which would do that in older versions but not this one."); ?> I get Parse error: syntax error, unexpected '=', expecting ')' ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35995&edit=1

« previous php.bugs (#91843) next »