ID:               45334
 Updated by:       [EMAIL PROTECTED]
 Reported By:      kristianoye at gmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Class/Object related
 Operating System: Windows XP
 PHP Version:      5.2.6
 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

These rules are a central part of the object model, it was designed to
work that way and we don't want to change it.


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

[2008-06-23 09:02:45] kristianoye at gmail dot com

Description:
------------
This issue was brought up in Bug #42830 but the bug was closed as
'Bogus' but to me it seems to be a valid issue:

I am working on a small framework of my own and all objects share a
common ancestor (base object) that defines __construct as public.  I
cannot redefine the visibility of __construct in the base without
breaking other classes, yet I still want this derived, singleton to
share the relation.

Addendum: This seems to be the case with any method, actually, not
specific to __construct().  I tried defining a 'GetMessage()' method in
the same class structure.  

Reproduce code:
---------------
class BaseObject
{
   public function GetMessage()  {  return "foo1";  }
}

class RequestObject extends BaseObject
{
   public function GetMessage()  {  return "foo2";  }
}

class CurrentRequest extends RequestObject
{
   private function GetMessage()  {  return "top secret";  }
}

Expected result:
----------------
No errors for restricting visibility of methods in derived classes (I
can understand not letting you *increase* visibility of derived methods,
but not the other way around).

Actual result:
--------------
PHP Fatal error:  Access level to CurrentRequest::GetMessage() must be
public (as in class RequestObject) in
C:\kristian\workspace\guild\foo.php on line 15


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


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

Reply via email to