Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:20265 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 29393 invoked by uid 1010); 23 Nov 2005 15:55:53 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 29378 invoked from network); 23 Nov 2005 15:55:53 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 Nov 2005 15:55:53 -0000 X-Host-Fingerprint: 194.109.193.120 unknown Linux 2.4/2.6 Received: from ([194.109.193.120:36430] helo=mx1.moulin.nl) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 09/D4-11378-90194834 for ; Wed, 23 Nov 2005 10:55:53 -0500 Received: from localhost (localhost [127.0.0.1]) by mx1.moulin.nl (Postfix) with ESMTP id C87C2187013; Wed, 23 Nov 2005 16:55:53 +0100 (CET) Received: from mx1.moulin.nl ([127.0.0.1]) by localhost (moulin [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19067-19; Wed, 23 Nov 2005 16:55:52 +0100 (CET) Received: from [192.168.1.16] (bspr.xs4all.nl [194.109.161.228]) by mx1.moulin.nl (Postfix) with ESMTP id 163D2186EEB; Wed, 23 Nov 2005 16:55:52 +0100 (CET) Message-ID: <43849103.60307@iamjochem.com> Date: Wed, 23 Nov 2005 16:55:47 +0100 User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Rasmus Lerdorf Cc: Matthias Pigulla , internals References: <00A2E2156BEE8446A81C8881AE117F192C1C4E@companyweb> <43838433.3080404@lerdorf.com> In-Reply-To: <43838433.3080404@lerdorf.com> X-Enigmail-Version: 0.89.5.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: amavisd-new at moulin.nl Subject: Re: AW: AW: [PHP-DEV] PDM Meeting Notes From: jochem@iamjochem.com (Jochem Maas) Note: this post contains a 'complaint' but its not aimed at any one in particular, especially not Rasmus as he doesn't give the impression of being much of an OO proponent at heart, and because he repeatly seems to err on the side of practicality and caution (as opposed to correctness for correctness-sake). Rasmus Lerdorf wrote: > Matthias Pigulla wrote: > ... >> >> The point is that interfaces are nothing you could anything with - that >> is, if you have "something" that implements an interface, it has already >> been constructed. You never construct instances through an interface >> (you would have to choose an implementation, the interface isn't one)... >> I just cannot explain it in a better way ;) It's somewhat similar to >> that you cannot make static calls on interfaces. > > > I don't see why you can't specify that a class definition must have a > constructor. Obviously the constructor is not for the interface itself. so I can only assume that the ability to declare ctor signatures have been left in because they do no harm regardless of whether it is 'correct'. so what was the harm in leaving in the ability to declare interface methods as protected (or even private)? ctor declarations in interfaces are just as wrong as protected method declarations (or static method declaration - although they seem to be allowed also - I can't remember if this was always allowed or whether this was reinstated at some point) according to the 'fundamental truth' regarding interfaces (they only make sense in a object context) that has been repeated here many times over. bottom line I am begging for consistency and easy of use: please reinstate the ability to be able to declare something like: interface ImCrazy { abstract static protected function __construct(CrazySettings $s, CrazyView $v); } and if not then I'd be much obliged if someone could point out why non-correct non-harmful ability has been added with regard to interfaces and another equally non-correct non-harmful ability has been removed. understanding why goes along way to acceptance - which boils down to public perception issues once again. rgds, Jochem ** ofcourse if something is technically impossible at the php/zend engine level or if its a very hard to implement edge case situation I can conceed that the break/change/whatever may well have to occur for the sake of practicality/maintainability at a deeper level. making such reasoning clear to lesser mortals is still highly recommended in order to mitigate unnecessary irritation on both sides of the field. > > -Rasmus >