RE: [PHP-DEV] Simple Namespace Proposal
| From: | Dmitry Stogov | Date: | Mon, 23 Jul 2007 17:11:29 +0000 |
| Subject: | RE: [PHP-DEV] Simple Namespace Proposal | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-31214@lists.php.net to get a copy of this message | ||
Hi,
At first "import Zend::DB" is equivalent of "import Zend:DB as DB";
<?php
require 'Zend/Db/Connection.php';
import Zend::DB;
After these statement you can use any classes and functions from Zend::DB
namespace qualifying them by prefix "DB::".
$x = DB::Connection();
Thanks. Dmitry.
> -----Original Message-----
> From: Arpad Ray [mailto:arpad@rajeczy.com]
> Sent: Monday, July 23, 2007 8:37 PM
> To: dmitry@zend.com
> Cc: 'Hans Lellelid'; 'PHP internals'
> Subject: RE: [PHP-DEV] Simple Namespace Proposal
>
>
>
> Hi Dmitry,
>
> What made me think it's supported is that both the proposal
> and tests include namespace imports. Quoting from the proposal:
>
> > Namespace or class name can be imported:
> >
> > <?php
> > require 'Zend/Db/Connection.php';
> > import Zend::DB;
>
> And ns_002.phpt:
>
> > import test::ns1;
>
> So if not importing everything in the namespace, what exactly
> are these statements supposed to do?
>
> I'm also curious why the direct importing of classes would be
> the only exception (why not functions too?), is this an
> unavoidable inconsistency?
>
> Regards,
>
> Arpad
>
>
>
> On 7/23/2007, "Dmitry Stogov" <dmitry@zend.com> wrote:
>
> >Hi Arpad,
> >
> >You have to always use namespace name as prefix for acesing
> namespace
> >entities. (The only exception is direct import of calss).
> >So expectatins in your tests are wrong.
> >
> >Thanks. Dmitry.
> >
> >> -----Original Message-----
> >> From: Arpad Ray [mailto:arpad@rajeczy.com]
> >> Sent: Sunday, July 15, 2007 7:32 PM
> >> To: Dmitry Stogov
> >> Cc: 'Hans Lellelid'; 'PHP internals'
> >> Subject: Re: [PHP-DEV] Simple Namespace Proposal
> >>
> >>
> >> Dmitry Stogov wrote:
> >> > The patch is already committed to the HEAD.
> >> >
> >> > Dmitry.
> >> >
> >> There seem to be some problems with importing across
> files. The tests
> >> currently in CVS are all in single files so it's not immediately
> >> obvious. When a namespace is declared in one file and imported in
> >> another, classes must be addressed absolutely either in
> the import or
> >> when used, and functions must be addressed absolutely when used,
> >> irrespective of imports.
> >>
> >> I've attached some phpt files to test this, but here's a simple
> >> illustration:
> >>
> >> foo.php:
> >> <?php
> >> namespace foo;
> >> function foobar() { }
> >> class Foobaz { }
> >> ?>
> >>
> >> bar.php:
> >> <?php
> >> import foo;
> >> foobar(); // error
> >> new Foobaz; // error
> >> foo::foobar(); // ok
> >> new foo::Foobaz; // ok
> >>
> >> import foo::foobar;
> >> import foo::Foobaz;
> >> foobar(); // error
> >> new Foobaz; // ok
> >>
> >> import foo::foobar as foobar2;
> >> foobar2(); // error
> >> ?>
> >>
> >>
> >> Arpad
> >>
> >
>