Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:20598 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 92176 invoked by uid 1010); 26 Nov 2005 22:25:13 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 92161 invoked from network); 26 Nov 2005 22:25:13 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 26 Nov 2005 22:25:13 -0000 X-Host-Fingerprint: 81.169.182.136 ajaxatwork.net Linux 2.4/2.6 Received: from ([81.169.182.136:52951] helo=strato.aixcept.de) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id AE/E2-56276-7C0E8834 for ; Sat, 26 Nov 2005 17:25:12 -0500 Received: from [192.168.1.3] (dslb-084-063-055-118.pools.arcor-ip.net [84.63.55.118]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by strato.aixcept.de (Postfix) with ESMTP id C8449610282; Sat, 26 Nov 2005 23:31:28 +0100 (CET) Date: Sat, 26 Nov 2005 23:23:14 +0100 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <1437906435.20051126232314@marcus-boerger.de> To: Matt Friedman Cc: internals@lists.php.net In-Reply-To: References: <20.BA.56276.A1BC8834@pb1.pair.com> <4388CE54.6060606@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Re: namespace separator ideas From: helly@php.net (Marcus Boerger) Hello Matt, bla! Saturday, November 26, 2005, 10:19:18 PM, you wrote: > Hi, I've been following your conversations all day and think I might > have a nice idea for the namespace separator idea. Sorry to barge in > on your conversation but I think the following has value. > What about something like <- or <:: or even just <: > It makes sense to me because a namespace is akin to a parent of the > class and in a diagram I would use an arrow to point to the parent > from the child. At least there is some type of parent <- child > relation. > examples: > Namespace <:: ClassName > or > Namespace <- ClassName > or > Namespace <: ClassName > Unless I'm missing something these symbols should not conflict with > other ones. They also have more a PHP "feel". > This is the most semantically pleasing for me and it mirrors a common > convention and represents the actual relationship. In the language it > is nice when the symbols have an appearance representative of the > actual relationship. > When I see \ I think of ugly Windoze file paths. Also ::: seems awkward somehow. > Matt. > On 11/26/05, Jessie Hernandez wrote: >> I personally don't like any of these, but I just thought of this one: >> "%%". Don't think it'll cause any problems at all, and look at the code: >> >> > $a = new name1%%name2; >> $b = name1::name2; // I see the difference clearly >> ?> >> >> >> What do you think? ":::" is more intuitive for me, but "%%" is an >> acceptable alternative... >> >> >> Regards, >> >> Jessie >> >> >> Greg Beaver wrote: >> > Hi all, >> > >> > I have only one caveat with the \ separator, which is that it is a >> > little bit too similar to division with /, and can result in some >> > confusing code like: >> > >> > > > namespace name1 { >> > class name2{} >> > } >> > define('name1', 1); >> > define('name2', 2); >> > >> > $a = new name1\name2; >> > $b = name1/name2; >> > ?> >> > >> > The same issue exists with all colon based separators (that sounds bad >> > when read the wrong way...) because of the ternary operator, and :: with >> > static classes/methods. >> > >> > > > namespace name1 { >> > class name2{} >> > } >> > define('name1', 1); >> > define('name2', 2); >> > // this may be a parse error with the current namespace patch, >> > // but need not be if we use -> >> > class name1 >> > { >> > const name2 = 1; >> > } >> > >> > $a = new name1:::name2; >> > $b = name1::name2; // do you see the difference? I get confused >> > ?> >> > >> > What about using the T_OBJECT_OPERATOR? This is a parse error in >> > existing versions, and also implies some separation. >> > >> > > > namespace name1 { >> > class name2{} >> > } >> > define('name1', 1); >> > define('name2', 2); >> > // this may be a parse error with the current namespace patch, >> > // but need not be if we use -> >> > class name1 >> > { >> > const name2 = 1; >> > } >> > >> > $a = new name1->name2; >> > $b = name1::name2; >> > ?> >> > >> > I also proposed on IRC using \\ as this is similar to netware driver >> > separators: >> > >> > > > define('name1', 1); >> > define('name2', 2); >> > >> > $a = new name1\\name2; >> > $b = name1/name2; >> > ?> >> > >> > However, I know Andrei hated this :). I very much prefer the use of ->, >> > as this has the same advantage as :: of "rhyming" with current syntax. >> > >> > Greg >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > -- > -- Matt Friedman > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php Best regards, Marcus