#35995 [Bgs->Opn]: Problems defining vars in arguments

From: Date: Fri, 13 Jan 2006 12:16:09 +0000
Subject: #35995 [Bgs->Opn]: Problems defining vars in arguments
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-91844@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 +Status: Open Bug Type: Scripting Engine problem Operating System: Windows XP PHP Version: 5.1.2 New Comment: I don't mean to be a pest, I understand you all have other things to tend to, but please acknowledge this bug. Tony wasn't looking at the right code. The TOP code is the bug, not the bottom, which is what he commented on. The TOP code WORKS in PHP 5.1.1 but not PHP 5.1.2. I'm 99.9% sure it also works in 4.4.1 but I'm not 100%; I don't have access to 4.4.1 now. Previous Comments: ------------------------------------------------------------------------ [2006-01-13 13:02:27] jadelucca at comcast dot net 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. ------------------------------------------------------------------------ [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 (#91844) next »