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

From: Date: Tue, 21 Aug 2007 04:00:39 +0000
Subject: Re: [PATCH] allowing multiple namespaces per file plus namespaces with brackets
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-31759@lists.php.net to get a copy of this message
Sheez, guys, slow down a tad. Just because he says "no performance penalty" in the description, doesn't make it true. Unless I missed something in the patch, I don't see how I would resolve the symbols at compile-time now which means it has been moved to the executor and in doing so it implies a huge performance penalty. -Rasmus Jani Taskinen wrote: > This is the wrong way to do things around here. > If you want something in, just commit and ignore the noise on this list. > > --Jani > > david.coallier@nyphp.com kirjoitti: >> Thanks. someone please commit that as fast as posible so no one can >> say anything >> >> ;-) >> >> On 8/20/07, Gregory Beaver <greg@chiaraquartet.net> 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 >>> >> >> >

« previous php.internals (#31759) next »