> 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.
Hi, I was thinking -> too.. Had ideas of namespaces being object instances in their own right.. namespace foo { const ACONST = '1'; class bar {} } echo $foo->bar; // some mangled internal class name (foo_bar_123 or something) to make it unique $a = new $foo->bar(); $ref = new ReflectionClass($foo->bar); Jared -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php