ID:               38992
 Comment by:       andrea at 3site dot it
 Reported By:      matthew at zend dot com
 Status:           Assigned
 Bug Type:         Feature/Change Request
 Operating System: Debian SID on i686
 PHP Version:      5.1.6
 Assigned To:      johannes
 New Comment:

I suppose this isn't a bug since PHP 5 inherits classes public static
methods too (and they call them ... feature ... ).

$r->invoke(new MyClass, array());

This should be expected bahaviour or there's something wrong on this
"bogus": http://bugs.php.net/bug.php?id=40886

If this bug will be solved, PHP developers should think about
*difference* between public static methods and instances methods, that
are two different things, expecially without overload possibility
changing arguments or using __call too, that in this case, isn't "so
magic", IMHO.


Previous Comments:
------------------------------------------------------------------------

[2006-09-29 13:15:51] matthew at zend dot com

Description:
------------
ReflectionMethod::invoke() and ReflectionMethod::invokeArgs()
implementations currently do not support the same functionality.

Currently, ReflectionMethod::invoke() can be called using a string
class name as the first argument *if* the method is declared static.
However, ReflectionMethod::invokeArgs(), called the same way, raises a
warning and does not invoke the method:

    Warning: ReflectionMethod::invokeArgs() expects parameter 1 to be
object, string given

Calling with a string class name is undocumented currently, but a
useful feature to have. I'd request that invokeArgs() be made to match
the current invoke() functionality, and the documentation updated to
indicate this usage.

Reproduce code:
---------------
<?php
class MyClass
{
    public static function doSomething()
    {
        echo "Did it!\n";
    }
}

$r = new ReflectionMethod('MyClass', 'doSomething');
$args = array();
$r->invoke('MyClass', array());
$r->invokeArgs('MyClass', $args);


Expected result:
----------------
Did it!
Did it!

Actual result:
--------------
Did it!

Warning: ReflectionMethod::invokeArgs() expects parameter 1 to be
object, string given in ... line 13


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


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

Reply via email to