Re: Declaration of Bar::__construct() must be compatible with that of Foo::__construct()
| From: | Timm Friebe | Date: | Wed, 25 Feb 2004 22:52:20 +0000 |
| Subject: | Re: Declaration of Bar::__construct() must be compatible with that of Foo::__construct() | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-8130@lists.php.net to get a copy of this message | ||
On Wed, 2004-02-25 at 23:44, Marcus Boerger wrote:
> Hello Timm,
>
> i had the same expirience today too. And also for me it makes not much
> sense. The constructor shouldn't check inheritance rules.
Neither should other methods follow this. What if I want to add a
non-default parameter to an overriden method?
<?php
class Foo {
function connect($server) {
}
}
class Bar extends Foo {
function connect($server, $port) {
}
}
?>
I see where the problem comes from:
zend_do_perform_implementation_check() is called from
do_inherit_method_check() (both in zend_compile.c) which in turn is
called for inheritance *and* for interfaces. The behaviour is fully
desirable when implementing interfaces but not for regular inheritance.
- Timm