#33643 [Opn]: Fatal error: Only variables can be passed by reference
| From: | sniper@php.net | Date: | Mon, 11 Jul 2005 18:34:35 +0000 |
| Subject: | #33643 [Opn]: Fatal error: Only variables can be passed by reference | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969369070@lists.php.net to get a copy of this message | ||
ID: 33643
Updated by: sniper@php.net
Reported By: Jason at hybd dot net
Status: Open
-Bug Type: Scripting Engine problem
+Bug Type: Documentation problem
PHP Version: 5.1.0b2
New Comment:
Yes, it is undocumented. But same goes for PHP 4.4.0 too.
Reclassified. (this break was intentional and fixed a lot of references
related bugs)
Previous Comments:
------------------------------------------------------------------------
[2005-07-11 20:28:07] Jason at hybd dot net
Sorry, it's all fair and well making this bogus, but this change breaks
****LOADS**** of existing code, so it is not a bug and it's behavior is
NOT documented. The least you could have done is justify why this is
not a bug and why this change was introduced into the language!
This is really a PHP bug because thi has worked in all versions of PHP
prior to this. There has been nothing in the way of warning or anything
in recent releases to phase in this change in behaviour like there was
with the call by reference thing.
Do you expect many thousands of programmers to change their code
because if this stupid querk.
------------------------------------------------------------------------
[2005-07-11 17:32:30] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
.
------------------------------------------------------------------------
[2005-07-11 13:06:46] Jason at hybd dot net
Description:
------------
This bug is a rehash of 33516, but I can't reopen as I'm not the
original author.
It seems like you can not pass tempories to function / method
parameters.
<?php
class Foo {
public static function bar() {
return array('a' => '1234567890');
}
}
$tmp = Foo::bar();
$var = array_pop($tmp);
?>
Seems to work, but it shouldn't be down to the PHP user (imho) to
implement this as this change in PHP 5.1 breaks a lot of existing code.
Reproduce code:
---------------
<?php
class Foo {
public static function bar() {
return array('a' => '1234567890');
}
}
$var = array_pop(Foo::bar());
?>
Expected result:
----------------
$var = '1234567890';
Foo::bar() gets placed in temporary variable
Actual result:
--------------
Fatal error: Only variables can be passed by reference
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33643&edit=1