Edit report at https://bugs.php.net/bug.php?id=55247&edit=1

 ID:                 55247
 Updated by:         dmi...@php.net
 Reported by:        gehrig at teqneers dot de
 Summary:            Parser problem with static calls using string method
                     name
-Status:             Assigned
+Status:             Closed
 Type:               Feature/Change Request
 Package:            *General Issues
 Operating System:   Darwin 10.8.0
 PHP Version:        5.3.6
 Assigned To:        dmitry
 Block user comment: N
 Private report:     N

 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.

 For Windows:

http://windows.php.net/snapshots/
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------
[2011-07-27 04:46:58] pierr...@php.net

The following patch has been added/updated:

Patch Name: 55247.diff
Revision:   1311742018
URL:        
https://bugs.php.net/patch-display.php?bug=55247&patch=55247.diff&revision=1311742018

------------------------------------------------------------------------
[2011-07-22 18:53:20] fel...@php.net

It isn't supposed to work, so not a bug.

Changed to feature request.

------------------------------------------------------------------------
[2011-07-20 05:55:26] gehrig at teqneers dot de

Description:
------------
PHP allows to call instance methods using the {} syntax together with a string 
- 
such as $obj->{'my-method'} for example. This allows developers to call methods 
whose names are not valid PHP method names.

The same does not work with static method calls. 

Test script:
---------------
<?php
class Test{
    public static function __callStatic($method, $arguments)
        {
        echo $method . PHP_EOL;
    }
    public function __call($method, $arguments) 
        {
        echo $method . PHP_EOL;
    }
}

$method = 'method';

$test = new Test();

$test->method();
$test->$method();
$test->{'method'}();

Test::method();
Test::$method();
Test::{'method'}();


Expected result:
----------------
method
method
method
method
method
method

Actual result:
--------------
PHP Parse error:  syntax error, unexpected '{', expecting T_STRING or 
T_VARIABLE 
or '$' in Untitled.php on line 21


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=55247&edit=1

Reply via email to