In C++, STD was just a normal namespace with some classes and functions
in it, you didn't have to say "use std" unless you wanted to use
functions in the std namespace.
The "php::" namespace could just be a container for all of the functions
and classes that are currently thrown into the global namespace.
I think the name __php__ is too long and inconvenient to be used for a
namespace for all of the built in php functions. I would suggest "php::"
for built in php functions and "ext::<extension>::" for extension
defined functions.
On Fri, 2007-12-07 at 18:42 -0600, Larry Garfield wrote:
> On Friday 07 December 2007, Gregory Beaver wrote:
>
> > > If new, future core extensions showed up in a reserved PHP::
> > > namespace, you would be >:-).
> >
> > Exactly - which is why you should never put classes, functions or
> > constants in the __php__ namespace. The convention I am proposing is to
> > only use __php__ for code that *uses* re-usable components, not
> > *declares* them. In this case, your example would be revised as:
> >
> > <?php
> > namespace Mylib;
> > class Date {}
> > ?>
> >
> > <?php
> > namespace __php__;
> > use Mylib::Date;
> > include 'autoload.php'; // note - require_once and () just slow things down
> > $a = new Date();
> > ?>
> >
> > This convention serves two purposes
> >
> > 1) library code is always explicitly "use"d
> > 2) name conflicts are impossible
> >
> > The suggestion to make "namespace __php__;" implicit is very
> > interesting, but would defeat its purpose, which is to separate
> > declarations from use.
> >
> > Another off-list suggestion was to make "use" outside of a namespace
> > declaration an error, as this is generally a bad idea that can lead to
> > many "gotchas".
> >
> > Greg
>
> Doesn't strict C++ also have a requirement for a global namespace definition?
>
> It has been a very long time since I did any C++, but I seem to recall a
> requirement for a "use std" or something like that directive that I never
> actually understood. :-)
>
> If there is a "named global namespace" __php__, then requiring it in order to
> import anything makes sense. It's one extra line of code and doesn't break
> BC anymore than using the use keyword does.
>
> Another observation, if one takes the position that library code and "running
> code" should always be separated, this setup would encourage that "best
> practice" but does not absolutely require it. That fits with the "doing
> something dumb should be hard, but not impossible" philosophy. :-) That
> recommendation would definitely need to be well-documented.
>
> I overall like this concept. Kudos to Greg, as others have said. One
> question I would have is what is the performance hit of braces over a
> keyword? (Not a challenge; I genuinely don't know what the C implementation
> differences would be that would make a difference.)
>
> --
> Larry Garfield AIM: LOLG42
> [EMAIL PROTECTED] ICQ: 6817012
>
> "If nature has made any one thing less susceptible than all others of
> exclusive property, it is the action of the thinking power called an idea,
> which an individual may exclusively possess as long as he keeps it to
> himself; but the moment it is divulged, it forces itself into the possession
> of every one, and the receiver cannot dispossess himself of it." -- Thomas
> Jefferson
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php