php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #38064 ignored constructor visibility
Submitted: 2006-07-11 11:56 UTC Modified: 2006-08-07 23:25 UTC
Votes:2
Avg. Score:4.0 ± 1.0
Reproduced:2 of 2 (100.0%)
Same Version:2 (100.0%)
Same OS:1 (50.0%)
From: instance at o2 dot pl Assigned: helly
Status: Closed Package: Class/Object related
PHP Version: 5.1.* OS: *
Private report: No CVE-ID:
 [2006-07-11 11:56 UTC] instance at o2 dot pl
Description:
------------
Private __construct() can be called form inherited class constructor via parent::__construct();

I'm not sure, this was not reported, but I didn't found any this kind.

Also in PHP version 5.2 this was occured (not by me).

Thx.

Reproduce code:
---------------
<?php

class A{

private function __construct(){}
}

class B extends A{

public function __construct(){
parent::__construct();
}
}

$instance=new B();

?> 

Expected result:
----------------
Fatal error: Call to private method A::__construct() from context 'B'

Actual result:
--------------
no error - everything is fine

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-07-17 19:43 UTC] mike@php.net
It shouldn't even be possible to override a private/protected ctor with a public one.

Can you please take a look at it Marcus?

 [2006-08-07 23:25 UTC] helly@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Wed Apr 16 10:02:09 2014 UTC