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

 ID:                 61025
 Comment by:         re...@php.net
 Reported by:        jpa...@php.net
 Summary:            __invoke() visibility not honored
 Status:             Open
 Type:               Bug
 Package:            Class/Object related
 Operating System:   *nix
 PHP Version:        5.3.10
 Block user comment: N
 Private report:     N

 New Comment:

Hi, I made a patch again 5.5. how about fix it in 5.5?


Previous Comments:
------------------------------------------------------------------------
[2012-07-30 02:22:11] willfi...@php.net

johannes - I can commit a fix for this, but at what point should it be 
introduced?

------------------------------------------------------------------------
[2012-02-10 22:34:44] johan...@php.net

Yes, the current behavior is wrong. I don't think it should be fixed in 5.3 
though as the fix might break existing code.

------------------------------------------------------------------------
[2012-02-09 09:17:23] jpa...@php.net

Description:
------------
__invoke() visibility is not honored when indirectly called as $obj().
It is, when directly called, via $obj->__invoke();

Please, note as well that declaring __invoke() as static works as well, I think 
it shouldn't (nonsense)

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

class Bar {
    private function __invoke() {
        return __CLASS__;
    }
}

$b = new Bar;
echo $b();

/* this works as expected : Fatal Error */
/* echo $b->__invoke(); */

Expected result:
----------------
Call to private method Bar::__invoke() from context ...

Actual result:
--------------
Bar


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



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

Reply via email to