[PATCH] allowing multiple namespaces per file plus namespaces with brackets

From: Date: Mon, 20 Aug 2007 19:57:11 +0000
Subject: [PATCH] allowing multiple namespaces per file plus namespaces with brackets
Groups: php.internals 
Request: Send a blank email to internals+get-31744@lists.php.net to get a copy of this message
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

« previous php.internals (#31744) next »