Bug #61025 [Com]: __invoke() visibility not honored
| From: | reeze@php.net | Date: | Wed, 06 Mar 2013 16:58:22 +0000 |
| Subject: | Bug #61025 [Com]: __invoke() visibility not honored | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-177624@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
Comment by: reeze@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:
Hi, I made a patch again 5.5. how about fix it in 5.5?
Previous Comments:
------------------------------------------------------------------------
[2012-07-30 02:22:11] willfitch@php.net
johannes - I can commit a fix for this, but at what point should it be introduced?
------------------------------------------------------------------------
[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