Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:13064 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 38049 invoked by uid 1010); 29 Sep 2004 09:44:36 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 37881 invoked by uid 1007); 29 Sep 2004 09:44:34 -0000 Message-ID: <20040929094434.37880.qmail@pb1.pair.com> To: internals@lists.php.net References: <20040928124540.618.qmail@pb1.pair.com> <20040928134447.62577.qmail@pb1.pair.com> <1724849455.20040928233204@marcus-boerger.de> Date: Wed, 29 Sep 2004 11:44:04 +0200 Lines: 46 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1437 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 X-Posted-By: 194.153.150.17 Subject: Re: [PHP-DEV] Re: declaring classes as static or final From: michael.virnstein@brodos.de ("Michael Virnstein") > > 2. final classes: > > final classes can't be extended > > already supported Cannot find it in the docs. http://www.php.net/manual/en/language.oop5.final.php doesn't seem to have any comments on that. I'm not at home at the moment, so i couldn't try, but are you really sure that final CLASSES are supported? You're not confusing it with final METHODS, right? > abstract static methods are already supported never said php doesn't support it, i just wanted to give some more input on the rules that would fit for my suggestions. > > 5. abstract classes can't be defined final > > already supported same as above > > static classes would be implementable at the cost of increasing compiler time. > To decide whether to think more about it we'd to know a case where you need > such syntax, what you win by having it and what you loose if you don't have > it. A good example for a static class imo, would be e.g. PEAR's DB Class. The DB-Class itself doesn't need to be instantiate, it simply works as factory and has some functions to check stuff. that'd be a class that i would define as "final static class DB {}". The class should not be extended and should not containt non static methods or attributes. Sure it isn't a big deal, if ppl are instantiating the DB Class, but it only has static methods and instantiating it wouldn't make any sense. Regards, Michael