php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #71274 func_get_args() behaviour change in PHP 7
Submitted: 2016-01-04 13:58 UTC Modified: 2016-01-06 19:08 UTC
From: patrickallaert@php.net Assigned: tpunt (profile)
Status: Closed Package: Scripting Engine problem
PHP Version: 7.0.1 OS:
Private report: No CVE-ID: None
 [2016-01-04 13:58 UTC] patrickallaert@php.net
Description:
------------
func_get_args() (and probably the related functions) are context sensitive in PHP 7.0 while it was not the case in PHP 5.x.

If you change the content of one of your arguments and then call func_get_args(), the change you made is reflected in the results you get, even if those were scalars.

See the results at: https://3v4l.org/Ti8YX

Might be a doc issue if we consider that this behaviour is "normal" but it doesn't look documented and as per issue #30207, we previously emphasized that "func_get_args() returns the arguments *passed* to the function".

Test script:
---------------
<?php

function issueWithArgs($x) {
    $x = 33;
    return func_get_args();
}

var_dump(issueWithArgs(42));

Expected result:
----------------
array(1) {
  [0]=>
  int(42)
}

Actual result:
--------------
array(1) {
  [0]=>
  int(33)
}

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-01-04 19:38 UTC] requinix@php.net
-Status: Open +Status: Duplicate -Package: PHP Language Specification +Package: Scripting Engine problem
 [2016-01-04 19:38 UTC] requinix@php.net
The changes are intentional and the docs have already been updated (modified example and there's a note at the bottom). See also bug #71113.
https://github.com/php/php-src/blob/PHP-7.0.0/UPGRADING#L190
http://svn.php.net/viewvc/phpdoc/en/trunk/reference/funchand/functions/func-get-args.xml?r1=336598&r2=338280&pathrev=338280
 [2016-01-05 08:17 UTC] patrickallaert@php.net
Is the content of https://github.com/php/php-src/blob/PHP-7.0.0/UPGRADING visible somewhere on http://php.net/ ?

I digged http://php.net/manual/en/migration70.php and filed this bug because I couldn't find anything, did I miss something?
 [2016-01-05 09:02 UTC] requinix@php.net
-Status: Duplicate +Status: Re-Opened -Type: Bug +Type: Documentation Problem
 [2016-01-05 09:02 UTC] requinix@php.net
The migration docs are basically the online version of the UPGRADING guides. But I don't see any mention of func_get_args() in them either.
 [2016-01-06 18:47 UTC] tpunt@php.net
Automatic comment from SVN on behalf of tpunt
Revision: http://svn.php.net/viewvc/?view=revision&amp;revision=338409
Log: Resolve doc bug #71274
 [2016-01-06 19:08 UTC] tpunt@php.net
-Status: Re-Opened +Status: Closed -Assigned To: +Assigned To: tpunt
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Wed Dec 11 20:01:25 2019 UTC