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
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: patrickallaert@php.net
New email:
PHP Version: OS:

 

 [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-2018 The PHP Group
All rights reserved.
Last updated: Mon Dec 17 03:01:26 2018 UTC