Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:25125 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 59931 invoked by uid 1010); 2 Aug 2006 13:14:13 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 59912 invoked from network); 2 Aug 2006 13:14:13 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 2 Aug 2006 13:14:13 -0000 X-PHP-List-Original-Sender: jochem@iamjochem.com X-Host-Fingerprint: 194.109.193.121 mx1.moulin.nl Linux 2.5 (sometimes 2.4) (4) Received: from ([194.109.193.121:44551] helo=mx1.moulin.nl) by pb1.pair.com (ecelerity 2.1.1.3 r(11751M)) with ESMTP id F3/31-45114-425A0D44 for ; Wed, 02 Aug 2006 09:14:13 -0400 Received: from localhost (localhost [127.0.0.1]) by mx1.moulin.nl (Postfix) with ESMTP id C0536199AE2; Wed, 2 Aug 2006 15:14:14 +0200 (CEST) Received: from mx1.moulin.nl ([127.0.0.1]) by localhost (mx1.moulin.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 32506-01; Wed, 2 Aug 2006 15:14:10 +0200 (CEST) Received: from [192.168.1.106] (bspr.xs4all.nl [194.109.161.228]) by mx1.moulin.nl (Postfix) with ESMTP id B60D616177C; Wed, 2 Aug 2006 15:14:10 +0200 (CEST) Message-ID: <44D0A51D.2040701@iamjochem.com> Date: Wed, 02 Aug 2006 15:14:05 +0200 User-Agent: Thunderbird 1.5.0.5 (Windows/20060719) MIME-Version: 1.0 To: Zeev Suraski CC: Lukas Smith , internals@lists.php.net References: <18810497049.20060801234124@marcus-boerger.de> <1154478748.6599.16.camel@blobule> <16.85.45114.FF370D44@pb1.pair.com> <7.0.1.0.2.20060802153423.0d046278@zend.com> In-Reply-To: <7.0.1.0.2.20060802153423.0d046278@zend.com> X-Enigmail-Version: 0.94.0.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: amavisd-new at moulin.nl Subject: Re: [PHP-DEV] RfC: rethink OO inheritance strictness From: jochem@iamjochem.com (Jochem Maas) Zeev Suraski wrote: ... > > > My recommendation: > - Add a new flag to methods (at the implementation level) that will > allow to flag them as 'strict' > - In case such a strict method is improperly overridden - error out > (E_ERROR) > - In case a non-strict method is improperly overridden - emit E_STRICT > - Consider adding userland ability to set entire classes or methods as > strict > > Most people who use 'strict OO' will have E_STRICT enabled and have > their code E_STRICT clean, so providing userland support for tagging > classes/methods as strict is probably not really necessary. one thing occur to me (from a enduser's POV): E_STRICT is often used to denote usage that is depreciated and/or 'evil' with the implication (when it's not explicitly mentioned) that in future one will no longer be able to rely on the said usage. this makes, by implication, anything that produces an E_STRICT is 'second class' which I believe is not the implication that should be made here. E_STRICT has seemingly been abused regarding it's meaning and it seems to me that there is a need to differentiate between strictness and depreciation (E_DEPRECIATED? E_EVIL?). I personally don't want to write/use code that is depreciated [if I can help it] but mostly I don't give 2 hoots about strictness (for instance, I'm quite disciplined enough to write matching method signatures in relevant subclasses when that is needed; without php always forcing it upon me) kind regards, Jochem PS - very nice to see someone come with up with a definite suggestion that does take into account the voice of the [legion of?] php-nobodies who have concerns/issues regarding the 'strictness' stuff that's been creeping in lately. > > Zeev >