Greg: You say that the old java-package-style definition still works, in addition to braces. I presume then that the following are equivalent:
<?php namespace foo; class Bar { ... } ?> <?php namespace foo { class Bar { ... } } ?> What happens if you mix them? <?php namespace baz; namespace foo { class Bar { ... } } ?> Is the full name of the class then foo::Bar, baz::Bar, or foo::baz::Bar? Would the compiler have a heart attack if someone did: <?php namespace foo { namespace baz { class Bar { ... } } } ?> instead of: <?php namespace foo::baz; class Bar { ... } ?> or: namepsace foo::baz { class Bar { ... } } I don't know anywhere near enough about the engine code to be able to read your patch below, so I'm just trying to understand all the various implications of this syntax. On Monday 20 August 2007, Gregory Beaver wrote: > Hi all, > > This patch is also available at > http://pear.php.net/~greg/namespace.patch.txt > > The patch adds the syntax "namespace { *stuff }" and allows multiple > namespaces per file with no performance penalty or added complexity as > only 4 lines of code need to be changed, and 9 lines of code added to > implement this support! > > Basically, there is one use case of multiple namespaces per file that > the patch is designed to support, which is the ability to cram many > files into a single file. I have done this for purposes of distributing > things (prior to phar), it is used by some with phing tasks for > performance reasons, and can have other uses as well. > > The patch provides the ability to do this, for example: > > <?php > namespace One { > require_once 'blah.php'; > class MyClass extends blah > { > function test() > { > echo "OK\n"; > } > } > function test() > { > echo "OK\n"; > } > } > > namespace Two { > class MyClass > { > function test() > { > echo "OK\n"; > } > } > function test() > { > echo "OK\n"; > } > } > ?> > > Note that the old format "namespace OneRingToRuleThemAll;" is still > fully supported, and should be the recommended format, as build tools > can easily take an entire file, change namespace .*; into namespace .*{ > and append <?php } ?> to the end of the file. > > The attached patch is against php6, but as you can see, a blind monkey > could port it to PHP_5_3 when the time comes. All of the introduced > changes are now tested, including the error message for nested namespace > declarations, and the error message for multiple namespace declarations > with ; (which was previously untested by .phpt tests) > > Thanks, > Greg -- Larry Garfield AIM: LOLG42 [EMAIL PROTECTED] ICQ: 6817012 "If nature has made any one thing less susceptible than all others of exclusive property, it is the action of the thinking power called an idea, which an individual may exclusively possess as long as he keeps it to himself; but the moment it is divulged, it forces itself into the possession of every one, and the receiver cannot dispossess himself of it." -- Thomas Jefferson -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php