Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:8131 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 93958 invoked by uid 1010); 25 Feb 2004 23:32:13 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 93865 invoked from network); 25 Feb 2004 23:32:12 -0000 Received: from unknown (HELO shiva.mind.de) (212.42.230.204) by pb1.pair.com with SMTP; 25 Feb 2004 23:32:12 -0000 Received: from [192.168.1.105] (p508EBE6F.dip.t-dialin.net [80.142.190.111]) by shiva.mind.de (Postfix) with ESMTP id B560597C66; Thu, 26 Feb 2004 00:31:55 +0100 (CET) Date: Thu, 26 Feb 2004 00:29:49 +0100 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <1571295527875.20040226002949@marcus-boerger.de> To: Timm Friebe Cc: internals@lists.php.net In-Reply-To: <1077749539.685.27.camel@localhost> References: <1077748616.685.16.camel@localhost> <1781292779406.20040225234401@marcus-boerger.de> <1077749539.685.27.camel@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Declaration of Bar::__construct() must be compatible with that of Foo::__construct() From: helly@php.net (Marcus Boerger) Hello Timm, well for normal methods we must do that. The derived class must support the same signature that the base class supports. In you example that would only work if the derived method would have a default parameter for the additional parameter: regards marcus Wednesday, February 25, 2004, 11:52:20 PM, you wrote: > 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? > 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 -- Best regards, Marcus mailto:helly@php.net