|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80299 ReflectionFunction->invokeArgs confused in arguments
Submitted: 2020-10-30 16:15 UTC Modified: 2020-10-30 16:21 UTC
From: roxblnfk at yandex dot com Assigned: nikic (profile)
Status: Closed Package: Reflection related
PHP Version: 8.0.0RC3 OS: php:8.0-rc-cli-alpine
Private report: No CVE-ID: None
 [2020-10-30 16:15 UTC] roxblnfk at yandex dot com
Something goes wrong after generating a warning in the ReflectionFunction->invokeArgs() method. A Fatal error is thrown right after the Warning.

Docker image php:8.0-rc-cli-alpine
PHP 8.0.0RC3 (cli) (built: Oct 29 2020 21:50:53) ( NTS )

Test script:

$bar = new DateTime();
$args = [1, &$bar];

$function = function (int &$foo, DateTimeInterface &$bar) {};

(new ReflectionFunction($function))->invokeArgs($args);

Expected result:
Warning: {closure}(): Argument #1 ($foo) must be passed by reference, value given in /app/test.php on line 9

Actual result:
Warning: {closure}(): Argument #1 ($foo) must be passed by reference, value given in /app/test.php on line 9

Fatal error: Uncaught TypeError: {closure}(): Argument #2 ($bar) must be of type DateTimeInterface, number given in /app/test.php:6
Stack trace:
#0 [internal function]: {closure}(1, Object(DateTime))
#1 /app/test.php(9): ReflectionFunction->invokeArgs(Array)
#2 {main}
  thrown in /app/test.php on line 6


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2020-10-30 16:17 UTC]
-Status: Open +Status: Verified
 [2020-10-30 16:21 UTC]
-Assigned To: +Assigned To: nikic
 [2020-10-30 16:24 UTC]
Automatic comment on behalf of
Log: FIxed bug #80299
 [2020-10-30 16:24 UTC]
-Status: Verified +Status: Closed
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue May 21 07:01:31 2024 UTC