php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #69694 BC: cannot use array element directly when calling a method
Submitted: 2015-05-22 20:11 UTC Modified: 2015-05-22 20:20 UTC
From: anna at foolab dot ca Assigned:
Status: Not a bug Package: *General Issues
PHP Version: master-Git-2015-05-22 (Git) OS: Debian 3.2.65
Private report: No CVE-ID: None
 [2015-05-22 20:11 UTC] anna at foolab dot ca
Description:
------------
I found this issue when testing a Magento 1.9 application.

Using array elements to call a method on an object doesn't work in php7, but used to work in php5. I made a simplified example in the test script below.

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

class Item {
    public function save()
    {
        echo 'saved';
    }
}

$callback = [new Item(), 'save'];

// This works on both php5 and php7
$method = $callback[1];
$callback[0]->$method();

// This works on php5 only
$callback[0]->$callback[1]();

Expected result:
----------------
Expected "savedsaved" output.

Actual result:
--------------
saved
Notice: Array to string conversion in /var/www/test/array_function.php on line 15

Notice: Undefined property: Item::$Array in /var/www/test/array_function.php on line 15

Fatal error: Function name must be a string in /var/www/test/array_function.php on line 15

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-05-22 20:20 UTC] requinix@php.net
-Status: Open +Status: Not a bug
 [2015-05-22 20:20 UTC] requinix@php.net
This was an intentional change. See the Uniform Variable Syntax RFC for more.
https://wiki.php.net/rfc/uniform_variable_syntax

By the way, $callback() works in all versions.
http://3v4l.org/9bgXD
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 06:01:30 2024 UTC