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 <[EMAIL PROTECTED]> 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: > > <?php > $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: > > > > <?php > > 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. > > > > <?php > > 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. > > > > <?php > > 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: > > > > <?php > > 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