ID:               40880
 Updated by:       [EMAIL PROTECTED]
 Reported By:      prometheus__0 at hotmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Class/Object related
 Operating System: SUSE SLES 10
 PHP Version:      5CVS-2007-03-21 (snap)
 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

This is how it works... you can always open up an API through a new
extended interface, but not hide more.


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

[2007-03-21 09:38:19] prometheus__0 at hotmail dot com

Description:
------------
(1) It is not possible to make inherited functions more private, which
seems like a bug to me but
(2) it is possible to make inherited functions more public, which
shouldn't be possible, afaik.

The example code causes the fatal (1)
if you change
protected function __construct()
to
public function __construct()
from class b

and
public function __construct(){
to
protected function __construct(){
from class a
it works (2)

since i'm not an expert in oop i tried the same example in java and it
works the complete opposite way (the b functions can be more private but
not more public)
and in C++ it's the same
i know bug report http://bugs.php.net/bug.php?id=34237 but it considers
point (2)
point (1) is still a bug in my opinion

Reproduce code:
---------------
<?php
class a{
    public function __construct(){
        print("public construct\n");
    }
}

class b extends a{
    protected function __construct(){
        print("protected construct\n");
    }
    
    public static function getInstance(){
        return new b();
    }
}

$b = b::getInstance();
?>

Expected result:
----------------
protected construct

Actual result:
--------------
Fatal error:  Access level to b::__construct() must be public (as in
class a) in PHPDocument2 on line 16


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


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

Reply via email to