Edit report at https://bugs.php.net/bug.php?id=61970&edit=1
ID: 61970
User updated by: postmaster at greg0ire dot fr
Reported by: postmaster at greg0ire dot fr
-Summary: Restraining __constructor() access level in subclass
gives a fatal error
+Summary: Restraining __construct() access level in subclass
gives a fatal error
Status: Open
Type: Bug
Package: Class/Object related
Operating System: Linux
PHP Version: 5.3.12
Block user comment: N
Private report: N
New Comment:
fixed the title
Previous Comments:
------------------------------------------------------------------------
[2012-05-07 18:40:56] postmaster at greg0ire dot fr
Description:
------------
Restraining the __construct() method un a subtype gives a Fatal error.
As stated in the following resources, the LSP should not apply here.
- https://bugs.php.net/bug.php?id=40880
-
http://stackoverflow.com/questions/5490824/should-constructors-comply-with-the-liskov-substitution-principle
-
http://ralphschindler.com/2012/03/09/php-constructor-best-practices-and-the-prototype-pattern
Test script:
---------------
<?php
class Foo {
public function __construct(){}
}
class Bar extends Foo {
protected function __construct(){}
}
Expected result:
----------------
No output at all.
Actual result:
--------------
> PHP Fatal error: Access level to Bar::__construct() must be public (as in
> class Foo) in /tmp/bug.php on line 9
> Fatal error: Access level to Bar::__construct() must be public (as in class
> Foo) in /tmp/bug.php on line 9
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=61970&edit=1