On Dec 11, 2007 6:42 PM, David Coallier <[EMAIL PROTECTED]> wrote:
> On Dec 11, 2007 6:13 PM, Gregory Beaver <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > I've been furiously working behind the scenes with Stas and Dmitry, and
> > have some enhancements to namespaces in the form of 2 patches.
> >
> > 1) multiple namespaces per file
> > 2) use ::name;
> >
> > 1) multiple namespaces per file
> >
> > This is implemented as such:
> >
> > <?php
> > namespace one;
> > use Blah::A;
> > // code
> > namespace two;
> > use Foo::A;
> > ?>
> >
> > The example above shows that imported names are reset at each namespace
> > declaration.  There is no prohibition on this code:
> >
> > <?php
> > namespace one; {
> > use Blah::A;
> > // code
> > }
> > namespace two; {
> > use Foo::A;
> > // code
> > }
> > ?>
> >
>
> namespace name; {
> ...
> }
>  ??? You can already do that... it's just adding random { }
>
>
>
> > Users who wish to use brackets may do so.  The performance penalty
> > imposed by using brackets is minor for some cases, and for users who are
> > following the recommended practice of 1 namespace per file, the syntax
> > is ideal.
> >
> > Patch is:
> >
> > http://pear.php.net/~greg/namespace/PHP_5_3/multi.patch.txt
> > http://pear.php.net/~greg/namespace/PHP_6_0/multi.patch.txt
> >
> > Note that non-namespaced code cannot be present in a file containing
> > namespaces.  For users who are bundling, this will mean you will need to
> > create 2 files, one with non-namespaced code, and one with namespaced
> > code.  This minor prohibition is a design decision, not a technical
> > problem in the implementation.
> >
> > 2) use ::name
> >
> > This code:
> >
> > <?php
> > namespace Whatever;
> > use MDB2; // import PEAR's ::MDB2 from global scope
> > $a = MDB2::connect();
> > ?>
> >
> > is currently impossible, which will make namespacing old code harder.
> > The patch introduces this new syntax to import names from the global
> > namespace:
> >
> > <?php
> > use ::MDB2, ::strlen as len;
> > ?>
> >
> > http://pear.php.net/~greg/namespace/PHP_5_3/use.patch.txt
> > http://pear.php.net/~greg/namespace/PHP_6_0/use.patch.txt
> >
> > These patches are for review of both serious technical and serious
> > implementation issues.  In order to help move things along, I'd like to
> > define "serious" as something directly related to the implementation
> > that would cause a failure in PHP's ability to run scripts
> > deterministically, or some kind of memory leak/crash.
> >
> > commit is planned for the next 24 hours or so, but of course any issues
> > found in review can be fixed.  The patches are short, so in the worst
> > case, reverting is not difficult.
> >
> > Thanks,
> > Greg
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>
>
>
> --
> David Coallier,
> Founder & Software Architect,
> Agora Production (http://agoraproduction.com)
> 51.42.06.70.18
>

Wow even nested namespaces are implemented!!!

namespace name;
{
    {
        {
            class Test { }
        }
    }
}

.......

use name as superName;
var_dump(new superName::Test());

Come on...


-- 
David Coallier,
Founder & Software Architect,
Agora Production (http://agoraproduction.com)
51.42.06.70.18

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to