Bug #61025 [Opn]: __invoke() visibility not honored

From: Date: Mon, 30 Jul 2012 02:22:11 +0000
Subject: Bug #61025 [Opn]: __invoke() visibility not honored
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-172327@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=61025&edit=1

 ID:                 61025
 Updated by:         willfitch@php.net
 Reported by:        jpauli@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:

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


Previous Comments:
------------------------------------------------------------------------
[2012-02-10 22:34:44] johannes@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] jpauli@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


Thread (9 messages)

« previous php.bugs (#172327) next »