Re: [PATCH] allowing multiple namespaces per file plus namespaces with brackets
| From: | Rasmus Lerdorf | 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
>>>
>>
>>
>